iw4x-client/src/Components/Modules/UIScript.hpp

46 lines
1.0 KiB
C++
Raw Normal View History

2015-12-28 08:08:46 -05:00
namespace Components
{
class UIScript : public Component
{
public:
UIScript();
2016-08-15 10:40:30 -04:00
~UIScript();
#ifdef DEBUG
2015-12-28 08:08:46 -05:00
const char* GetName() { return "UIScript"; };
2016-08-15 10:40:30 -04:00
#endif
2015-12-28 08:08:46 -05:00
class Token
{
public:
Token(const char** args) : token(0) { this->Parse(args); };
Token(const Token &obj) { this->token = obj.token; };
template<typename T> T Get();
bool IsValid();
private:
char* token;
void Parse(const char** args);
};
typedef void(Callback)(Token token);
typedef void(CallbackRaw)();
2015-12-28 08:08:46 -05:00
static void Add(std::string name, Callback* callback);
static void Add(std::string name, CallbackRaw* callback);
2015-12-28 08:08:46 -05:00
static void AddOwnerDraw(int ownerdraw, CallbackRaw* callback);
2015-12-28 08:08:46 -05:00
2016-01-03 19:30:15 -05:00
private:
static void OwnerDrawHandleKeyStub(int ownerDraw, int flags, float *special, int key);
2015-12-28 08:08:46 -05:00
static bool RunMenuScript(const char* name, const char** args);
static void RunMenuScriptStub();
static std::map<std::string, wink::slot<Callback>> UIScripts;
static std::map<int, wink::slot<CallbackRaw>> UIOwnerDraws;
2015-12-28 08:08:46 -05:00
};
}