Files
wnmj/Classes/Games/WNMJ/WN_GameScene.h

249 lines
9.0 KiB
C
Raw Normal View History

2026-02-13 14:34:15 +08:00
#ifndef _NCMJ_CGameScene_h_
#define _NCMJ_CGameScene_h_
#include <vector>
#include <string>
#include "cocos2d.h"
#include "ui/CocosGUI.h"
#include "GameFrameBase.h"
#include "Singleton.h"
#include "TimeNode.h"
#include "GameDefine.h"
#include "WN_CMD_Sparrow.h"
#include "WN_GamePlayer.h"
#include "WN_GameLogic.h"
#include "WN_GameOver.h"
#include "WN_CardManager.h"
#include "WN_PrivateScene.h"
//#include "WN_CreateScene.h"
#include "WN_GetCardCtrl.h"
USING_NS_CC;
using namespace cocos2d::ui;
namespace WNMJ_SPACE{
class WN_GameScene : public GameFrameBase
{
public:
WN_GameScene();
virtual ~WN_GameScene();
static std::string getGameRule(uint32 dwGameRule);
static int GetRealChairCount(uint32 dwGameRule);
//
public:
CREATE_FUNC(WN_GameScene);
virtual bool init(); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>
virtual bool InitGameEvent(); // <20>¼<EFBFBD>ע<EFBFBD><D7A2>
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 ResetTable(); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
virtual void ResetScene(); // <20><><EFBFBD>ó<EFBFBD><C3B3><EFBFBD>
virtual void upSelfPlayerInfo(); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
virtual WORD SwitchViewChairID(WORD wChairID); // <20><><EFBFBD>Ӻ<EFBFBD><D3BA><EFBFBD>ͼת<CDBC><D7AA>
virtual uint16 GetRealChairCount();
// <20><>ʼ<EFBFBD><CABC>
private:
void uiLayerinit(); // UI<55><49>ʼ<EFBFBD><CABC>
void loadingRes(); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E9BDAB>Դ
void SetCurrentUser(WORD wCurrentUser); // <20><><EFBFBD>õ<EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>
void ResetAllData(); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><>ʱ<EFBFBD><CAB1>
private:
void OnEventGameClock(float dt); // <20><>Ϸ<EFBFBD><CFB7>ʱ<EFBFBD><CAB1>
void SetGameClock(WORD wChairID, DWORD dwTimerID, DWORD dwElapse); // <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>(<28><>)
void KillGameClock(); // ɾ<><C9BE>ʱ<EFBFBD><CAB1>
void UpdateSystmeTime(float dt); // <20><><EFBFBD><EFBFBD>ϵͳʱ<CDB3><CAB1>;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
private:
virtual bool OnEventSceneMessage(uint8 cbGameStatus, bool bLookonUser, void* data, int dataSize);
void onGameScenePlay(CMD_S_StatusPlay* pStatusPlay); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϸ
void onGameSceneFree(CMD_S_StatusFree* pStatusFree); // <20><><EFBFBD>г<EFBFBD><D0B3><EFBFBD>
// <20><>Ϸ<EFBFBD><CFB7>Ϣ
private:
void OnSubGameStart(const void *pBuffer, WORD wDataSize); // <20><>Ϸ<EFBFBD><CFB7>ʼ
void OnSubRecordGameStart(const void *pBuffer, WORD wDataSize);
void OnSubSendCard(const void *pBuffer, WORD wDataSize); // <20><><EFBFBD><EFBFBD>ʮ<EFBFBD><CAAE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void OnSubOperateNotify(const void *pBuffer, WORD wDataSize); // <20><>ʾ<EFBFBD><CABE>Ϣ
void OnSubOutCard(const void *pBuffer, WORD wDataSize); // <20>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>
void OnSubOperateResult(const void *pBuffer, WORD wDataSize); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void OnSubUserTrust(const void *pBuffer, WORD wDataSize); // <20>û<EFBFBD><C3BB>й<EFBFBD>
void OnSubGameEnd(const void *pBuffer, WORD wDataSize); // <20><>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD>
void OnSubKickOut(const void *pBuffer, WORD wDataSize); // <20>߳<EFBFBD><DFB3><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>
void OnSubGetLeftCard(const void *pBuffer, WORD wDataSize); // <20><>ȡ<EFBFBD>Ŷ<EFBFBD>;
// <20><>Ϣ<EFBFBD><CFA2><EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD>
public:
void SendFrameData(WORD wSubCmdID, void* buffer, WORD wSize); // <20><><EFBFBD>Ϳ<EFBFBD><CDBF><EFBFBD><EFBFBD><EFBFBD>Ϣ
void SendGameData(WORD wSubCmdID, void* buffer, WORD wSize); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϸ<EFBFBD><CFB7>Ϣ
void SendUserData(WORD wSubCmdID, void* buffer, WORD wSize); // <20><><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD>Ϣ
// <20><>ť<EFBFBD>ص<EFBFBD><D8B5>¼<EFBFBD>
private:
void onLeaveClickEvent(cocos2d::Ref *pSender); // <20><EFBFBD><EBBFAA>ť<EFBFBD><C5A5><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD>
void onStartClickEvent(cocos2d::Ref *pSender); // <20><>ʼ<EFBFBD><CABC>ť<EFBFBD><C5A5><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD>
void onKeyReleased(EventKeyboard::KeyCode keyCode, Event * pEvent); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><>Ϸ<EFBFBD><CFB7><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD>
public:
void onGameStartInitUI(bool IsMove = true); // <20><>Ϸ<EFBFBD><CFB7>ʼ<EFBFBD>ƶ<EFBFBD><C6B6><EFBFBD><EFBFBD><EFBFBD>;
void onShowDice(); // <20><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
bool IsHaveOperateCard(WORD dwUserAction); // <20>Ƿ<EFBFBD><C7B7>и߼<D0B8><DFBC><EFBFBD><EFBFBD><EFBFBD>
void SetTimerByEast(WORD wEastUser); // <20><><EFBFBD>ݶ<EFBFBD><DDB6><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>TAG
void SetSurplusCardCount(BYTE cbUseingCount); // <20><><EFBFBD><EFBFBD>ʣ<EFBFBD><CAA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void onEventShowPrivate(cocos2d::EventCustom *event); // <20><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
// <20><>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD>
private:
// <20><><EFBFBD><EFBFBD> <20><>Ϸ<EFBFBD>н<EFBFBD><D0BD><EFBFBD><E3B6AF>
void SetPayAniShowMode(ANI_TYPE aType, Point pos, const std::function<void()>& callback);
void doHuAnimation(float fEndX, float fEndY, const std::function<void()>& fnCallback);
void doHuangAnimation(float fEndX, float fEndY, const std::function<void()>& fnCallback);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>
public:
virtual void OnEventUserEnter(GamePlayer * pPlayer); //<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>
virtual void OnEventUserStatus(GamePlayer * pPlayer); //<2F>û<EFBFBD>״̬
virtual void OnEventUserLeave(GamePlayer * pPlayer); //<2F>û<EFBFBD><C3BB>뿪;
virtual void OnUserScore(GamePlayer* pPlayer); // <20><><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>
virtual Vec2 GetPlayerPosByUserID(uint32 dwUserID); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
GamePlayer* CreatePlayer(IClientUserItem * pIClientUserItem);
string getGoldStr(string _str, char insertChar); // <20>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD>
//void ShowPlayer(WORD wChairID, GamePlayer* pPlayer); // <20><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
//void ShowKingAndUpDownCard(BYTE cbKingCard[2]); // <20><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
public:
void PlayBackMusic(BYTE cbType, bool ispool); // <20><><EFBFBD>ű<EFBFBD><C5B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void playGameEffect(BYTE cbType); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϸ<EFBFBD><CFB7>Ч
void playGameEffect(BYTE cbSoundType, WORD wChairID, BYTE cbOutCard = 0);// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϸ<EFBFBD><CFB7>Ч
// <20><>ť<EFBFBD>¼<EFBFBD>
public:
// <20><>ס<EFBFBD><D7A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ť
void OnButtonVoiceTouched(Ref*, Widget::TouchEventType);
//˽<>˳<EFBFBD>
public:
virtual void OnSocketSubPrivateRoomInfo(CMD_GF_Private_Room_Info* pNetInfo);
virtual void OnSocketSubPrivateEnd(void* data, int dataSize);
virtual void OnSocketSubPrivateDismissInfo(CMD_GF_Private_Dismiss_Info* pNetInfo);
virtual void OnSocketSubPrivateDismissResult(CMD_GF_Private_Dismiss_Result* pNetInfo);
virtual void OnSocketSubPrivateAutoUserStatus(tagAutoUserStatus* pNetInfo);
virtual void OnSocketSubPrivateAutoUserReady(CMD_GR_Private_ReadyInfo* pNetInfo);
void ShowGameRule(CMD_GF_Private_Room_Info* pNetInfo); // <20><>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD>
void ShowRoomID(Ref *pSender); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
void SetChairs();
// <20><><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA>
public:
void onPlayerGetCard();
//<2F>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD>¼<EFBFBD><C2BC>ص<EFBFBD>
public:
void onEventOutCard(EventCustom* event); //<2F><><EFBFBD><EFBFBD>
void onEventOperCard(EventCustom* event); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void onEventGetCard(EventCustom* event); //Ҫ<><D2AA><EFBFBD>¼<EFBFBD>;
//¼<><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
public:
virtual void StartGameRecord();
virtual void NextRecordAction(float dt);
// <20>ؼ<EFBFBD><D8BC><EFBFBD>Ϣ
public:
WN_CardManager* m_pCardManager; // <20><EFBFBD><E9BDAB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Layout* m_pRootLayout; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Layout* m_PanelCard; // <20><EFBFBD>ڵ<EFBFBD>;
WN_GameOver* m_pResultLayer; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
WN_PrivateScene* m_pPrivateScene; // ˽<>˳<EFBFBD><CBB3><EFBFBD><EFBFBD><EFBFBD>
GetCardCtrl* m_pGetCardLayer; // Ҫ<><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
//Sprite* m_SpritePlayers[GAME_PLAYER]; // <20><><EFBFBD>ҿؼ<D2BF>
//Button* m_btnPlayer[GAME_PLAYER]; // <20><><EFBFBD><EFBFBD><EFBFBD>c<EFBFBD><63><EFBFBD>¼<EFBFBD>
//Sprite* m_SpriteReadys[GAME_PLAYER]; // ׼<><D7BC><EFBFBD>ؼ<EFBFBD>
//Sprite* m_SpriteOffLine[GAME_PLAYER]; // <20><><EFBFBD>߿ؼ<DFBF>
Sprite* m_SpriteTimeBg; // ʱ<><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Sprite* m_SpriteTimer; // ʱ<><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
LabelAtlas* m_LableTime; // ʱ<><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Text* m_ptxtCardNum; // ʣ<><CAA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Text* m_txtGameRule; // <20><>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD>;
Text* m_txtGameRuleScore; // <20><>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD>;
Text* m_txtGangRule; // <20>ܹ<EFBFBD><DCB9><EFBFBD>;
Text* m_txtCurrentTime; // <20><>ǰʱ<C7B0><CAB1>;
ImageView* m_ImageMenu; // <20>˵<EFBFBD>;
Button* m_BtnMenu; // <20>˵<EFBFBD><CBB5><EFBFBD>ť;
Button* m_pBtnLeave; // <20><EFBFBD><EBBFAA>ť
Button* m_pBtnReady; // ׼<><D7BC><EFBFBD><EFBFBD>ť;
Button* m_btnDismiss; // <20><>ɢ<EFBFBD><C9A2><EFBFBD><EFBFBD>
Button* m_btnWeiXin; // ΢<>ŷ<EFBFBD><C5B7><EFBFBD><EFBFBD><EFBFBD>ť
Button* m_pBtnStartGame; // <20><><EFBFBD>Կ<EFBFBD>ʼ<EFBFBD><CABC>Ϸ<EFBFBD><CFB7>ť;
Node* m_pVoiceNode; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־
Text* m_txtRoomID; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Text* m_txtGameTimes; // <20><>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD>
WNGamePlayer* m_aryPlayer[GAME_PLAYER]; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
bool m_bActiveStatus[GAME_PLAYER]; //<2F><><EFBFBD><EFBFBD>״̬;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
private:
long m_lBaseScore; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
BYTE m_cbGameStatus; // <20><>Ϸ״̬
BYTE m_cbSurplusCard; // ʣ<><CAA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
BYTE m_cbHuaAniCout; // <20><><EFBFBD>ƶ<EFBFBD><C6B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
///<<3C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
public:
Point m_ptStartCard[GAME_PLAYER]; // ÿ<><C3BF><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Point m_ptOutCard[GAME_PLAYER]; // ÿ<><C3BF><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD>һ<EFBFBD>ų<EFBFBD><C5B3><EFBFBD>
Point m_ptCurrentCard[GAME_PLAYER]; // ÿ<><C3BF><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>
Point m_ptWeaveCard[GAME_PLAYER]; // ÿ<><C3BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Point m_ptPlayerEnd[GAME_PLAYER]; // ÿ<><C3BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>(<28><>¼<EFBFBD><C2BC><EFBFBD>û<EFBFBD>ȫ<EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӻ<EFBFBD>)
protected:
WORD m_wBankerUser; // ׯ<><D7AF><EFBFBD>û<EFBFBD>
WORD m_wCurrentUser; // <20><>ǰ<EFBFBD>û<EFBFBD>
WORD m_wEastUser; // <20><><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>
WORD m_wUserPosition[GAME_PLAYER]; // <20><>λ<EFBFBD><CEBB>ת<EFBFBD>Ƕ<EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
public:
BYTE m_cbSelfHandCardData[MAX_COUNT]; // <20>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><>ʱ<EFBFBD><CAB1>
public:
DWORD m_dwTimerID; // <20><>ʱ<EFBFBD><CAB1>ID
int m_nSecondCount; // <20><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>
WORD m_wTimeChairID; // <20><><EFBFBD>ڼ<EFBFBD><DABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int m_nVoiceTimeID; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>ID
// //<2F><><EFBFBD><EFBFBD>
//public:
// BYTE m_cbSoundType; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// //BYTE m_cbBackMusicType; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7><EFBFBD><EFBFBD>
//˽<>˳<EFBFBD><CBB3><EFBFBD>Ϣ
public:
CMD_GF_Private_Room_Info m_PrivateRoomInfo;
bool m_IsRunEndAction;
std::string m_strGameRuleInfo;
std::string m_strGameTitle;
};
}
#endif