HsGame::HsGame() : HawkAppFrame(XID(HSO_MANAGER, HMI_APP)) { HawkAssert(g_Game == 0); g_Game = this; #include "ProtocolReg.inl" }
Bool HsGame::DispatchMsg(const XID& sXid, HawkMsg* pMsg) { if (sXid == XID(HSO_MANAGER, HMI_APP)) return OnMessage(*pMsg); return HawkAppFrame::DispatchMsg(sXid, pMsg); }
XID CApp::GetXidBySid(SID iSid) { AutoSpinLock(lock, m_pSidXidLock); SidXidMap::iterator it = m_mSidXid.find(iSid); if (it != m_mSidXid.end()) return it->second; return XID(0,0); }
Bool HsGame::PostProtocol(SID iSid, Protocol* pProto) { XID sXid; ProtoType iType = pProto->GetType(); if (iType == ProtocolId::LOGIN_GAME) { UString sName = ((LoginGame*)pProto)->m_sName; HawkStringUtil::Trim<UString>(sName); UInt32 iPlayerId = HawkStringUtil::HashString<UString>(sName); SafeObj user_obj(XID(HSO_PLAYER, iPlayerId)); if(!user_obj.IsObjValid()) CreateObj(XID(HSO_PLAYER, iPlayerId)); sXid = XID(HSO_PLAYER, iPlayerId); } else { sXid = GetXidBySid(iSid); } return HawkAppFrame::PostProtocol(sXid, iSid, pProto); }
Bool HsPlayer::OnInnerTick() { //删除定时器 if (m_sDelTimer.IncCounter(HS_OBJ_TICK_PERIOD)) { m_sDelTimer.Reset(); m_sDelTimer.SetPause(true); //通知APP删除自己 HawkMsg* pMsg = P_MsgManager->GetMsg(HSM_DELOBJ); if (pMsg) { pMsg->Params.Push<XID>(m_sXid); g_Game->PostMsg(XID(HSO_MANAGER, HMI_APP), pMsg); } } return true; }
CApp_TickTask(const XID& sXid = XID(0,0)) : m_sXid(sXid) { };
CApp_MsgTask(const XID& sXid = XID(0,0), CMsg* pMsg = 0) : m_sXid(sXid), m_pMsg(pMsg) { };
CApp_ProtoTask(const XID& sXid = XID(0,0), SID iSid = 0, Protocol* pProto = 0) : m_sXid(sXid), m_iSid(iSid), m_pProto(pProto) { };