axmol/scripting/lua/cocos2dx_support/LuaScriptHandlerMgr.h

125 lines
3.5 KiB
C++

#ifndef __LUA_SCRIPT_HANDLER_MGR_H__
#define __LUA_SCRIPT_HANDLER_MGR_H__
extern "C" {
#include "tolua++.h"
}
#include "cocoa/CCObject.h"
#include "ccMacros.h"
#include "actions/CCActionInstant.h"
#include <vector>
#include <map>
NS_CC_BEGIN
class ScheduleHandlerDelegate;
typedef int EventType;
typedef int EventHandler;
typedef std::pair<EventType, EventHandler> PairEventHandler;
typedef std::vector<PairEventHandler> VecEventHandlers;
typedef std::map<void*,VecEventHandlers> MapObjectHandlers;
typedef std::vector<ScheduleHandlerDelegate*> VecShedule;
typedef std::map<cocos2d::Node*,VecShedule> MapNodeSchedules;
class ScheduleHandlerDelegate:public cocos2d::Object
{
public:
ScheduleHandlerDelegate():_isUpdateSchedule(false)
{}
virtual ~ScheduleHandlerDelegate()
{}
static ScheduleHandlerDelegate* create();
void scheduleFunc(float elapse);
virtual void update(float elapse);
void setUpdateSchedule(bool isUpdateSchedule){ _isUpdateSchedule = isUpdateSchedule; }
bool isUpdateSchedule(){ return _isUpdateSchedule; }
private:
bool _isUpdateSchedule;
};
class LuaCallFunc:public cocos2d::CallFuncN
{
public:
LuaCallFunc()
{}
virtual ~LuaCallFunc()
{}
static LuaCallFunc * create(int nHandler);
virtual void execute();
virtual LuaCallFunc* clone() const;
};
class ScriptHandlerMgr
{
public:
ScriptHandlerMgr(void);
virtual ~ScriptHandlerMgr(void);
static ScriptHandlerMgr* getInstance(void);
void addObjectHandler(void* object,int handler,int eventType);
void removeObjectHandler(void* object,int eventType);
int getObjectHandler(void* object,int eventType);
void removeObjectAllHandlers(void* object);
enum HandlerEventType
{
kNodeHandler = 0,
kMenuClickHandler,
kNotificationHandler,
kCallFuncHandler,
kScheduleHandler,
kTouchesHandler,
kKeypadHandler,
kAccelerometerHandler,
kControlTouchDownHandler,
kControlTouchDragInsideHandler,
kControlTouchDragOutsideHandler,
kControlTouchDragEnterHandler,
kControlTouchDragExitHandler,
kControlTouchUpInsideHandler,
kControlTouchUpOutsideHandler,
kControlTouchCancelHandler,
kControlValueChangedHandler,
};
private:
void init(void);
static ScriptHandlerMgr* _scriptHandlerMgr;
MapObjectHandlers _mapObjectHandlers;
};
NS_CC_END
TOLUA_API int tolua_Cocos2d_registerScriptHandler00(lua_State* tolua_S);
TOLUA_API int tolua_Cocos2d_unregisterScriptHandler00(lua_State* tolua_S);
TOLUA_API int tolua_Cocos2d_registerScriptTapHandler00(lua_State* tolua_S);
TOLUA_API int tolua_Cocos2d_unregisterScriptTapHandler00(lua_State* tolua_S);
TOLUA_API int tolua_Cocos2d_registerScriptTouchHandler00(lua_State* tolua_S);
TOLUA_API int tolua_Cocos2d_unregisterScriptTouchHandler00(lua_State* tolua_S);
TOLUA_API int tolua_Cocos2d_registerScriptKeypadHandler00(lua_State* tolua_S);
TOLUA_API int tolua_Cocos2d_unregisterScriptKeypadHandler00(lua_State* tolua_S);
TOLUA_API int tolua_Cocos2d_registerScriptAccelerateHandler00(lua_State* tolua_S);
TOLUA_API int tolua_Cocos2d_unregisterScriptAccelerateHandler00(lua_State* tolua_S);
TOLUA_API int tolua_Cocos2d_registerControlEventHandler00(lua_State* tolua_S);
TOLUA_API int tolua_Cocos2d_unregisterControlEventHandler00(lua_State* tolua_S);
TOLUA_API int tolua_script_handler_mgr_open(lua_State* tolua_S);
#endif //__LUA_SCRIPT_HANDLER_MGR_H__