#ifndef CMD_PDK_GAME_HEAD_FILE #define CMD_PDK_GAME_HEAD_FILE #include "Types.h" #include "DataStream.h" #pragma pack(1) ////////////////////////////////////////////////////////////////////////////////// //服务定义 //游戏属性 #define PDK_KIND_ID 210 //游戏 I D #define PDK_GAME_NAME ("跑得快") //游戏名字 //组件属性 #define PDK_GAME_PLAYER 3 //游戏人数 ////////////////////////////////////////////////////////////////////////////////// //玩家相关定义 #define PDK_LEFT_VIEW_ID 0 //左边玩家 #define PDK_SELF_VIEW_ID 1 //自己玩家 #define PDK_RIGHT_VIEW_ID 2 //右边玩家 #define PDK_EMPTY_VIEW_ID 65535 //空视图 //////////////////////////////////////////////////////////////////////////////////// //数目定义 #define PDK_MAX_COUNT 16 //最大数目 #define PDK_FULL_COUNT 48 //全牌数目 #define PDK_FULL_COUNT_15 45 //全牌数目 #define PDK_MAX_MUSTCARD_COUT 11 //必出牌数目 //逻辑数目 #define PDK_NORMAL_COUNT 16 //常规数目 #define PDK_DISPATCH_COUNT 48 //派发数目 ////////////////////////////////////////////////////////////////////////////////// //状态定义 #define PDK_GAME_SCENE_FREE GAME_STATUS_FREE //等待开始 #define PDK_GAME_SCENE_SEND GAME_STATUS_PLAY //发牌状态 #define PDK_GAME_SCENE_CALL GAME_STATUS_PLAY+1 //叫分状态 #define PDK_GAME_SCENE_PLAY GAME_STATUS_PLAY+2 //游戏进行 //空闲状态 struct PDK_CMD_S_StatusFree { //时间信息 uint8 cbTimeOutCard; //出牌时间 uint8 cbTimeCallScore; //叫分时间 uint8 cbTimeStartGame; //开始时间 uint8 cbTimeHeadOutCard; //首出时间 }; //叫分状态 struct PDK_CMD_S_StatusSend { //时间信息 uint8 cbTimeOutCard; //出牌时间 uint8 cbTimeCallScore; //叫分时间 uint8 cbTimeStartGame; //开始时间 uint8 cbTimeHeadOutCard; //首出时间 uint32 dwGameRule; //游戏规则; bool bActiveStatus[PDK_GAME_PLAYER]; //玩家状态; //游戏信息 uint8 cbHandCardCount[PDK_GAME_PLAYER]; //手牌数量; uint8 cbHandCardData[PDK_NORMAL_COUNT]; //手上扑克 }; //叫分状态 struct PDK_CMD_S_StatusCall { //时间信息 uint8 cbTimeOutCard; //出牌时间 uint8 cbTimeCallScore; //叫分时间 uint8 cbTimeStartGame; //开始时间 uint8 cbTimeHeadOutCard; //首出时间 uint32 dwGameRule; //游戏规则; bool bActiveStatus[PDK_GAME_PLAYER]; //玩家状态; //比出牌信息; uint16 wCurrentUser; //比出牌玩家; uint8 cbMustOutCard; //必出牌信息; //游戏信息 bool bScoreInfo[PDK_GAME_PLAYER]; //叫分信息 bool bScoreActive[PDK_GAME_PLAYER]; //叫分操作; uint8 cbHandCardCount[PDK_GAME_PLAYER]; //手牌数量; uint8 cbHandCardData[PDK_NORMAL_COUNT]; //手上扑克 }; //游戏状态 struct PDK_CMD_S_StatusPlay { //时间信息 uint8 cbTimeOutCard; //出牌时间 uint8 cbTimeCallScore; //叫分时间 uint8 cbTimeStartGame; //开始时间 uint8 cbTimeHeadOutCard; //首出时间 uint32 dwGameRule; //游戏规则; bool bActiveStatus[PDK_GAME_PLAYER]; //玩家状态; //游戏变量 uint16 wBankerUser; //庄家用户 uint16 wCurrentUser; //当前玩家 uint8 cbMustOutCard; //必出牌信息; //出牌信息 uint16 wTurnWiner; //胜利玩家 uint8 cbTurnCardCount; //出牌数目 uint8 cbTurnCardData[PDK_MAX_COUNT]; //出牌数据 //扑克信息 uint8 cbHandCardData[PDK_MAX_COUNT]; //手上扑克 uint8 cbHandCardCount[PDK_GAME_PLAYER]; //扑克数目 }; ////////////////////////////////////////////////////////////////////////////////// //命令定义 #define PDK_SUB_S_GAME_START 100 //游戏开始 #define PDK_SUB_S_CALL_SCORE 101 //用户叫分 #define PDK_SUB_S_BANKER_INFO 102 //庄家信息 #define PDK_SUB_S_OUT_CARD 103 //用户出牌 #define PDK_SUB_S_PASS_CARD 104 //用户放弃 #define PDK_SUB_S_GAME_CONCLUDE 105 //游戏结束 #define PDK_SUB_S_SET_BASESCORE 106 //设置基数 #define PDK_SUB_S_CHEAT_CARD 107 //作弊扑克 #define PDK_SUB_S_TRUSTEE 108 //托管 #define PDK_SUB_S_START_SCORE 109 //开始叫分 //发送扑克 struct PDK_CMD_S_GameStart { uint32 dwGameRule; //游戏规则; uint16 wStartUser; //开始玩家 bool bActiveStatus[PDK_GAME_PLAYER]; //玩家状态; uint8 cbCardCount[PDK_GAME_PLAYER]; //扑克牌数量; uint8 cbCardData[PDK_NORMAL_COUNT]; //扑克列表 }; //录像开始; struct PDK_CMD_Record_GameStart { uint32 dwGameRule; //游戏规则; uint16 wStartUser; //开始玩家 uint16 wCurrentUser; //当前玩家 bool bActiveStatus[PDK_GAME_PLAYER]; //玩家状态; }; //用户叫分 struct PDK_CMD_S_CallScore { uint16 wCallScoreUser; //叫分玩家 bool bCurrentScore; //当前叫分 }; //通知抢庄; struct PDK_CMD_S_SendCallScore { uint16 wBankerUser; //庄家玩家 uint8 cbMustOutCard; //必出牌; }; //庄家信息 struct PDK_CMD_S_BankerInfo { uint16 wBankerUser; //庄家玩家 uint16 wCurrentUser; //当前玩家 bool bShowMustOutCard; //是否显示必打牌 uint8 cbMustOutCard; //必出牌; }; //用户出牌 struct PDK_CMD_S_OutCard { uint8 cbCardCount; //出牌数目 uint16 wCurrentUser; //当前玩家 uint16 wOutCardUser; //出牌玩家 bool bLastCard; //最后一手 uint8 cbCardData[PDK_MAX_COUNT]; //扑克列表 }; //放弃出牌 struct PDK_CMD_S_PassCard { uint8 cbTurnOver; //一轮结束 uint16 wCurrentUser; //当前玩家 uint16 wPassCardUser; //放弃玩家 }; //游戏结束 struct PDK_CMD_S_GameConclude { //积分变量 int lCellScore; //单元积分 bool bActiveStatus[PDK_GAME_PLAYER]; //玩家状态; SCORE lGameScore[PDK_GAME_PLAYER]; //游戏积分 SCORE lBombScore[PDK_GAME_PLAYER]; //游戏积分 SCORE lAllScore[PDK_GAME_PLAYER]; //总成绩; //春天标志 uint8 bChunTian; //春天标志 uint8 bFanChunTian; //春天标志 //炸弹信息 uint8 cbBombCount; //炸弹个数 uint8 cbEachBombCount[PDK_GAME_PLAYER]; //炸弹个数 //游戏信息 uint8 cbBankerScore; //叫分数目 uint8 cbCardCount[PDK_GAME_PLAYER]; //扑克数目 uint8 cbHandCardData[PDK_FULL_COUNT]; //扑克列表 }; //托管 struct PDK_CMD_S_Trustee { uint16 wTrusteeUser; //托管玩家 uint8 bTrustee; //托管标志 }; ////////////////////////////////////////////////////////////////////////////////// //命令定义 #define PDK_SUB_C_CALL_SCORE 1 //用户叫分 #define PDK_SUB_C_OUT_CARD 2 //用户出牌 #define PDK_SUB_C_PASS_CARD 3 //用户放弃 #define PDK_SUB_C_TRUSTEE 4 //用户托管 //用户叫分 struct PDK_CMD_C_CallScore { bool bCallScore; //叫分数目 }; //用户出牌 struct PDK_CMD_C_OutCard { uint8 cbCardCount; //出牌数目 uint8 cbCardData[PDK_MAX_COUNT]; //扑克数据 }; //托管 struct PDK_CMD_C_Trustee { bool bTrustee; //托管标志 }; ////////////////////////////////////////////////////////////////////////////////// enum ePDKRuleEnum { ePDKRuleEnum_CardAA = 1, //房卡AA; ePDKRuleEnum_HandCardCount = 1 << 1, //手牌张数 1是16张,0是15张; ePDKRuleEnum_OutCardRule = 1 << 2, //出牌规则 1是红桃3先出,0是首局红桃3出牌,下局胜者出牌; ePDKRuleEnum_MustOutCard = 1 << 3, //有牌必须出; ePDKRuleEnum_3ABomb = 1 << 4, //3个A是炸弹; ePDKRuleEnum_FOUR_TAKE_THREE = 1 << 5, //四带三; ePDKRuleEnum_DADU = 1 << 6, //打独; ePDKRuleEnum_Bomb_Score = 1 << 7, //炸弹+10; ePDKRuleEnum_PlayCount = 1 << 8, //游戏人数 1是3人,0是2人; }; // 游戏解散结构 struct PDK_CMD_S_Private_End_Info { uint16 wMainChairID; // 房主 uint8 cbFinishCout; // 完成局数 bool aryActiveStatus[PDK_GAME_PLAYER]; // 手牌状态; SCORE lAllScore[PDK_GAME_PLAYER]; // 总成绩 SCORE lDetails[PDK_GAME_PLAYER][16]; // 成绩明细(目前开房最大16局) void StreamValue(DataStream& kData, bool bSend) { if (bSend) { kData.pushValue(this, sizeof(PDK_CMD_S_Private_End_Info)); } else { kData.popValue(this, sizeof(PDK_CMD_S_Private_End_Info)); } } }; ////////////////////////////////////////////////////////////////////////////////// //#define PDK_LEAVE_GAME "PDK_LeaveGame" //离开游戏 //#define PDK_WEIXIN_SHOW "PDK_WeiXinImagic" //微信分享 ////////////////////////////////////////////////////////////////////////////////// //声音文件 #define PDK_BUJIAO_FILE "Games/DDZ/Sound/%d/bujiao.mp3" #define PDK_JIAO_FEN_FILE "Games/DDZ/Sound/%d/score%d.mp3" #define PDK_DANZHANG_FILE "Games/DDZ/Sound/%d/%d.mp3" //单张牌; #define PDK_LIANGZHANG_FILE "Games/DDZ/Sound/%d/dui%d.mp3" //对子; #define PDK_FEIJI_FILE "Games/DDZ/Sound/%d/feiji.mp3" //飞机; #define PDK_3ZHANG_FILE "Games/DDZ/Sound/%d/sanzhang.mp3" //三张; #define PDK_3DAI1_FILE "Games/DDZ/Sound/%d/three1.mp3" //三带一; #define PDK_3DAI2_FILE "Games/DDZ/Sound/%d/three2.mp3" //三带二; #define PDK_4DAI2_FILE "Games/DDZ/Sound/%d/four2.mp3" //四带二; #define PDK_ZHADAN_FILE "Games/DDZ/Sound/%d/bomb.mp3" //炸弹; #define PDK_SHUNZI_FILE "Games/DDZ/Sound/%d/shunzi.mp3" #define PDK_LIANDUI_FILE "Games/DDZ/Sound/%d/duiduishun.mp3" #define PDK_PASS_FILE "Games/DDZ/Sound/%d/pass%d.mp3" //过; #define PDK_MINGPAI_FILE "Games/DDZ/Sound/%d/mingpai.mp3" #define PDK_HUOJIAN_FILE "Games/DDZ/Sound/%d/huojian.mp3" //火箭; #define PDK_FEIJI_EFF_FILE "Games/DDZ/Sound/feiji_eff.mp3" #define PDK_HUOJIAN_EFF_FILE "Games/DDZ/Sound/huojian_eff.mp3" #define PDK_ZHADAN_EFF_FILE "Games/DDZ/Sound/zhadan_eff.mp3" #define PDK_SHUNZI_EFF_FILE "Games/DDZ/Sound/shunzi_eff.mp3" #define PDK_LIANDUI_EFF_FILE "Games/DDZ/Sound/liandui_eff.mp3" #define PDK_ZUIHOUYIZHANG_FILE "Games/DDZ/Sound/%d/endCard.mp3" #define PDK_WIN_EFF_FILE "Games/DDZ/Sound/win.mp3" #define PDK_LOSE_EFF_FILE "Games/DDZ/Sound/lose.mp3" #define PDK_FAPAI_EFF_FILE "Games/DDZ/Sound/fapai_eff.mp3" #define PDK_DIANPAI_EFF_FILE "Games/DDZ/Sound/dianpai_eff.mp3" #define PDK_CHUPAI_EFF_FILE "Games/DDZ/Sound/chupai_eff.mp3" #define PDK_BACKMUSIC_FILE "Games/DDZ/Sound/backmusic.mp3" //图片文件 #define PDK_END_TITLE_WIN_PNG_FILE "Games/DDZ/Result/sprTitleWin.png" //胜利 #define PDK_END_TITLE_LOSE_PNG_FILE "Games/DDZ/Result/sprTitleLose.png" //输 #define PDK_DIZHU_SHENG_PNG_FILE "Games/DDZ/Result/sprLandlordWin.png" //地主胜利 #define PDK_NONGMIN_SHENG_PNG_FILE "Games/DDZ/Result/sprFarmerWin.png" //农民胜利 #define PDK_DIZHU_SHU_PNG_FILE "Games/DDZ/Result/sprLandlordLose.png" //地主输 #define PDK_NONGMIN_SHU_PNG_FILE "Games/DDZ/Result/sprFarmerLose.png" //农民输 #define PDK_SHENG_PNG_FILE "Games/DDZ/Result/sprWin.png" //胜利 #define PDK_SHU_PNG_FILE "Games/DDZ/Result/sprLose.png" //输 #define PDK_TIPS_ONLY_PASS_PNG_FILE "Games/DDZ/Table/tips_onlypass.png" //没有大过上家的牌 #define PDK_TIPS_OUT_ERROR_PNG_FILE "Games/DDZ/Table/tips_outerror.png" //出牌类型错误 #define PDK_TIPS_CHOOSECARD_PNG_FILE "Games/DDZ/Table/tips_choosecard.png" //选择要出的牌 #define PDK_FARMER_FLAG_PNG_FILE "Games/DDZ/Table/farmer.png" //农民标志 #define PDK_READY_PNG_FILE "Games/DDZ/Table/player_ready.png" //准备 #define PDK_PASS_CARD_PNG_FILE "Games/DDZ/Table/player_pass.png" //不出 #define PDK_CALL_SCORE_PNG_FILE "Games/PDK/Call/player_dadu.png" //叫分 #define PDK_PASS_SCORE_PNG_FILE "Games/PDK/Call/player_bubao.png" //不叫 #define PDK_LANDLORD_FLAG_PNG_FILE "Games/PDK/Table/landlord.png" //地主标志 //字体文件 #define PDK_WIN_NUMBER_FNT_FILE "Games/DDZ/Fonts/win_number.fnt" //赢数字 #define PDK_LOSE_NUMBER_FNT_FILE "Games/DDZ/Fonts/lose_number.fnt" //输数字 #pragma pack() #endif