Exemplo n.º 1
0
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;
            }
        }
    }
}
Exemplo n.º 2
0
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());
    }
    
}
Exemplo n.º 3
0
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());
    }
}
Exemplo n.º 4
0
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;
            }
        }
    }
}
Exemplo n.º 5
0
void NetManager::Update()
{
    DWORD dwMsgSize = 0;
    LPBYTE pMsg = mpNetWork->Recv(dwMsgSize);
    while (dwMsgSize > 0 && P_VALID(pMsg))
    {
        ParseCmd(pMsg);
        pMsg = mpNetWork->Recv(dwMsgSize);
    }
}
Exemplo n.º 6
0
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;
}
Exemplo n.º 7
0
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;
}
Exemplo n.º 8
0
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;
}
Exemplo n.º 9
0
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;
}