Files
wnmj/Classes/Games/DaZha/DZ_CMD.h
2026-02-13 14:34:15 +08:00

353 lines
11 KiB
C

#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