316 lines
8.4 KiB
C++
316 lines
8.4 KiB
C++
#pragma once
|
||
#include "cocos2d.h"
|
||
#include "cocostudio/CocoStudio.h"
|
||
#include "cocostudio/CCArmature.h"
|
||
#include "ui/CocosGUI.h"
|
||
|
||
#include "Singleton.h"
|
||
#include "GameFrameBase.h"
|
||
#include "PlatformHeader.h"
|
||
|
||
#include "NN_GamePlayer.h"
|
||
#include "NN_GameLogic.h"
|
||
#include "NN_CMD.h"
|
||
#include "NN_PrivateEndNode.h"
|
||
|
||
USING_NS_CC;
|
||
using namespace cocostudio;
|
||
using namespace std;
|
||
using namespace ui;
|
||
|
||
namespace NiuNiu_SPACE{
|
||
|
||
enum NN_OPERATE_STATUS
|
||
{
|
||
NN_OS_NULL = 0, // 无操作;
|
||
NN_OS_CALLBANK, // 其他人叫庄;
|
||
NN_OS_ADDSCORE0, // 其他人加注;
|
||
NN_OS_ADDSCORE1, // 自己加注;
|
||
};
|
||
|
||
class NNGameScene :public GameFrameBase
|
||
{
|
||
|
||
public:
|
||
//创建场景;
|
||
CREATE_FUNC(NNGameScene);
|
||
|
||
static std::string getGameRule(uint32 dwGameRule);
|
||
|
||
//场景初始化;
|
||
virtual bool init();
|
||
//进场动画完成回调;
|
||
virtual void onEnterTransitionDidFinish();
|
||
//场景退出;
|
||
virtual void onExit();
|
||
|
||
public:
|
||
//椅子号视图转换;
|
||
virtual WORD SwitchViewChairID(WORD wChairID);
|
||
//更新玩家信息;
|
||
virtual void upSelfPlayerInfo();
|
||
|
||
//初始化场景;
|
||
void initScene();
|
||
//绑定网络消息;
|
||
void initNet();
|
||
|
||
//重置场景;
|
||
void resetScene(bool bAll=false);
|
||
//重置数据;
|
||
void resetData();
|
||
//重置数据;
|
||
void ResetAllData();
|
||
//重置桌子(相当于玩家离开);
|
||
virtual void ResetTable();
|
||
|
||
//获取快捷语音文件路径;
|
||
virtual const std::string getShortChatSoundPath(uint8 cbGender, int nIndex);
|
||
|
||
void onSliderEventCallback(Ref* widget, Slider::EventType type);
|
||
|
||
private:
|
||
//场景消息;
|
||
virtual bool OnEventSceneMessage(uint8 cbGameStatus, bool bLookonUser, void* pData, int nDataSize);
|
||
|
||
//恢复空闭场景;
|
||
bool onGameSceneFree(void* pData, int nDataSize);
|
||
//恢复发牌场景;
|
||
bool onGameSceneSendCard(void* pData, int nDataSize);
|
||
//抢庄状态;
|
||
bool onGameSceneRomBanker(void* pData, int nDataSize);
|
||
//下注状态;
|
||
bool onGameSceneUserChip(void* pData, int nDataSize);
|
||
//开牌状态;
|
||
bool onGameSceneOpenCard(void* pData, int nDataSize);
|
||
//游戏结束;
|
||
bool onGameSceneEnd(void* pData, int nDataSize);
|
||
|
||
//游戏消息处理;
|
||
//游戏开始;
|
||
void onSubGameStart(const void * pBuffer, uint16 wDataSize);
|
||
//开始抢庄;
|
||
void onSubStartRob(const void * pBuffer, uint16 wDataSize);
|
||
//玩家抢庄;
|
||
void onSubUserRob(const void * pBuffer, uint16 wDataSize);
|
||
//开始下注;
|
||
void onSubStartChip(const void * pBuffer, uint16 wDataSize);
|
||
//玩家下注;
|
||
void onSubUserChip(const void * pBuffer, uint16 wDataSize);
|
||
//开始开牌;
|
||
void onSubStartOpen(const void * pBuffer, uint16 wDataSize);
|
||
//玩家开牌;
|
||
void onSubOpenCard(const void * pBuffer, uint16 wDataSize);
|
||
//游戏结束;
|
||
void onSubGameEnd(const void * pBuffer, uint16 wDataSize);
|
||
//所有玩家开牌;
|
||
void onSubAllOpenCard(const void * pBuffer, uint16 wDataSize);
|
||
|
||
//用户进入;
|
||
virtual void OnEventUserEnter(GamePlayer * pPlayer);
|
||
//玩家状态改变;
|
||
virtual void OnEventUserStatus(GamePlayer * pPlayer);
|
||
//用户离开;
|
||
virtual void OnEventUserLeave(GamePlayer * pPlayer);
|
||
//玩家金币改变;
|
||
virtual void OnUserScore(GamePlayer* pPlayer);
|
||
//玩家坐标;
|
||
virtual Vec2 GetPlayerPosByUserID(uint32 dwUserID);
|
||
//创建玩家;
|
||
virtual GamePlayer* CreatePlayer(IClientUserItem * pIClientUserItem);
|
||
|
||
// 定时器;
|
||
void openGameClock(int iLeftTime, const std::function<void()>& callFunc=nullptr);
|
||
// 开启定时器;
|
||
void closeGameClock();
|
||
|
||
// 玩家抢庄字消失;
|
||
void clearRobIcon();
|
||
// 发牌动画;
|
||
float playSendCardAni();
|
||
// 移动扑克;
|
||
void moveSentCardSprite(Sprite* pCardSprite, uint16 wViewID, float fDelayTime);
|
||
//// 赢动画;
|
||
//void showWinAni(SCORE lGameScore[NN_GAME_PLAYER]);
|
||
//// 赢图标显示;
|
||
//void showWinCup();
|
||
// 显示玩家牌;
|
||
void showPlayerCard();
|
||
// 显示庄家;
|
||
void showLordUser(bool isplayEffect = false);
|
||
// 扔筹码动画;
|
||
void playChipAni(uint16 wViewID, int nCount, bool bAction);
|
||
// 收筹码动画;
|
||
void playGetChipAni();
|
||
// 筹码移动到下注区;
|
||
void ShowGoldMoveToArea(SCORE lScore, uint8 wStartViewID, uint8 wTargetViewID);
|
||
|
||
// 显示搓牌;
|
||
void showCuoPai(uint8 aryCardData[], uint8 cbCardCount);
|
||
|
||
// 操作动画;
|
||
void operateAction(std::string strAction);
|
||
|
||
// 获到性别字符串;
|
||
std::string getUserGender(int cbGender);
|
||
// 播放发牌声音;
|
||
void playSendCardEffect();
|
||
// 播放快捷语音;
|
||
void playFastVoice(int cbGender, int voiceIndex);
|
||
// 播放牛音效;
|
||
void playCowValue(int cbGender, int cowIndex);
|
||
// 播放音效;
|
||
void playEffect(std::string strPath);
|
||
// 播放点击音效;
|
||
void playBtnClickEffect();
|
||
|
||
// 发牌结束消息;
|
||
void sendSendCardOverMsg();
|
||
// 抢庄消息;
|
||
void sendRobBankerMsg(bool bFlag);
|
||
// 加注消息;
|
||
void sendChipScoreMsg(SCORE lChipScore);
|
||
// 发送开牌消息;
|
||
void sendOpenCardMsg();
|
||
// 设置状态;
|
||
void setOperateStatus(NN_OPERATE_STATUS ops);
|
||
|
||
// 获取当前玩家数量;
|
||
uint8 getCurPlayerCount();
|
||
|
||
//私人场;
|
||
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 onEventShowPrivate(cocos2d::EventCustom *event);
|
||
|
||
//按住语音按钮;
|
||
void OnButtonVoiceTouched(Ref*, Widget::TouchEventType);
|
||
|
||
void ShowGameRule(CMD_GF_Private_Room_Info* pNetInfo);
|
||
|
||
//录像处理;
|
||
public:
|
||
virtual void StartGameRecord(){};
|
||
virtual void NextRecordAction(float dt){};
|
||
|
||
private:
|
||
//私人场信息;
|
||
CMD_GF_Private_Room_Info m_PrivateRoomInfo;
|
||
uint32 m_dwRoomID; //房间号;
|
||
uint32 m_dwPlayCout; //局数;
|
||
|
||
Node* m_pVoiceNode; //语音标志;
|
||
int m_nVoiceTimeID; //语音定时器ID;
|
||
|
||
uint8 m_cbGameStatus; //游戏状态;
|
||
|
||
SCORE _iBaseScore; //底注;
|
||
SCORE _lMinFreeChip; //最小可下注;
|
||
SCORE _lMaxFreeChip; //最大封顶;
|
||
SCORE _lAddChip; //加注筹码;
|
||
|
||
bool _bCuoPai;
|
||
bool _bWin;
|
||
|
||
uint16 _wLordUser; //庄家;
|
||
uint16 _wCurrentUser; //当前玩家;
|
||
|
||
uint8 _cbHandCardCount; //手牌数量;
|
||
|
||
uint8 _aryRobStatus[NN_GAME_PLAYER]; //抢庄状态 0:没操作,1:不抢,2:抢;
|
||
uint8 _aryChipStatus[NN_GAME_PLAYER]; //下注状态 0:没下,1:已下;
|
||
uint8 _aryOpenStatus[NN_GAME_PLAYER]; //开牌状态 0:没开,1:已开;
|
||
|
||
bool _aryActiveStatus[NN_GAME_PLAYER]; //玩家手牌状态;
|
||
uint8 _aryHandCardData[NN_MAX_COUNT]; //手牌数据;
|
||
uint8 _aryAllHandCardData[NN_GAME_PLAYER][NN_MAX_COUNT]; //所有玩家手牌;
|
||
int _aryCardNiuType[NN_GAME_PLAYER]; //牛值;
|
||
SCORE _aryTableScore[NN_GAME_PLAYER]; //下注数目;
|
||
SCORE _lCurrentChip; //当前注数;
|
||
SCORE _lViewGameScore[NN_GAME_PLAYER]; //玩家输赢积分;
|
||
std::vector<Sprite*> _aryChipSprite; //筹码精灵数组;
|
||
|
||
NNPrivateEndNode* _OpenResultScene;
|
||
|
||
//界面;
|
||
Node* m_rootNode; //场景;
|
||
Layout* _MainPanel;
|
||
ImageView* _imgRoomInfo;
|
||
Layout* _RoundPanel;
|
||
TextBMFont* _txtRoomID;
|
||
Text* _txtCurrentTime;
|
||
Text* _txtRoomRule;
|
||
//Sprite* _spRoomRule0; // 抢庄;
|
||
//Sprite* _spRoomRule1; // 轮庄;
|
||
TextBMFont* _txtJushu;
|
||
|
||
Layout* _ResultPanel;
|
||
Armature* _pArmatureEnd;
|
||
|
||
Button* _btnContinue;
|
||
Button* _btnLookon;
|
||
|
||
Button* _ButtonPanel;
|
||
Button* _btnWXInvite;
|
||
Button* _btnLeave;
|
||
Button* _btnWXDismiss;
|
||
Button* _btnWXVoice;
|
||
Button* _btnWXChat;
|
||
Button* _btnStartGame;
|
||
|
||
Layout* _GamePanel;
|
||
Button* _btnAutoNiu;
|
||
Button* _btnCuoPai;
|
||
|
||
Layout* _RobPanel;
|
||
Button* _btnRobNO;
|
||
Button* _btnRobYES;
|
||
|
||
Layout* _YazhuPanel1;
|
||
Text* _txtZhu;
|
||
|
||
Sprite* _spOtherCallBanker;
|
||
Sprite* _spOtherAddScore;
|
||
Sprite* _spSelfAddScore;
|
||
|
||
Sprite* _imgGameClock;
|
||
Layout* _ChipPanel;
|
||
|
||
NN_GamePlayer* m_aryPlayer[NN_GAME_PLAYER]; //玩家;
|
||
NN_GamePlayer* m_pLocalPlayer;
|
||
|
||
std::string m_strGameRuleInfo;
|
||
std::string m_strGameTitle;
|
||
Vec2 _ptSendCardPos; // 发牌位置;
|
||
|
||
Armature* _pArmatureStart; // 开始动画;
|
||
|
||
CNNGameLogic m_GameLogic;
|
||
|
||
// localZOrder 层级;
|
||
enum ZOrder
|
||
{
|
||
ZO_DEFAULT = 0, // 默认;
|
||
ZO_CARDMANAGER, // 麻将管理类;
|
||
ZO_UPDOWN, // 上下翻;
|
||
ZO_ANI, // 动画;
|
||
ZO_TRUSTEE, // 托管;
|
||
ZO_END, // 结算面板;
|
||
ZO_PRIVATE, // 私人场面板;
|
||
};
|
||
};
|
||
|
||
} |