Files
wnmj-normal/Classes/GameFrame/GameFrameBase.h

306 lines
9.2 KiB
C
Raw Normal View History

2026-03-03 13:56:44 +08:00
#pragma once
#include "cocos2d.h"
#include "ui/CocosGUI.h"
#include "GamePlayer.h"
#include "IndividualMission.h"
#include "GameMission.h"
#include "ChatScene.h"
#include "types.h"
#include "YvVoiceManager.hpp"
#include "YVTool.h"
#include "SystemNotice.h"
#include "SelectShareScene.h"
using namespace YVSDK;
#define addNetCBDefine(iSubCommand,pScence,pCallBack) \
addNetCB(iSubCommand,pScence,CC_CALLBACK_2(pCallBack,pScence),#pCallBack)
USING_NS_CC;
//<2F>Ա<EFBFBD>ö<EFBFBD><C3B6>
enum enSex { enNull, enMan, enWoman };
#define Max_Zorder 100
// localZOrder <20>
enum ZOrder
{
ZO_DEFAULT = 0, // Ĭ<><C4AC>
ZO_CARDMANAGER, // <20><EFBFBD><E9BDAB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ZO_UPDOWN, // <20><><EFBFBD>·<EFBFBD>
ZO_ANI, // <20><><EFBFBD><EFBFBD>
ZO_TRUSTEE, // <20>й<EFBFBD>
ZO_END, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ZO_PRIVATE, // ˽<>˳<EFBFBD><CBB3><EFBFBD><EFBFBD><EFBFBD>
};
//////////////////////////////////////////////////////////////////////////
// <20><><EFBFBD><EFBFBD><EFBFBD>ṹ;
struct tagCloudVoice
{
uint32 dwUserID;
std::string strFileID;
tagCloudVoice()
{
dwUserID = 0;
strFileID = "";
}
tagCloudVoice(const tagCloudVoice& c)
{
dwUserID = c.dwUserID;
strFileID = c.strFileID;
}
void StreamValue(DataStream& kData, bool bSend)
{
Stream_VALUE(dwUserID);
Stream_VALUE(strFileID);
}
};
//////////////////////////////////////////////////////////////////////////
class GameFrameBase
:public Scene
,public IClientKernelSink
,public IIndividualMissionSink
, public YVSDK::YVListern::YVUpLoadFileListern
{
public:
struct NET_CBInfo
{
NET_CBInfo():pSrc1(NULL)
{
}
int32 iIdex;
cocos2d::Ref* pSrc1;
std::string kCallFunName;
std::function<void(void*,int)> pCallBack;
};
typedef std::vector<NET_CBInfo> NET_CBInfoList;
public:
GameFrameBase();
~GameFrameBase();
virtual bool init(); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>
virtual void onEnterTransitionDidFinish(); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɻص<C9BB>
virtual void onExit(); // <20><><EFBFBD><EFBFBD><EFBFBD>˳<EFBFBD><CBB3>ص<EFBFBD>
virtual void ExitGame();
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϸ<EFBFBD>¼<EFBFBD>
void onEventContinueGame(EventCustom* event);
void onEventUserChat(EventCustom* event);
void onEventUserFace(EventCustom* event);
//<2F>˳<EFBFBD><CBB3><EFBFBD>ť
void onClickExitGameButton(cocos2d::Ref*);
// <20><>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>
void onButtonWeiXinImagic(Ref*);
// <20><>ʱ<EFBFBD><CAB1>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD>ӳ<EFBFBD>
void onGetNetWorkTime(float delta);
//<2F><><EFBFBD>ƽӿ<C6BD>
public:
//<2F><><EFBFBD><EFBFBD>
virtual void clearInfo();
//<2F>ر<EFBFBD><D8B1><EFBFBD>Ϸ
virtual void CloseGameClient();
//<2F><>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD>
virtual void ReconnectServer();
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><CBB5><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѵ<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҽ<EFBFBD><D2BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¿ͻ<C2BF><CDBB><EFBFBD><EFBFBD>ղ<EFBFBD><D5B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬<D7B4><CCAC>Ϣδ<CFA2>ܸ<EFBFBD><DCB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ)
virtual void ResetTable() = 0;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ)
virtual void ResetAllData() = 0;
//<2F><>ͼ<EFBFBD><CDBC><EFBFBD>Ӻ<EFBFBD>
virtual WORD SwitchViewChairID(WORD wChairID)=0;
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>·<EFBFBD><C2B7>;
virtual const std::string getShortChatSoundPath(uint8 cbGender, int nIndex);
//<2F><>Ϸ<EFBFBD>¼<EFBFBD>
public:
//<2F>Թ<EFBFBD><D4B9><EFBFBD>Ϣ
virtual bool OnEventLookonMode(void* data, int dataSize);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
virtual bool OnEventSceneMessage(uint8 cbGameStatus, bool bLookonUser, void* data, int dataSize);
//<2F><>Ϸ<EFBFBD><CFB7>Ϣ
virtual bool OnEventGameMessage(int sub, void* data, int dataSize);
//<2F><><EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD>
bool SendSocketData(uint16 wSubCmdID);
//<2F><><EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD>
bool SendSocketData(uint16 wSubCmdID, void * data, uint16 dataSize);
//<2F><><EFBFBD><EFBFBD>׼<EFBFBD><D7BC><EFBFBD><EFBFBD>Ϣ
bool SendUserReady();
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
void addNetCB(int iIdex,cocos2d::Ref* pScence,std::function<void(void*,int)> pCallBack,std::string kCallName);
//<2F>û<EFBFBD><C3BB>¼<EFBFBD>
public:
//<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>
virtual void OnEventUserEnter(IClientUserItem * pIClientUserItem, bool bLookonUser);
//<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>
virtual void OnEventUserEnter(GamePlayer * pPlayer){};
//<2F>û<EFBFBD><C3BB>
virtual void OnEventUserLeave(IClientUserItem * pIClientUserItem, bool bLookonUser);
//<2F>û<EFBFBD><C3BB>뿪;
virtual void OnEventUserLeave(GamePlayer * pPlayer){};
//<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>
virtual void OnEventUserScore(IClientUserItem * pIClientUserItem, bool bLookonUser);
//<2F>û<EFBFBD>״̬
virtual void OnEventUserStatus(IClientUserItem * pIClientUserItem, bool bLookonUser);
//<2F>û<EFBFBD>״̬
virtual void OnEventUserStatus(GamePlayer * pPlayer){};
//<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>
virtual void OnEventUserAttrib(IClientUserItem * pIClientUserItem, bool bLookonUser);
//<2F>û<EFBFBD>ͷ<EFBFBD><CDB7>
virtual void OnEventCustomFace(IClientUserItem * pIClientUserItem, bool bLookonUser);
//<2F>û<EFBFBD>ͷ<EFBFBD><CDB7>HTTP
virtual void onGPAccountInfoHttpIP(uint32 dwUserID, std::string strIP,std::string strHttp);
//<2F>û<EFBFBD>λ<EFBFBD><CEBB>
virtual void onEventUserLocation(IClientUserItem * pIClientUserItem, CMD_GF_S_UserLocation* pLocation);
//˽<>˷<EFBFBD>
public:
virtual void OnSocketSubPrivateRoomInfo(CMD_GF_Private_Room_Info* pNetInfo)=0;
virtual void OnSocketSubPrivateEnd(void* data, int dataSize) = 0;
virtual void OnSocketSubPrivateDismissInfo(CMD_GF_Private_Dismiss_Info* pNetInfo) = 0;
virtual void OnSocketSubPrivateDismissResult(CMD_GF_Private_Dismiss_Result* pNetInfo) = 0;
virtual void OnSocketSubPrivateScoreInfo(CMD_GF_Private_Score_Info* pNetInfo);
virtual void onEventDismissRoom(cocos2d::EventCustom *event); // <20><>ɢ<EFBFBD><C9A2><EFBFBD><EFBFBD>
virtual void onEventAgreeDismissRoom(bool bAgree = true); // ͬ<><CDAC><EFBFBD><EFBFBD>ɢ<EFBFBD><C9A2><EFBFBD><EFBFBD>
virtual void EventLeaveGame(cocos2d::EventCustom *event); // <20><EFBFBD><EBBFAA>Ϸ<EFBFBD>¼<EFBFBD>
virtual void PrivateRoomEnd(); // ˽<>˳<EFBFBD><CBB3><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ر<EFBFBD><D8B1><EFBFBD><EFBFBD><EFBFBD>);
virtual void onEventAutoUserReady(cocos2d::EventCustom *event); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>׼<EFBFBD><D7BC>
public:
virtual bool OnSocketSubUserChat(void* data, int dataSize); //<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>
virtual bool OnSocketSubUserFace(void* data, int dataSize); //<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>
virtual bool RevTalkFile(void* data,int dataSize); //<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>
virtual bool ShowUserFace(CMD_GF_S_UserExpression* pUserFace); //<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>
virtual Animation* LoadFaceAnimations(uint16 wItemIndex);
virtual void showVoiceTip();
virtual void hideVoiceTip(const char *filePath);
virtual void SetSystemNode(ImageView* img); //<2F><><EFBFBD>ù<EFBFBD><C3B9><EFBFBD><EFBFBD>ؼ<EFBFBD>
virtual bool OnSocketSubGameSystemMessage(void* data, int dataSize); //ϵͳ<CFB5><CDB3>Ϣ
virtual void ShowRollMessage(const std::string& message, int repeat = 0, bool bForever = false);
bool OnSocketSubNetWorkTime(void* data, int dataSize);
protected:
GamePlayer* getPoolPlayer(IClientUserItem * pIClientUserItem);
virtual GamePlayer* CreatePlayer(IClientUserItem * pIClientUserItem);
virtual void DeletePlayer(GamePlayer* pPlayer);
public:
virtual void upSelfPlayerInfo() = 0;
virtual void OnUserScore(GamePlayer* pPlayer) = 0; // <20><><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>
virtual Vec2 GetPlayerPosByUserID(uint32 wUserID) = 0;
public:
GamePlayer* getGamePlayerByUserItem(IClientUserItem * pIClientUserItem);
GamePlayer* getPlayerByChairID( uint16 wChairID );
GamePlayer* getPlayerByUserID( uint32 wUserID );
void addGamePlayerToList(GamePlayer* pPlayer);
void removeGamePlayerToList(GamePlayer* pPlayer);
GamePlayer* getSelfGamePlayer();
uint16 getSelfChairID();
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
void hideAllPlayerVoiceBubble();
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ;
IClientUserItem * GetMeUserItem();
//<2F><>ȡͬ<C8A1><CDAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
IClientUserItem * GetTableUserItem(uint16 wChariID);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӷ<EFBFBD><D3B7><EFBFBD><EFBFBD><EFBFBD>;
void SetServerItem(CGameServerItem* pServerItem);
//<2F><><EFBFBD>ض<EFBFBD><D8B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
void loadShortChat(const std::string& strFilePath);
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>;
const std::vector<std::string>& getShortChatList();
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
std::string getShortChatInfoByIndex(int nIndex);
//¼<><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
public:
bool SetGameRecord(DataStream &kDataStream); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϸ¼<CFB7><C2BC><EFBFBD><EFBFBD>Դ;
void SetMainGameID(DWORD dwGameID, bool isGameRecord); // <20><><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD>ӽ<EFBFBD>;
void uiMenuInit(); // <20>˵<EFBFBD><CBB5><EFBFBD>ʼ<EFBFBD><CABC>;
bool StartRecord(WORD wGamePlayer); // <20><><EFBFBD><EFBFBD>¼<EFBFBD><C2BC>;
void LeftRecordAction(Ref* ref); // <20><>;
void RightRecordAction(Ref* ref); // <20><>;
virtual void NextRecordAction(float dt) = 0; // <20><><EFBFBD><EFBFBD>Ϸʵ<CFB7><CAB5>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
virtual void StartGameRecord() = 0; // <20><><EFBFBD><EFBFBD>Ϸ<EFBFBD>н<EFBFBD><D0BD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>;
// <20><><EFBFBD><EFBFBD>;
public:
// <20>ϴ<EFBFBD><CFB4><EFBFBD><EFBFBD><EFBFBD>;
virtual void onUpLoadFileListern(YVSDK::UpLoadFileRespond*);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
void onPlayFinish();
protected:
GamePlayer* m_pSelfPlayer; // <20>Լ<EFBFBD><D4BC><EFBFBD>Ϣ
std::vector<GamePlayer*> m_kPlayers; // <20><><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>
std::vector<GamePlayer*> m_kPoolPlayer;
NET_CBInfoList m_kCBInfoList;
GameMission m_kGameMission; // <20><>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CMD_GF_C_PingTime m_PingTime; // PING
long long m_llNetWorkTime; // PINGʱ<47><CAB1>
public:
bool m_bPrivateEnd; // ˽<>˳<EFBFBD><CBB3>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>
ChatLayer* m_pChatLayer; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Text* m_txtNetWorkTime; // <20><><EFBFBD><EFBFBD><EFBFBD>ӳ<EFBFBD>ʱ<EFBFBD><CAB1>
ImageView* m_SystemInfo; // ϵͳ<CFB5><CDB3><EFBFBD><EFBFBD>
SystemNotice* m_PlatformNotic;
CMD_GF_Private_Score_Info m_PrivateScoreInfo;
// ¼<><C2BC><EFBFBD><EFBFBD>Դ
protected:
Node* m_pMeunNOde; // <20><><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD>
Button* m_btnExit; // <20>˳<EFBFBD>¼<EFBFBD><C2BC>
Sprite* m_sprRepBg; // <20><><EFBFBD>ܰ<EFBFBD>ť<EFBFBD><C5A5><EFBFBD><EFBFBD>;
Button* m_btnBackWard; // <20><><EFBFBD><EFBFBD>
Button* m_btnForward; // <20><><EFBFBD><EFBFBD>
Button* m_btnPlay; // <20><><EFBFBD><EFBFBD>
Button* m_btnPause; // ֹͣ
Text* m_txtRecordPercent; // <20><><EFBFBD>Ž<EFBFBD><C5BD><EFBFBD>;
tagGameRecord m_GameRecord; // <20><>Ϸ<EFBFBD><CFB7>¼
int m_iActRecordIdex;
float m_RecordTime;
uint16 m_wRecordSelfChairID;
uint32 m_wMainGameID; // <20><><EFBFBD>ӽ<EFBFBD>GAMEID
bool m_IsGameRecord; // <20>Ƿ<EFBFBD><C7B7><EFBFBD>¼<EFBFBD><C2BC>ģʽ;
float m_fLocationTimer; // λ<>ü<EFBFBD><C3BC><EFBFBD>ʱ<EFBFBD><CAB1>;
std::list<std::string> m_VoiceList; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>;
std::map<std::string, WORD> m_voicechairid; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>;
float m_fMusicVolume; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
std::vector<std::string> m_vecShortChatList; // <20><><EFBFBD>ݶ<EFBFBD><DDB6><EFBFBD>;
};