Files

268 lines
8.3 KiB
C
Raw Permalink Normal View History

2026-03-03 13:56:44 +08:00
#pragma once
#include "cocos2d.h"
#include "cocostudio/CocoStudio.h"
#include "ui/CocosGUI.h"
#include "Singleton.h"
#include "GameFrameBase.h"
#include "PlatformHeader.h"
#include "TimeNode.h"
#include "DZ_GamePlayer.h"
#include "DZ_GameLogic.h"
#include "DZ_HandCardLayer.h"
#include "DZ_GameEndNode.h"
#include "DZ_PrivateEndNode.h"
#include "DZ_CMD.h"
USING_NS_CC;
using namespace cocostudio;
using namespace std;
using namespace ui;
namespace DZ_SPACE{
class DZGameScene :public GameFrameBase
{
public:
//<2F><>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD>ID;
const static int KIND_ID = 430;
static std::string getGameRule(uint32 dwGameRule);
public:
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
CREATE_FUNC(DZGameScene);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>;
virtual bool init();
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɻص<C9BB>;
virtual void onEnterTransitionDidFinish();
//<2F><><EFBFBD><EFBFBD><EFBFBD>˳<EFBFBD>;
virtual void onExit();
public:
//<2F><><EFBFBD>Ӻ<EFBFBD><D3BA><EFBFBD>ͼת<CDBC><D7AA>;
virtual WORD SwitchViewChairID(WORD wChairID);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ;
virtual void upSelfPlayerInfo();
//<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
void initScene();
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ;
void initNet();
//<2F><><EFBFBD>ó<EFBFBD><C3B3><EFBFBD>;
void resetScene(bool bAll=false);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
void resetData();
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
void ResetAllData();
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><EFBFBD><E0B5B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>뿪);
virtual void ResetTable();
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>·<EFBFBD><C2B7>;
virtual const std::string getShortChatSoundPath(uint8 cbGender, int nIndex);
private:
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ;
virtual bool OnEventSceneMessage(uint8 cbGameStatus, bool bLookonUser, void* pData, int nDataSize);
//<2F>ָ<EFBFBD><D6B8><EFBFBD>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD>;
bool onGameScenePlay(void* pData, int nDataSize);
//<2F>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD>Ƴ<EFBFBD><C6B3><EFBFBD>;
bool onGameSceneSendCard(void* pData, int nDataSize);
//<2F>ָ<EFBFBD><D6B8>зֳ<D0B7><D6B3><EFBFBD>;
bool onGameSceneCallScore(void* pData, int nDataSize);
//<2F>ָ<EFBFBD><D6B8>ձճ<D5B1><D5B3><EFBFBD>;
bool onGameSceneFree(void* pData, int nDataSize);
//<2F><>Ϸ<EFBFBD><CFB7>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>;
//<2F><>Ϸ<EFBFBD><CFB7>ʼ;
void onSubGameStart(const void * pBuffer, uint16 wDataSize);
//<2F><><EFBFBD>ҽз<D2BD>;
void onSubCallScore(const void * pBuffer, uint16 wDataSize);
//ׯ<><D7AF><EFBFBD><EFBFBD>Ϣ;
void onSubBankerInfo(const void * pBuffer, uint16 wDataSize);
//ׯ<>ҽ<EFBFBD><D2BD><EFBFBD>;
void onSubCallCard(const void * pBuffer, uint16 wDataSize);
//<2F><><EFBFBD>ҳ<EFBFBD><D2B3><EFBFBD>;
void onSubOutCard(const void * pBuffer, uint16 wDataSize);
//<2F><><EFBFBD>Ҳ<EFBFBD><D2B2><EFBFBD>;
void onSubPassCard(const void * pBuffer, uint16 wDataSize);
//<2F><>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD>;
void onSubGameEnd(const void * pBuffer, uint16 wDataSize);
//<2F><><EFBFBD><EFBFBD><EFBFBD>й<EFBFBD>;
void onSubTrustee(const void * pBuffer, uint16 wDataSize);
//<2F><><EFBFBD><EFBFBD>;
void onSubRanking(const void * pBuffer, uint16 wDataSize);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ;
void SendPassCall();
//<2F><>ť<EFBFBD><C5A5><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD>;
void onButtonTipClick(Ref*);
//<2F><><EFBFBD>½зְ<D0B7>ť;
void updateCallButtons(uint16 wCurChairID, uint8 cbLastCallScore);
//<2F><><EFBFBD>°<EFBFBD>ť״̬;
void updateButtonsStatus(uint16 wCurChairID, uint8 cbLeftSeconds, bool bTurnOver = false);
//<2F><><EFBFBD>س<EFBFBD><D8B3>ư<EFBFBD>ť;
void hideOutCardButtons();
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ư<EFBFBD>ť;
void checkOutCardButton();
//<2F><><EFBFBD><EFBFBD>;
void moveSendCardSprite(Sprite* pCardSprite, uint16 wViewID, float fDelayTime);
//ѡ<>ƻص<C6BB>;
void selectCardCallback(uint8* pCardData, uint8 cbCardCount);
//<2F><><EFBFBD>Ŷ<EFBFBD><C5B6><EFBFBD>;
void playAnimate(int cbCardType, uint16 wFromChair, uint16 wToChair);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
void playSoundEffect(const int cbCardType, uint8 cbSex = 1, const uint8 cbData = 0, const bool isOutCard = false);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
void PlayGameEndAni(DZ_GAME_END_TYPE enGameEndType, const std::function<void()>& callback);
// <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); //<2F><><EFBFBD>ҽ<EFBFBD><D2BD>Ҹı<D2B8>;
virtual Vec2 GetPlayerPosByUserID(uint32 dwUserID); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
virtual GamePlayer* CreatePlayer(IClientUserItem * pIClientUserItem); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
virtual void IsSameIp(); //ͬIP<49>ж<EFBFBD>;
void autoOutCard(); //<2F>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD>;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
void parseShareContent(std::string& strContent);
//˽<>˳<EFBFBD>;
public:
//˽<>˳<EFBFBD><CBB3><EFBFBD>Ϣ;
virtual void OnSocketSubPrivateRoomInfo(CMD_GF_Private_Room_Info* pNetInfo);
//˽<>˳<EFBFBD><CBB3><EFBFBD><EFBFBD><EFBFBD>;
virtual void OnSocketSubPrivateEnd(void* data, int dataSize);
//˽<>˳<EFBFBD><CBB3><EFBFBD>ɢ<EFBFBD><C9A2>Ϣ;
virtual void OnSocketSubPrivateDismissInfo(CMD_GF_Private_Dismiss_Info* pNetInfo);
//˽<>˳<EFBFBD><CBB3><EFBFBD>ɢ<EFBFBD><C9A2><EFBFBD><EFBFBD>;
virtual void OnSocketSubPrivateDismissResult(CMD_GF_Private_Dismiss_Result* pNetInfo);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬;
virtual void OnSocketSubPrivateAutoUserStatus(tagAutoUserStatus* pNetInfo){}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
virtual void OnSocketSubPrivateAutoUserReady(CMD_GR_Private_ReadyInfo* pNetInfo){}
//<2F><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ;
void onEventShowPrivate(cocos2d::EventCustom *event);
//<2F><>ס<EFBFBD><D7A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ť;
void OnButtonVoiceTouched(Ref*, Widget::TouchEventType);
//¼<><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
public:
virtual void StartGameRecord();
virtual void NextRecordAction(float dt);
// <20>ؼ<EFBFBD><D8BC><EFBFBD><EFBFBD><EFBFBD>;
private:
Button* m_btnDismissRoom; //<2F><>ɢ<EFBFBD><C9A2><EFBFBD><EFBFBD>;
Button* m_btnWeiXin; //΢<>ŷ<EFBFBD><C5B7><EFBFBD>;
CMD_GF_Private_Room_Info m_PrivateRoomInfo;
uint32 m_dwRoomID; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
Text* m_txtRoomIDTip; //<2F><><EFBFBD><EFBFBD><EFBFBD>ű<EFBFBD><C5B1><EFBFBD>;
Text* m_txtPrivateRoomID; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
//ImageView* m_imgRule; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
Text* m_txtPrivatePlayCount; //<2F><><EFBFBD><EFBFBD>;
ImageView* m_imgGameRule; //<2F><><EFBFBD>򱳾<EFBFBD>;
Sprite* m_imgGameEndAni; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
Text* m_txtGameRule1; //<2F><><EFBFBD><EFBFBD>;
Text* m_txtGameRule2; //<2F><><EFBFBD><EFBFBD>;
Text* m_txtGameRule3; //<2F><><EFBFBD><EFBFBD>;
Node* m_pVoiceNode; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־;
int m_nVoiceTimeID; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>ID;
//<2F><><EFBFBD><EFBFBD>;
Node* m_rootNode; //<2F><><EFBFBD><EFBFBD>;
Button* m_pBtnLeave; //<2F><EFBFBD><EBBFAA><EFBFBD><EFBFBD>;
Button* m_pBtnTrustee; //<2F>йܰ<D0B9>ť;
Button* m_btnChat; //<2F><><EFBFBD><EFBFBD>;
Button* m_btnVoice; //<2F><><EFBFBD><EFBFBD>;
DZ_GamePlayer* m_aryPlayer[DZ_GAME_PLAYER]; //<2F><><EFBFBD><EFBFBD>;
DZ_GamePlayer* m_pLocalPlayer;
Button* m_pBtnCallScore; //<2F>зְ<D0B7>ť;
Button* m_pBtnPassCall; //<2F><><EFBFBD>а<EFBFBD>ť;
Button* m_pBtnCallCard; //<2F><><EFBFBD>ư<EFBFBD>ť;
Layout* m_pPanelTips; //<2F><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>;
Text* m_txtTip; //<2F><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>;
Layout* m_pPanelCallCard; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
Layout* m_pPanelCallHandCard; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
Layout* m_pPanelCallFinished; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
DZHandCardLayer* m_pCallCardLayer; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
Button* m_pBtnReady; //׼<><D7BC><EFBFBD><EFBFBD>ť;
Button* m_pBtnPass; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ť;
Button* m_pBtnTips; //<2F><>ʾ<EFBFBD><CABE>ť;
Button* m_pBtnOutCard; //<2F><><EFBFBD>ư<EFBFBD>ť;
Layout* m_pPanleMoveOutCard; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
Button* m_pbtnCancelTrustee; //<2F>йܰ<D0B9>ť;
Sprite* m_pSprTips; //<2F><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>;
Layout* m_pPanelTrustee; //<2F><>ʾ<EFBFBD>й<EFBFBD><D0B9><EFBFBD><EFBFBD><EFBFBD>;
Button* m_pBtnSort; //<2F><><EFBFBD><EFBFBD>;
DZHandCardLayer* m_pHandCardLayer; //<2F><><EFBFBD>ƿؼ<C6BF>;
uint8 m_cbTimeOutCard; //<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>;
uint8 m_cbTimeCallScore; //<2F>з<EFBFBD>ʱ<EFBFBD><CAB1>;
uint8 m_cbTimeStartGame; //<2F><>ʼʱ<CABC><CAB1>;
uint8 m_cbTimeHeadOutCard; //<2F>״γ<D7B4><CEB3><EFBFBD>ʱ<EFBFBD><CAB1>;
uint8 m_cbLastOutCardType; //<2F><><EFBFBD><EFBFBD>һ<EFBFBD>γ<EFBFBD><CEB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
uint8 m_cbBombCount; //ը<><D5A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
int m_nCellScore; //<2F><><EFBFBD><EFBFBD>;
uint8 m_cbSearchOutCardIndex; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
uint16 m_wTurnWiner; //ʤ<><CAA4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
DZ_CMD_C_OutCard m_TurnOutCard; //<2F>ϼҳ<CFBC><D2B3><EFBFBD>;
DZ_CMD_C_OutCard m_SelfOutCard; //<2F>Լ<EFBFBD><D4BC><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ư<EFBFBD>ť;
DZ_CMD_C_OutCard m_TipOutCard; //<2F><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>;
bool m_aryTrustee[DZ_GAME_PLAYER]; //<2F>йܱ<D0B9>־;
bool m_bNobodyCall; //û<><C3BB><EFBFBD><EFBFBD><EFBFBD>ҽ<EFBFBD><D2BD><EFBFBD>;
bool m_bGameStart; //<2F><>Ϸ<EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>ʼ;
uint16 m_wLandChairID; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>;
uint16 m_wCurChairID; //<2F><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>;
uint16 m_wFriendChairID; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӻ<EFBFBD>;
int m_nSort; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ;
uint8 m_aryHandCardData[DZ_MAX_COUNT]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD><D0B5><EFBFBD>;
uint8 m_aryAllHandCardData[DZ_GAME_PLAYER][DZ_MAX_COUNT];
uint8 m_aryHandCardCount[DZ_GAME_PLAYER]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD>;
uint8 m_aryTempCardCount[DZ_GAME_PLAYER]; //<2F><>Ϸ<EFBFBD><CFB7>ʼʱ<CABC><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
std::string m_strGameRuleInfo;
DZ_CGameLogic m_GameLogic;
DZGameEndNode* m_pResultLayer; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
DZPrivateEndNode* m_pPrivateScene; // ˽<>˳<EFBFBD><CBB3><EFBFBD><EFBFBD><EFBFBD>;
// localZOrder <20>㼶;
enum DZ_ZOrder
{
DZ_ZO_DEFAULT = 0, // Ĭ<><C4AC>;
DZ_ZO_CARDMANAGER, // <20><EFBFBD><E9BDAB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
DZ_ZO_UPDOWN, // <20><><EFBFBD>·<EFBFBD>;
DZ_ZO_ANI, // <20><><EFBFBD><EFBFBD>;
DZ_ZO_TRUSTEE, // <20>й<EFBFBD>;
DZ_ZO_END, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
DZ_ZO_PRIVATE, // ˽<>˳<EFBFBD><CBB3><EFBFBD><EFBFBD><EFBFBD>;
};
};
}