352 lines
12 KiB
C
352 lines
12 KiB
C
#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 |