void EventManager::UnRegisterGameEvent(Ref* target) { if(!P_VALID(target)) return; EventMapItor itor = mEventMap.begin(); EventMapItor iEnd = mEventMap.end(); for(; itor != iEnd; ++itor) { EventList& events = itor->second; EventListItor iList = events.begin(); for(; iList != events.end();) { EventData* data = (EventData*)(*iList); if(data->target == target) { //iList = events.erase(iList); data->target->release(); data->target = nullptr; ++iList; //SAFE_DEL(data); } else { ++iList; } } } }
void EventManager::HandleCmd(DWORD dwId, PROTOBUF_MESSAGE* cmd) { if(!P_VALID(cmd)) return; CmdMapItor itor = mCmdMap.find(dwId); if(itor == mCmdMap.end()) return; CmdList& cmds = itor->second; if(cmds.size() == 0) return; CmdListItor iList = cmds.begin(); CmdListItor iListEnd = cmds.end(); for(; iList != iListEnd; ++iList) { CmdData* data = (CmdData*)(*iList); if(!data->target) continue; (data->target->*(data->callback))(cmd); //CCLOG("HandleEvent %s\n", name.c_str()); } }
void EventManager::HandleEvent(string name, msgEvent* msg) { if(!P_VALID(msg)) return; DWORD dwId = UtilTool::Crc32((LPBYTE)name.data(), name.length()); if(!GT_VALID(dwId)) return; EventMapItor itor = mEventMap.find(dwId); if(itor == mEventMap.end()) return; EventList& events = itor->second; if(events.size() == 0) return; EventListItor iList = events.begin(); EventListItor iListEnd = events.end(); for(; iList != iListEnd; ++iList) { EventData* data = (EventData*)(*iList); if(!data->target) continue; (data->target->*(data->callback))(msg); //CCLOG("HandleEvent %s\n", name.c_str()); } }
void EventManager::UnRegisterCmdEvent(Ref* target) { if(!P_VALID(target)) return; CmdMapItor itor = mCmdMap.begin(); CmdMapItor iEnd = mCmdMap.end(); for(; itor != iEnd; ++itor) { CmdList& cmds = itor->second; CmdListItor iList = cmds.begin(); for(; iList != cmds.end();) { CmdData* data = (CmdData*)(*iList); if(data->target == target) { //iList = cmds.erase(iList); data->target->release(); data->target = nullptr; ++iList; //SAFE_DEL(data); } else { ++iList; } } } }
void NetManager::Update() { DWORD dwMsgSize = 0; LPBYTE pMsg = mpNetWork->Recv(dwMsgSize); while (dwMsgSize > 0 && P_VALID(pMsg)) { ParseCmd(pMsg); pMsg = mpNetWork->Recv(dwMsgSize); } }
bool FrameManager::CreateToScene(string name) { GameFrame* frame = CreateFrame(name); if(!P_VALID(frame)) { return false; } if(!frame->LoadUI()) { return false; } frame->RegisterEvent(); mCurScene->addChild(frame); DWORD dwId = Util::Crc32((LPBYTE)name.data(), name.length()); mFrames[dwId] = frame; frame->retain(); return true; }
void NetManager::ParseCmd(LPBYTE pMsg) { Json::Value root(Json::objectValue); Json::Reader jReader; jReader.parse((char*)pMsg , root); string name = root["cmd"].asString(); //test //name = "userFacade.getServers"; DWORD dwId = Util::Crc32((LPBYTE)name.data(), name.length()); if(!GT_VALID(dwId)) return; msgCmd* cmd = mMsgFactory.Create(dwId); if(!P_VALID(cmd)) return; cmd->Parse(root); EventManager::Shared()->HandleCmd(name, cmd); delete cmd; }
GameFrame* FrameManager::CreateFrame(string name) { DWORD dwId = Util::Crc32((LPBYTE)name.data(), name.length()); if(!GT_VALID(dwId)) return NULL; FrameCreateMapItor itor = mFrameCretateMap.find(dwId); if(itor == mFrameCretateMap.end()) { return NULL; } FrameCreateCallBack create = itor->second; GameFrame* node = create(); if(!P_VALID(node)) { return NULL; } return node; }
GameFrame* GameFrame::AddChildFrame(string className, string name) { DWORD dwId = GT_INVALID; if(name == "") dwId = UtilTool::Crc32((LPBYTE)className.data(), className.length()); else dwId = UtilTool::Crc32((LPBYTE)name.data(), name.length()); if(!GT_VALID(dwId)) return nullptr; FrameMapItor itor = mFrames.find(dwId); if(itor != mFrames.end()) return nullptr; GameFrame* frame = FrameManager::Shared()->CreateFrame(className); if(!P_VALID(frame)) { return nullptr; } if(!frame->LoadUI()) { return nullptr; } frame->RegisterEvent(); if(dwId == FrameManager::Shared()->GetMsgBoxID()) { //todo this->addChild(frame, 9999999); } else this->addChild(frame); mFrames[dwId] = frame; frame->retain(); return frame; }