#ifndef CMD_DZ_GAME_HEAD_FILE #define CMD_DZ_GAME_HEAD_FILE #include "Types.h" #include "DataStream.h" #pragma pack(1) ////////////////////////////////////////////////////////////////////////////////// //服务定义; //游戏属性; #define DZ_KIND_ID 430 //游戏 I D; #define DZ_GAME_NAME ("打炸") //游戏名字; //组件属性; #define DZ_GAME_PLAYER 4 //游戏人数; ////////////////////////////////////////////////////////////////////////////////// //玩家相关定义; #define DZ_TOP_VIEW_ID 0 //顶上玩家; #define DZ_LEFT_VIEW_ID 1 //左边玩家; #define DZ_SELF_VIEW_ID 2 //自己玩家; #define DZ_RIGHT_VIEW_ID 3 //右边玩家; #define DZ_EMPTY_VIEW_ID 65535 //空视图; //////////////////////////////////////////////////////////////////////////////////// //数目定义; #define DZ_MAX_COUNT 27 //最大数目; #define DZ_FULL_COUNT 108 //全牌数目; #define DZ_MAX_NO_JOKER_COUNT 26 //最大数目; #define DZ_NO_JOKER_COUNT 104 //全牌数目; //逻辑数目; #define DZ_NORMAL_COUNT 27 //常规数目; //游戏结束类型; enum DZ_GAME_END_TYPE { DZ_GAME_END_NULL, //NULL; DZ_GAME_END_ONE_WIN, //单扣; DZ_GAME_END_TWO_WIN, //双扣; DZ_GAME_END_DRAW, //平扣; DZ_GAME_END_NO_BOMB, //平扣; DZ_GAME_END_8_BOMB, //平扣; }; ////////////////////////////////////////////////////////////////////////////////// //状态定义; #define DZ_GAME_SCENE_FREE GAME_STATUS_FREE //等待开始; #define DZ_GAME_SCENE_SEND GAME_STATUS_PLAY //发牌状态; #define DZ_GAME_SCENE_CALL_SCORE (GAME_STATUS_PLAY+1) //叫分状态; #define DZ_GAME_SCENE_CALL_CARD (GAME_STATUS_PLAY+2) //叫牌状态; #define DZ_GAME_SCENE_PLAY (GAME_STATUS_PLAY+3) //游戏进行; //空闲状态; struct DZ_CMD_S_StatusFree { SCORE lCellScore; //单元积分; uint16 wBankerUser; //庄家用户; }; //发牌状态; struct DZ_CMD_S_StatusSendCard { //游戏信息; SCORE lCellScore; //单元积分; uint16 wCurrentUser; //当前玩家; uint8 cbHandCardCount[DZ_GAME_PLAYER]; //扑克数目; uint8 cbHandCardData[DZ_MAX_COUNT]; //手上扑克; bool bUserTrustee[DZ_GAME_PLAYER]; //托管标志; }; //叫分状态; struct DZ_CMD_S_StatusCallScore { //游戏信息; SCORE lCellScore; //单元积分; uint16 wCurrentUser; //当前玩家; uint8 cbScoreInfo[DZ_GAME_PLAYER]; //叫分信息; uint8 cbHandCardCount[DZ_GAME_PLAYER]; //扑克数目; uint8 cbHandCardData[DZ_MAX_COUNT]; //手上扑克; bool bUserTrustee[DZ_GAME_PLAYER]; //托管标志; }; //游戏状态; struct DZ_CMD_S_StatusPlay { //游戏变量 SCORE lCellScore; //单元积分; uint16 wCurrentUser; //当前玩家; uint16 wFriendChairID; //伙伴; //庄家用户 uint16 wBankerUser; //庄家用户; bool bCallCard; //是否叫牌; //胜利信息 uint16 wWinCount; //胜利人数; uint16 wWinOrder[DZ_GAME_PLAYER]; //胜利列表; bool bTrustee[DZ_GAME_PLAYER]; //是否托管; //出牌信息 uint16 wTurnWiner; //胜利玩家; bool isLastCard; //最后一手牌; int cbTurnCardType; //出牌类型; uint8 cbTurnCardCount; //出牌数目; uint8 cbTurnCardData[DZ_MAX_COUNT]; //出牌数据; //uint8 cbMagicCardData[DZ_MAX_COUNT]; //变幻扑克; //扑克信息 uint8 cbHandCardData[DZ_MAX_COUNT]; //手上扑克 uint8 cbHandCardCount[DZ_GAME_PLAYER]; //扑克数目 uint8 cbPartnerCardData[DZ_MAX_COUNT]; //合作者扑克 }; ////////////////////////////////////////////////////////////////////////////////// //命令定义; #define DZ_SUB_S_GAME_START 100 //游戏函数; #define DZ_SUB_S_OUT_CARD 101 //用户出牌; #define DZ_SUB_S_PASS_CARD 102 //用户放弃; #define DZ_SUB_S_GAME_END 103 //游戏结束; #define DZ_SUB_S_TRUSTEE 104 //用户托管; #define DZ_SUB_S_CALL_SCORE 105 //用户叫分; #define DZ_SUB_S_BANKER_INFO 106 //庄家信息; #define DZ_SUB_S_RANKING 107 //排名; //发送扑克; struct DZ_CMD_S_GameStart { uint16 wCurrentUser; //当前玩家; SCORE lCellScore; //单元积分; bool bHasJoker; //是否有王; uint8 cbCardCount[DZ_GAME_PLAYER]; //扑克牌数量; uint8 cbCardData[DZ_MAX_COUNT]; //扑克列表; bool bTrustee[DZ_GAME_PLAYER]; //是否托管; }; //录像开始; struct DZ_CMD_Record_GameStart { WORD wStartUser; //开始玩家; WORD wCurrentUser; //当前玩家; }; //用户叫分; struct DZ_CMD_S_CallScore { uint16 wCurrentUser; //当前玩家; uint16 wCallScoreUser; //叫分玩家; uint8 cbCallScore; //当前叫分; }; //庄家信息; struct DZ_CMD_S_BankerInfo { uint16 wBankerUser; //庄家玩家; uint16 wCurrentUser; //当前玩家; bool bCallCard; //是否叫牌; uint16 wFriendChairID[DZ_GAME_PLAYER]; //伙伴玩家; uint8 cbFirendCardData; //定伙伴牌; }; //庄家叫了一张牌; struct DZ_CMD_S_CallCard { uint8 cbCardData; //牌值; uint16 wCurrentUser; //当前玩家; bool bMustOutCard0x34; //是否必须出黑桃四; }; //用户出牌; struct DZ_CMD_S_OutCard { bool isLastCard; //最后一手牌; int cbCardType; //出牌类型; uint8 cbCardCount; //出牌数目; uint16 wCurrentUser; //当前玩家; uint16 wOutCardUser; //出牌玩家; uint8 cbCardData[DZ_MAX_COUNT]; //扑克列表; }; //放弃出牌; struct DZ_CMD_S_PassCard { uint8 cbTurnOver; //一轮结束; uint16 wCurrentUser; //当前玩家; uint16 wPassCardUser; //放弃玩家; }; //排名; struct DZ_CMD_S_Ranking { uint16 wChairID; //坐位号; uint8 cbRanking; //排名; }; //游戏结束; struct DZ_CMD_S_GameConclude { bool isPrivateEnd; //私人场结束; DZ_GAME_END_TYPE iGameEndType; //结束类型; uint16 wFriendChairID[DZ_GAME_PLAYER]; //伙伴玩家; //游戏成绩; SCORE lGameScore[DZ_GAME_PLAYER]; //游戏积分; SCORE lBombScore[DZ_GAME_PLAYER]; //游戏积分 SCORE lAllScore[DZ_GAME_PLAYER]; //游戏积分 //扑克信息; uint8 cbCardCount[DZ_GAME_PLAYER]; //扑克数目; uint8 cbCardData[DZ_GAME_PLAYER][DZ_MAX_COUNT]; //扑克列表; //排名信息; uint16 wWinOrder[DZ_GAME_PLAYER]; }; //托管; struct DZ_CMD_S_Trustee { bool bTrustee; //是否托管; uint16 wTrusteeUser; //托管用户; }; ////////////////////////////////////////////////////////////////////////////////// //命令定义; #define DZ_SUB_C_OUT_CARD 1 //用户出牌; #define DZ_SUB_C_PASS_CARD 2 //用户放弃; #define DZ_SUB_C_TRUSTEE 3 //用户托管; #define DZ_SUB_C_CALL_SCORE 4 //用户叫分; //用户叫分; struct DZ_CMD_C_CallScore { uint8 cbCallScore; //叫分数目; }; //玩家给庄家牌; struct DZ_CMD_C_GiveCard { uint8 cbCardData; }; //用户出牌; struct DZ_CMD_C_OutCard { bool isLastCard; //最后一手牌; int cbCardType; //牌类型; uint8 cbCardCount; //出牌数目; uint8 cbCardData[DZ_MAX_COUNT]; //扑克数据; }; //托管; struct DZ_CMD_C_Trustee { bool bTrustee; //托管标志; }; ////////////////////////////////////////////////////////////////////////////////// enum eDZRuleEnum { eDZRuleEnum_CardAA = 1 << 0, //AA; eDZRuleEnum_NO_JOKER = 1 << 1, //不带王; eDZRuleEnum_MINGBIAN = 1 << 2, //明边; eDZRuleEnum_TO_TWO = 1 << 3, //只打二游; eDZRuleEnum_NO_BOMB = 1 << 4, //无炸摊牌; eDZRuleEnum_LOTTERY_7 = 1 << 5, //开奖7; eDZRuleEnum_LOTTERY_10 = 1 << 6, //开奖10; eDZRuleEnum_LOTTERY_J = 1 << 7, //开奖J; eDZRuleEnum_LOTTERY_K = 1 << 8, //开奖K; eDZRuleEnum_EIGHT_BOMB = 1 << 9, //八炸摊牌; }; // 游戏解散结构 struct DZ_CMD_S_Private_End_Info { uint16 wMainChairID; // 房主; uint8 cbFinishCout; // 完成局数; SCORE lAllScore[DZ_GAME_PLAYER]; // 总成绩; SCORE lDetails[DZ_GAME_PLAYER][16]; // 成绩明细(目前开房最大16局); void StreamValue(DataStream& kData, bool bSend) { if (bSend) { kData.pushValue(this, sizeof(DZ_CMD_S_Private_End_Info)); } else { kData.popValue(this, sizeof(DZ_CMD_S_Private_End_Info)); } } }; ////////////////////////////////////////////////////////////////////////////////// //声音文件 #define DZ_BUJIAO_FILE "Games/DaZha/Sound/%d/bujiao.mp3" //不叫; #define DZ_JIAO_FEN_FILE "Games/DaZha/Sound/%d/score%d.mp3" //叫分; #define DZ_DANZHANG_FILE "Games/DaZha/Sound/%d/%d.mp3" //单张牌; #define DZ_LIANGZHANG_FILE "Games/DaZha/Sound/%d/dui%d.mp3" //对子; #define DZ_FEIJI_FILE "Games/DaZha/Sound/%d/feiji.mp3" //飞机; #define DZ_3ZHANG_FILE "Games/DaZha/Sound/%d/sanzhang.mp3" //三张; #define DZ_3DAI1_FILE "Games/DaZha/Sound/%d/three1.mp3" //三带一; #define DZ_3DAI2_FILE "Games/DaZha/Sound/%d/three2.mp3" //三带二; #define DZ_4DAI2_FILE "Games/DaZha/Sound/%d/four2.mp3" //四带二; #define DZ_ZHADAN_FILE "Games/DaZha/Sound/%d/bomb.mp3" //炸弹; #define DZ_SHUNZI_FILE "Games/DaZha/Sound/%d/shunzi.mp3" //顺子; #define DZ_LIANDUI_FILE "Games/DaZha/Sound/%d/duiduishun.mp3" //连对; #define DZ_PASS_FILE "Games/DaZha/Sound/%d/pass%d.mp3" //过; #define DZ_MINGPAI_FILE "Games/DaZha/Sound/%d/mingpai.mp3" //明牌; #define DZ_HUOJIAN_FILE "Games/DaZha/Sound/%d/huojian.mp3" //火箭; #define DZ_FEIJI_EFF_FILE "Games/DaZha/Sound/feiji_eff.mp3" //飞机; #define DZ_HUOJIAN_EFF_FILE "Games/DaZha/Sound/huojian_eff.mp3" //火箭; #define DZ_ZHADAN_EFF_FILE "Games/DaZha/Sound/zhadan_eff.mp3" //炸弹; #define DZ_SHUNZI_EFF_FILE "Games/DaZha/Sound/shunzi_eff.mp3" //顺子; #define DZ_LIANDUI_EFF_FILE "Games/DaZha/Sound/liandui_eff.mp3" //连对; #define DZ_ZUIHOUYIZHANG_FILE "Games/DaZha/Sound/%d/endCard.mp3" //最后一手; #define DZ_WIN_EFF_FILE "Games/DaZha/Sound/win.mp3" //胜利; #define DZ_LOSE_EFF_FILE "Games/DaZha/Sound/lose.mp3" //失败; #define DZ_FAPAI_EFF_FILE "Games/DaZha/Sound/fapai_eff.mp3" //发牌; #define DZ_DIANPAI_EFF_FILE "Games/DaZha/Sound/dianpai_eff.mp3" //点击; #define DZ_CHUPAI_EFF_FILE "Games/DaZha/Sound/chupai_eff.mp3" //出牌; #define DZ_BACKMUSIC_FILE "Games/DaZha/Sound/backmusic.mp3" //背景; //图片文件 #define DZ_END_TITLE_WIN_PNG_FILE "Games/DaZha/Result/sprTitleWin.png" //胜利; #define DZ_END_TITLE_LOSE_PNG_FILE "Games/DaZha/Result/sprTitleLose.png" //输; #define DZ_SHENG_PNG_FILE "Games/DaZha/Result/sprWin.png" //胜利; #define DZ_SHU_PNG_FILE "Games/DaZha/Result/sprLose.png" //输; #define DZ_TIPS_ONLY_PASS_PNG_FILE "Games/DaZha/Table/tips_onlypass.png" //没有大过上家的牌; #define DZ_TIPS_OUT_ERROR_PNG_FILE "Games/DaZha/Table/tips_outerror.png" //出牌类型错误; #define DZ_TIPS_CHOOSECARD_PNG_FILE "Games/DaZha/Table/tips_choosecard.png" //选择要出的牌; #define DZ_LANDLORD_FLAG_PNG_FILE "Games/DaZha/Table/landlord.png" //地主标志; #define DZ_FARMER_FLAG_PNG_FILE "Games/DaZha/Table/farmer.png" //农民标志; #define DZ_PASS_SCORE_PNG_FILE "Games/DaZha/Table/player_bubao.png" //不包; #define DZ_READY_PNG_FILE "Games/DaZha/Table/player_ready.png" //准备; #define DZ_PASS_CARD_PNG_FILE "Games/DaZha/Table/player_pass.png" //不出; //字体文件 #define DZ_WIN_NUMBER_FNT_FILE "Games/DaZha/Fonts/win_number.fnt" //赢数字; #define DZ_LOSE_NUMBER_FNT_FILE "Games/DaZha/Fonts/lose_number.fnt" //输数字; #pragma pack() #endif