#ifndef CMD_DDZ_GAME_HEAD_FILE #define CMD_DDZ_GAME_HEAD_FILE #include "Types.h" #include "DataStream.h" #pragma pack(1) ////////////////////////////////////////////////////////////////////////////////// //服务定义 //游戏属性 #define DDZ_KIND_ID 200 //游戏 I D #define DDZ_GAME_NAME ("斗地主") //游戏名字 //组件属性 #define DDZ_GAME_PLAYER 3 //游戏人数 ////////////////////////////////////////////////////////////////////////////////// //玩家相关定义 #define DDZ_LEFT_VIEW_ID 0 //左边玩家 #define DDZ_SELF_VIEW_ID 1 //自己玩家 #define DDZ_RIGHT_VIEW_ID 2 //右边玩家 #define DDZ_EMPTY_VIEW_ID 65535 //空视图 //////////////////////////////////////////////////////////////////////////////////// //数目定义 #define DDZ_MAX_COUNT 20 //最大数目 #define DDZ_FULL_COUNT 54 //全牌数目 #define DDZ_BACK_COUNT 3 //底牌数量 //逻辑数目 #define DDZ_NORMAL_COUNT 17 //常规数目 #define DDZ_DISPATCH_COUNT 51 //派发数目 ////////////////////////////////////////////////////////////////////////////////// //状态定义 #define GAME_SCENE_FREE GAME_STATUS_FREE //等待开始 #define GAME_SCENE_CALL GAME_STATUS_PLAY //叫分状态 #define GAME_SCENE_PLAY GAME_STATUS_PLAY+1 //游戏进行 //空闲状态 struct DDZ_CMD_S_StatusFree { //游戏属性 int lCellScore; //基础积分 //时间信息 uint8 cbTimeOutCard; //出牌时间 uint8 cbTimeCallScore; //叫分时间 uint8 cbTimeStartGame; //开始时间 uint8 cbTimeHeadOutCard; //首出时间 //历史积分 SCORE lTurnScore[DDZ_GAME_PLAYER]; //积分信息 SCORE lCollectScore[DDZ_GAME_PLAYER]; //积分信息 }; //叫分状态 struct DDZ_CMD_S_StatusCall { //时间信息 uint8 cbTimeOutCard; //出牌时间 uint8 cbTimeCallScore; //叫分时间 uint8 cbTimeStartGame; //开始时间 uint8 cbTimeHeadOutCard; //首出时间 //游戏信息 int lCellScore; //单元积分 uint16 wCurrentUser; //当前玩家 uint8 cbBankerScore; //庄家叫分 uint8 cbScoreInfo[DDZ_GAME_PLAYER]; //叫分信息 uint8 cbHandCardData[DDZ_NORMAL_COUNT]; //手上扑克 bool bUserTrustee[DDZ_GAME_PLAYER]; //托管标志 //历史积分 SCORE lTurnScore[DDZ_GAME_PLAYER]; //积分信息 SCORE lCollectScore[DDZ_GAME_PLAYER]; //积分信息 }; //游戏状态 struct DDZ_CMD_S_StatusPlay { //时间信息 uint8 cbTimeOutCard; //出牌时间 uint8 cbTimeCallScore; //叫分时间 uint8 cbTimeStartGame; //开始时间 uint8 cbTimeHeadOutCard; //首出时间 //游戏变量 int lCellScore; //单元积分 uint8 cbBombCount; //炸弹次数 uint16 wBankerUser; //庄家用户 uint16 wCurrentUser; //当前玩家 uint8 cbBankerScore; //庄家叫分 //出牌信息 uint16 wTurnWiner; //胜利玩家 uint8 cbTurnCardCount; //出牌数目 uint8 cbTurnCardData[DDZ_MAX_COUNT]; //出牌数据 //扑克信息 uint8 cbBankerCard[3]; //游戏底牌 uint8 cbHandCardData[DDZ_MAX_COUNT]; //手上扑克 uint8 cbHandCardCount[DDZ_GAME_PLAYER]; //扑克数目 //历史积分 SCORE lTurnScore[DDZ_GAME_PLAYER]; //积分信息 SCORE lCollectScore[DDZ_GAME_PLAYER]; //积分信息 bool bUserTrustee[DDZ_GAME_PLAYER]; //托管标志 }; ////////////////////////////////////////////////////////////////////////////////// //命令定义 #define DDZ_SUB_S_GAME_START 100 //游戏开始 #define DDZ_SUB_S_CALL_SCORE 101 //用户叫分 #define DDZ_SUB_S_BANKER_INFO 102 //庄家信息 #define DDZ_SUB_S_OUT_CARD 103 //用户出牌 #define DDZ_SUB_S_PASS_CARD 104 //用户放弃 #define DDZ_SUB_S_GAME_CONCLUDE 105 //游戏结束 #define DDZ_SUB_S_SET_BASESCORE 106 //设置基数 #define DDZ_SUB_S_CHEAT_CARD 107 //作弊扑克 #define DDZ_SUB_S_TRUSTEE 108 //托管 //发送扑克 struct DDZ_CMD_S_GameStart { uint16 wStartUser; //开始玩家 uint16 wCurrentUser; //当前玩家 uint8 cbValidCardData; //明牌扑克 uint8 cbValidCardIndex; //明牌位置 uint8 cbCardData[DDZ_NORMAL_COUNT]; //扑克列表 }; //录像开始; struct DDZ_CMD_Record_GameStart { WORD wStartUser; //开始玩家 WORD wCurrentUser; //当前玩家 }; //用户叫分 struct DDZ_CMD_S_CallScore { uint16 wCurrentUser; //当前玩家 uint16 wCallScoreUser; //叫分玩家 uint8 cbCurrentScore; //当前叫分 uint8 cbUserCallScore; //上次叫分 }; //庄家信息 struct DDZ_CMD_S_BankerInfo { uint16 wBankerUser; //庄家玩家 uint16 wCurrentUser; //当前玩家 uint8 cbBankerScore; //庄家叫分 uint8 cbBankerCard[3]; //庄家扑克 }; //用户出牌 struct DDZ_CMD_S_OutCard { uint8 cbCardCount; //出牌数目 uint16 wCurrentUser; //当前玩家 uint16 wOutCardUser; //出牌玩家 uint8 cbCardData[DDZ_MAX_COUNT]; //扑克列表 }; //放弃出牌 struct DDZ_CMD_S_PassCard { uint8 cbTurnOver; //一轮结束 uint16 wCurrentUser; //当前玩家 uint16 wPassCardUser; //放弃玩家 }; //游戏结束 struct DDZ_CMD_S_GameConclude { //积分变量 int lCellScore; //单元积分 SCORE lGameScore[DDZ_GAME_PLAYER]; //游戏积分 SCORE lAllScore[DDZ_GAME_PLAYER]; //总成绩; //春天标志 uint8 bChunTian; //春天标志 uint8 bFanChunTian; //春天标志 //炸弹信息 uint8 cbBombCount; //炸弹个数 uint8 cbEachBombCount[DDZ_GAME_PLAYER]; //炸弹个数 //游戏信息 uint8 cbBankerScore; //叫分数目 uint8 cbCardCount[DDZ_GAME_PLAYER]; //扑克数目 uint8 cbHandCardData[DDZ_FULL_COUNT]; //扑克列表 }; //托管 struct DDZ_CMD_S_Trustee { uint16 wTrusteeUser; //托管玩家 uint8 bTrustee; //托管标志 }; ////////////////////////////////////////////////////////////////////////////////// //命令定义 #define DDZ_SUB_C_CALL_SCORE 1 //用户叫分 #define DDZ_SUB_C_OUT_CARD 2 //用户出牌 #define DDZ_SUB_C_PASS_CARD 3 //用户放弃 #define DDZ_SUB_C_TRUSTEE 4 //用户托管 //用户叫分 struct DDZ_CMD_C_CallScore { uint8 cbCallScore; //叫分数目 }; //用户出牌 struct DDZ_CMD_C_OutCard { uint8 cbCardCount; //出牌数目 uint8 cbCardData[DDZ_MAX_COUNT]; //扑克数据 }; //托管 struct DDZ_CMD_C_Trustee { bool bTrustee; //托管标志 }; ////////////////////////////////////////////////////////////////////////////////// enum eDDZRuleEnum { eDDZRuleEnum_CardAA = 1, //房卡AA; eDDZRuleEnum_LimitMultiple8 = 1 << 1, //8倍封顶; eDDZRuleEnum_NoLimitMultiple = 1 << 2, //不封顶; }; // 游戏解散结构 struct DDZ_CMD_S_Private_End_Info { WORD wMainChairID; // 房主 BYTE cbFinishCout; // 完成局数 SCORE lAllScore[DDZ_GAME_PLAYER]; // 总成绩 SCORE lDetails[DDZ_GAME_PLAYER][16]; // 成绩明细(目前开房最大16局) void StreamValue(DataStream& kData, bool bSend) { if (bSend) { kData.pushValue(this, sizeof(DDZ_CMD_S_Private_End_Info)); } else { kData.popValue(this, sizeof(DDZ_CMD_S_Private_End_Info)); } } }; ////////////////////////////////////////////////////////////////////////////////// //#define DDZ_LEAVE_GAME "DDZ_LeaveGame" //离开游戏 //#define DDZ_WEIXIN_SHOW "DDZ_WeiXinImagic" //微信分享 ////////////////////////////////////////////////////////////////////////////////// //声音文件 #define DDZ_BUJIAO_FILE "Games/DDZ/Sound/%d/bujiao.mp3" #define DDZ_JIAO_FEN_FILE "Games/DDZ/Sound/%d/score%d.mp3" #define DDZ_DANZHANG_FILE "Games/DDZ/Sound/%d/%d.mp3" //单张牌; #define DDZ_LIANGZHANG_FILE "Games/DDZ/Sound/%d/dui%d.mp3" //对子; #define DDZ_FEIJI_FILE "Games/DDZ/Sound/%d/feiji.mp3" //飞机; #define DDZ_3ZHANG_FILE "Games/DDZ/Sound/%d/sanzhang.mp3" //三张; #define DDZ_3DAI1_FILE "Games/DDZ/Sound/%d/three1.mp3" //三带一; #define DDZ_3DAI2_FILE "Games/DDZ/Sound/%d/three2.mp3" //三带二; #define DDZ_4DAI2_FILE "Games/DDZ/Sound/%d/four2.mp3" //四带二; #define DDZ_ZHADAN_FILE "Games/DDZ/Sound/%d/bomb.mp3" //炸弹; #define DDZ_SHUNZI_FILE "Games/DDZ/Sound/%d/shunzi.mp3" #define DDZ_LIANDUI_FILE "Games/DDZ/Sound/%d/duiduishun.mp3" #define DDZ_PASS_FILE "Games/DDZ/Sound/%d/pass%d.mp3" //过; #define DDZ_MINGPAI_FILE "Games/DDZ/Sound/%d/mingpai.mp3" #define DDZ_HUOJIAN_FILE "Games/DDZ/Sound/%d/huojian.mp3" //火箭; #define DDZ_FEIJI_EFF_FILE "Games/DDZ/Sound/feiji_eff.mp3" #define DDZ_HUOJIAN_EFF_FILE "Games/DDZ/Sound/huojian_eff.mp3" #define DDZ_ZHADAN_EFF_FILE "Games/DDZ/Sound/zhadan_eff.mp3" #define DDZ_SHUNZI_EFF_FILE "Games/DDZ/Sound/shunzi_eff.mp3" #define DDZ_LIANDUI_EFF_FILE "Games/DDZ/Sound/liandui_eff.mp3" #define DDZ_ZUIHOUYIZHANG_FILE "Games/DDZ/Sound/%d/endCard.mp3" #define DDZ_WIN_EFF_FILE "Games/DDZ/Sound/win.mp3" #define DDZ_LOSE_EFF_FILE "Games/DDZ/Sound/lose.mp3" #define DDZ_FAPAI_EFF_FILE "Games/DDZ/Sound/fapai_eff.mp3" #define DDZ_DIANPAI_EFF_FILE "Games/DDZ/Sound/dianpai_eff.mp3" #define DDZ_CHUPAI_EFF_FILE "Games/DDZ/Sound/chupai_eff.mp3" #define DDZ_BACKMUSIC_FILE "Games/DDZ/Sound/backmusic.mp3" //图片文件 #define DDZ_END_TITLE_WIN_PNG_FILE "Games/DDZ/Result/sprTitleWin.png" //胜利 #define DDZ_END_TITLE_LOSE_PNG_FILE "Games/DDZ/Result/sprTitleLose.png" //输 #define DDZ_DIZHU_SHENG_PNG_FILE "Games/DDZ/Result/sprLandlordWin.png" //地主胜利 #define DDZ_NONGMIN_SHENG_PNG_FILE "Games/DDZ/Result/sprFarmerWin.png" //农民胜利 #define DDZ_DIZHU_SHU_PNG_FILE "Games/DDZ/Result/sprLandlordLose.png" //地主输 #define DDZ_NONGMIN_SHU_PNG_FILE "Games/DDZ/Result/sprFarmerLose.png" //农民输 #define DDZ_SHENG_PNG_FILE "Games/DDZ/Result/sprWin.png" //胜利 #define DDZ_SHU_PNG_FILE "Games/DDZ/Result/sprLose.png" //输 #define DDZ_TIPS_ONLY_PASS_PNG_FILE "Games/DDZ/Table/tips_onlypass.png" //没有大过上家的牌 #define DDZ_TIPS_OUT_ERROR_PNG_FILE "Games/DDZ/Table/tips_outerror.png" //出牌类型错误 #define DDZ_TIPS_CHOOSECARD_PNG_FILE "Games/DDZ/Table/tips_choosecard.png" //选择要出的牌 #define DDZ_LANDLORD_FLAG_PNG_FILE "Games/DDZ/Table/landlord.png" //地主标志 #define DDZ_FARMER_FLAG_PNG_FILE "Games/DDZ/Table/farmer.png" //农民标志 #define DDZ_CALL_SCORE_PNG_FILE "Games/DDZ/Call/player_call_%d.png" //叫分 #define DDZ_PASS_SCORE_PNG_FILE "Games/DDZ/Call/player_pass_score.png" //不叫 #define DDZ_READY_PNG_FILE "Games/DDZ/Table/player_ready.png" //准备 #define DDZ_PASS_CARD_PNG_FILE "Games/DDZ/Table/player_pass.png" //不出 //字体文件 #define DDZ_WIN_NUMBER_FNT_FILE "Games/DDZ/Fonts/win_number.fnt" //赢数字 #define DDZ_LOSE_NUMBER_FNT_FILE "Games/DDZ/Fonts/lose_number.fnt" //输数字 #pragma pack() #endif