#ifndef STKEYHOOK_H
#define STKEYHOOK_H

void gzKeyHookCallback(void *);
class gzKeyHookBase : public nc_ScriptImpClass {
public:
	void Detach(nc_ScriptableGameObj *obj);
	void Destroyed(nc_ScriptableGameObj *obj);
	void AddHook(const char *Key, nc_ScriptableGameObj *obj);
	void RemoveHook();
	virtual void Triggered() = 0;
	gzKeyHookStruct *m_keyData;
	int m_hookID;
	int m_isSet;
};

class gzKeyHook_ProcCmd : public gzKeyHookBase {
	void Created(nc_ScriptableGameObj *obj);
	void Triggered();
	int m_lastPress;
};

class gzKeyHook_WriteLog : public gzKeyHookBase {
	void Created(nc_ScriptableGameObj *obj);
	void Triggered();
	int m_lastPress;
};

class gzKeyHook_NumpadToggle : public gzKeyHookBase {
	void Created(nc_ScriptableGameObj *obj);
	void Triggered();
	int m_lastPress;
};

class gzKeyHook_Numpad : public gzKeyHookBase {
	void Created(nc_ScriptableGameObj *obj);
	void Triggered();
	int m_lastPress;
};

#endif
