353 lines
11 KiB
C
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 |