#pragma once #include "cocos2d.h" #include "PlatformHeader.h" #include "SocketMission.h" enum Type_LinkAction { Type_Link_NULL, Type_Link_Create, Type_Link_Join, Type_Link_Auto, Type_Link_Del, }; class IPrivateMissionSink { public: virtual ~IPrivateMissionSink(){} virtual void StartGameScene(CGameServerItem* pServer) = 0; virtual void CreateAutoRoomInfoResulte(CMD_GR_AutoResulte* pAutoResulte) = 0; }; class PrivateMission : public CSocketMission { public: PrivateMission(); void setMissionSink(IPrivateMissionSink* pSink); //网络回调接口重载 public: //网络连接 virtual void onEventTCPSocketLink(); //网络关闭 virtual void onEventTCPSocketShut(); //网络错误 virtual void onEventTCPSocketError(int errorCode); //网络消息读取 virtual bool onEventTCPSocketRead(int main, int sub, void* data, int dataSize); //网络心跳包 virtual bool onEventTCPHeartTick(); //网络接口 public: //发送函数 virtual bool SendSocketData(uint16 wMainCmdID, uint16 wSubCmdID); //发送函数 virtual bool SendSocketData(uint16 wMainCmdID, uint16 wSubCmdID, void * data, uint16 dataSize); //网络消处处理 public: ////////////////////////////////////////////////////////////////////////// //登录消息 bool OnSocketMainLogon(int sub, void* data, int dataSize); ////////////////////////////////////////////////////////////////////////// //用户信息 bool OnSocketMainUser(int sub, void* data, int dataSize); ////////////////////////////////////////////////////////////////////////// //系统主消息 bool OnSocketMainSystem(int sub, void* data, int dataSize); //系统子消息 bool OnSocketSubSystemMessage(void* data, int dataSize); ////////////////////////////////////////////////////////////////////////// //私人场主消息 bool OnSocketMainPrivate(int sub, void* data, int dataSize); //私人场信息 bool OnSocketSubPrivateInfo(void* data, int dataSize); //私人场创建成功 bool OnSocketSubPrivateCreateSuceess(void* data, int dataSize); //私人场房间信息 bool OnSocketSubPrivateRoomInfo(void* data, int dataSize); //创建代开信息结果 bool OnSocketSubCreateAutoResulte(void* data, int dataSize); //删除代开信息完成 bool OnSocketSubDelAutoResulte(void* data, int dataSize); //自由人数开始状态; bool OnSocketSubAutoUserReady(void* data, int dataSize); //网络命令 public: //发送登录 virtual bool SendLogonPacket(); //辅助函数 public: //进入游戏场景 void EnterGameScene(); //设置创建私人场房间信息 void SetCreateInfo(CMD_GR_Create_Private* pInfo); //设置创建代开房间信息 void SetCreateAutoInfo(CMD_GR_AutoRoomInfo* pInfo); //设置删除代开房间信息 void SetDelAutoInfo(CMD_GP_DelAutoRoomInfo* pInfo); //设置加入私人场房间信息 void SetJoinInfo(uint32 dwJoinRoomNum); //连接服务器 //void ConnectServerByKind(uint16 wDataID); //连接服务器 void ConnectServerByServerID(uint16 wServerID); //连接服务器 void ConnectServer(CGameServerItem* pServerItem, bool bServerID=false); private: Type_LinkAction m_eLinkAction; uint32 m_dwMeUserID; uint16 m_wMeTableID; //桌子ID uint16 m_wMeChairID; //椅子ID uint16 m_wGameKindID; //游戏类型 uint32 m_dwJoinRoomNum; //要加入的房间号 CMD_GR_Create_Private m_kCreatePrivateNet; CMD_GR_AutoRoomInfo m_kAutoRoomInfo; CMD_GP_DelAutoRoomInfo m_kDelAutoRoomInfo; CGameServerItem* m_pGameServerItem; IPrivateMissionSink* m_pPrivateMissionSink; // 回调 };