302 lines
8.7 KiB
C
302 lines
8.7 KiB
C
#ifndef _CMD_SSS_GAME_HEAD_FILE_
|
||
#define _CMD_SSS_GAME_HEAD_FILE_
|
||
|
||
#include "Types.h"
|
||
#include "DataStream.h"
|
||
|
||
#pragma pack(1)
|
||
|
||
//游戏属性;
|
||
#define SSS_KIND_ID 502 //游戏ID;
|
||
#define SSS_GAME_PLAYER 4 //游戏人数;
|
||
#define SSS_GAME_NAME ("十三张") //游戏名字;
|
||
#define SSS_MAX_COUNT 13 //扑克数目;
|
||
#define SSS_FULL_COUNT 52 //最大牌库数量;
|
||
#define SSS_HAND_CARD_COUNT 13 //扑克数目;
|
||
|
||
#define SSS_GROUP_COUNT 3 //分组数量;
|
||
#define SSS_MIN_ITEM_COUNT 3 //最小牌数量;
|
||
#define SSS_MAX_ITEM_COUNT 5 //最大牌数量;
|
||
|
||
//扑克掩码;
|
||
#define SSS_MASK_VALUE 0x0F //数值掩码;
|
||
#define SSS_MASK_COLOR 0xF0 //花色掩码;
|
||
|
||
|
||
//玩家相关定义;
|
||
#define SSS_VIEW_TOP_ID 0 //顶部玩家;
|
||
#define SSS_VIEW_LEFT_ID 1 //左侧玩家;
|
||
#define SSS_VIEW_SELF_ID 2 //自己玩家;
|
||
#define SSS_VIEW_RIGHT_ID 3 //右侧玩家;
|
||
|
||
//游戏状态;
|
||
#define SSS_GS_WK_FREE GAME_STATUS_FREE //等待开始;
|
||
#define SSS_GS_WK_SEND_CARD GAME_STATUS_PLAY //发牌;
|
||
#define SSS_GS_WK_ROB_BANKER (GAME_STATUS_PLAY + 1) //抢庄;
|
||
#define SSS_GS_WK_USER_CHIP (GAME_STATUS_PLAY + 2) //下注;
|
||
#define SSS_GS_WK_OPEN_CARD (GAME_STATUS_PLAY + 3) //开牌;
|
||
#define SSS_GS_WK_COMPARE_CARD (GAME_STATUS_PLAY + 4) //比牌;
|
||
|
||
|
||
//开房规则枚举;
|
||
enum tagSSSGameRuleEnum
|
||
{
|
||
eSSSGameRuleCardAA = 1, //房卡AA;
|
||
eSSSGameRuleSend7Cards = 1 << 1, //发7张牌;
|
||
eSSSGameRuleRobBanker = 1 << 2, //抢庄;
|
||
eSSSGameRuleTurnBanker = 1 << 3, //轮流坐庄;
|
||
eSSSGameRuleFixBanker = 1 << 4, //霸王庄;
|
||
eSSSGameRuleClassic = 1 << 5 //经典玩法;
|
||
};
|
||
|
||
//////////////////////////////////////////////////////////////////////////
|
||
//手牌状态;
|
||
enum tagSSSHandCardStatusEnum
|
||
{
|
||
SSS_HAND_STATUS_NULL, //旁观;
|
||
SSS_HAND_STATUS_GIVEUP, //放弃;
|
||
SSS_HAND_STATUS_DISORDER, //散牌;
|
||
SSS_HAND_STATUS_SORTED, //排序牌;
|
||
};
|
||
|
||
//服务器命令结构;
|
||
#define SSS_SUB_S_GAME_START 101 //游戏开始;
|
||
#define SSS_SUB_S_START_ROB 102 //开始抢庄;
|
||
#define SSS_SUB_S_USER_ROB 103 //玩家抢庄;
|
||
#define SSS_SUB_S_START_CHIP 104 //开始下注;
|
||
#define SSS_SUB_S_USER_CHIP 105 //玩家下注;
|
||
#define SSS_SUB_S_SEND_LEFT_CARD 106 //发送剩下的牌;
|
||
#define SSS_SUB_S_START_OPEN 107 //开始开牌;
|
||
#define SSS_SUB_S_OPEN_CARD 108 //玩家摊牌;
|
||
#define SSS_SUB_S_CLASSIC_CMP_CARD 109 //经典玩法比牌;
|
||
#define SSS_SUB_S_BANKER_CMP_CARD 110 //带庄家玩法比牌;
|
||
#define SSS_SUB_S_GAME_END 111 //游戏结束;
|
||
|
||
|
||
//游戏状态;
|
||
typedef struct SSS_CMD_S_StatusFree
|
||
{
|
||
uint16 wRobBankerTime; //抢庄时间;
|
||
uint16 wUserChipTime; //下注时间;
|
||
uint16 wBuildCardTime; //配牌时间;
|
||
uint8 cbHandStatus[SSS_GAME_PLAYER]; //手牌状态;
|
||
}tagBaseStatus;
|
||
|
||
//抢庄状态;
|
||
struct SSS_CMD_S_StatusRob
|
||
{
|
||
tagBaseStatus BaseStatus;
|
||
uint8 cbRobStatus[SSS_GAME_PLAYER]; //抢庄状态 0:没操作,1:不抢,2:抢;
|
||
|
||
uint8 cbCardCount; //扑克数量;
|
||
uint8 cbHandCardData[SSS_HAND_CARD_COUNT]; //手牌数据;
|
||
};
|
||
|
||
//下注状态;
|
||
struct SSS_CMD_S_StatusChip
|
||
{
|
||
tagBaseStatus BaseStatus;
|
||
uint16 wBankerUser; //庄家用户;
|
||
uint8 cbChipStatus[SSS_GAME_PLAYER]; //下注状态;
|
||
int lUserChipScore[SSS_GAME_PLAYER]; //下注分数;
|
||
|
||
uint8 cbCardCount; //扑克数量;
|
||
uint8 cbHandCardData[SSS_HAND_CARD_COUNT]; //手牌数据;
|
||
};
|
||
|
||
//发牌状态;
|
||
struct SSS_CMD_S_StatusSendCard
|
||
{
|
||
tagBaseStatus BaseStatus;
|
||
|
||
uint16 wBankerUser; //庄家用户;
|
||
bool bSendOver; //发牌结束;
|
||
uint16 wSpecialType; //特殊牌型;
|
||
uint8 cbCardCount; //扑克数量;
|
||
uint8 cbHandCardData[SSS_HAND_CARD_COUNT]; //扑克牌数据;
|
||
};
|
||
|
||
//开牌状态;
|
||
struct SSS_CMD_S_StatusOpen
|
||
{
|
||
tagBaseStatus BaseStatus;
|
||
|
||
uint16 wBankerUser; //庄家用户;
|
||
uint16 wSpecialType; //特殊牌型;
|
||
int lUserChipScore[SSS_GAME_PLAYER]; //下注分数;
|
||
uint8 cbHandCardData[SSS_HAND_CARD_COUNT]; //扑克牌数据;
|
||
};
|
||
|
||
//庄家玩家比牌;
|
||
struct SSS_CMD_S_BankerCompareCard
|
||
{
|
||
uint8 cbHandStatus[SSS_GAME_PLAYER]; //手牌状态;
|
||
uint8 cbFrontCard[SSS_GAME_PLAYER][3]; //玩家前墩;
|
||
uint8 cbMidCard[SSS_GAME_PLAYER][5]; //玩家中墩;
|
||
uint8 cbBackCard[SSS_GAME_PLAYER][5]; //玩家后墩;
|
||
uint16 wHandCardType[SSS_GAME_PLAYER][3]; //每一道牌类型;
|
||
|
||
uint8 cbBankerCmpResult[SSS_GAME_PLAYER][3]; //庄家其他玩家比牌每一道结果;
|
||
uint8 cbOtherCmResult[SSS_GAME_PLAYER][3]; //其他玩家与庄家比牌每一道结果;
|
||
};
|
||
|
||
//带庄家玩法比牌状态;
|
||
struct SSS_CMD_S_StatusBankerCompare
|
||
{
|
||
uint16 wRobBankerTime; //抢庄时间;
|
||
uint16 wUserChipTime; //下注时间;
|
||
uint16 wBuildCardTime; //配牌时间;
|
||
bool bCompareOver; //比牌结束;
|
||
uint16 wBankerUser; //庄家用户;
|
||
|
||
int lUserChipScore[SSS_GAME_PLAYER]; //下注分数;
|
||
|
||
SSS_CMD_S_BankerCompareCard CompareStatus; //比牌状态;
|
||
};
|
||
|
||
//玩家比牌;
|
||
struct SSS_CMD_S_ClassicCompareCard
|
||
{
|
||
uint8 cbHandStatus[SSS_GAME_PLAYER]; //手牌状态;
|
||
uint16 wSpecialType[SSS_GAME_PLAYER]; //特殊牌型;
|
||
int nSpecialCompareResult[SSS_GAME_PLAYER]; //特殊牌型比较结果;
|
||
uint8 cbFrontCard[SSS_GAME_PLAYER][SSS_MIN_ITEM_COUNT]; //玩家前墩;
|
||
uint8 cbMidCard[SSS_GAME_PLAYER][SSS_MAX_ITEM_COUNT]; //玩家中墩;
|
||
uint8 cbBackCard[SSS_GAME_PLAYER][SSS_MAX_ITEM_COUNT]; //玩家后墩;
|
||
uint16 wHandCardType[SSS_GAME_PLAYER][SSS_GROUP_COUNT]; //每一道牌类型;
|
||
int nCompareResult[SSS_GAME_PLAYER][SSS_GROUP_COUNT]; //每一道比较结果;
|
||
bool bDaoshui[SSS_GAME_PLAYER]; //倒水;
|
||
int aryShootDaoShu[SSS_GAME_PLAYER][SSS_GAME_PLAYER]; //用来计算一家和另一家打枪要加的水数;
|
||
uint8 aryShootState[6][2]; //0为赢的玩家,1为输的玩家,值为255为无效玩家;
|
||
uint8 cbShootCount; //几家打枪;
|
||
int cbThreeKillResult[SSS_GAME_PLAYER]; //全垒打加减分;
|
||
uint16 wAllUser; //全垒打用户;
|
||
};
|
||
|
||
//比牌状态;
|
||
struct SSS_CMD_S_StatusClassicCompare
|
||
{
|
||
uint16 wRobBankerTime; //抢庄时间;
|
||
uint16 wUserChipTime; //下注时间;
|
||
uint16 wBuildCardTime; //配牌时间;
|
||
bool bCompareOver; //比牌结束;
|
||
|
||
SSS_CMD_S_ClassicCompareCard CompareStatus; //比牌状态;
|
||
};
|
||
|
||
//////////////////////////////////////////////////////////////////////////
|
||
|
||
//游戏开始;
|
||
struct SSS_CMD_S_GameStart
|
||
{
|
||
uint16 wBankerChairID; //庄家ID;
|
||
uint16 wSpecialType; //特殊牌型;
|
||
uint8 cbBossCount; //王数量;
|
||
|
||
uint8 cbCardCount; //扑克数量;
|
||
uint8 cbHandCardData[SSS_HAND_CARD_COUNT]; //扑克数据;
|
||
uint8 cbHandStatus[SSS_GAME_PLAYER]; //手牌状态;
|
||
};
|
||
|
||
//玩家抢庄;
|
||
struct SSS_CMD_S_UserRob
|
||
{
|
||
uint16 wRobUser; //抢庄玩家;
|
||
bool bRobResult; //是否抢庄;
|
||
};
|
||
|
||
//开始下注;
|
||
struct SSS_CMD_S_StartChip
|
||
{
|
||
uint16 wBankerUser; //庄家用户;
|
||
};
|
||
|
||
//玩家下注;
|
||
struct SSS_CMD_S_UserChip
|
||
{
|
||
uint16 wChipUser; //下注玩家;
|
||
int lChipScore; //下注分数;
|
||
};
|
||
|
||
//玩家剩余的牌;
|
||
struct SSS_CMD_S_SendLeftCard
|
||
{
|
||
uint8 cbLeftCardCount; //剩余的扑克数量;
|
||
uint8 cbLeftCardData[SSS_HAND_CARD_COUNT]; //剩余的扑克数据;
|
||
uint8 cbHandCardData[SSS_HAND_CARD_COUNT]; //扑克数据;
|
||
};
|
||
|
||
//玩家摊牌;
|
||
struct SSS_CMD_S_OpenCard
|
||
{
|
||
uint16 wChairID; //摊牌玩家;
|
||
};
|
||
|
||
//游戏结束;
|
||
struct SSS_CMD_S_GameEnd
|
||
{
|
||
bool isPrivateEnd; //私人场是否结束;
|
||
uint8 cbHandStatus[SSS_GAME_PLAYER]; //手牌状态;
|
||
SCORE lGameScore[SSS_GAME_PLAYER]; //游戏积分;
|
||
};
|
||
|
||
//////////////////////////////////////////////////////////////////////////
|
||
//客户端命令结构;
|
||
#define SSS_SUB_C_GETBANK 301 //抢庄命令;
|
||
#define SSS_SUB_C_SEND_OVER 302 //发牌结束;
|
||
#define SSS_SUB_C_OPEN_CARD 303 //玩家摊牌;
|
||
#define SSS_SUB_C_COMPARE_OVER 304 //比牌完成;
|
||
|
||
#define SSS_SUB_C_ROB_BANKER 305 //玩家抢庄;
|
||
#define SSS_SUB_C_CHIP_SCORE 306 //玩家下注;
|
||
|
||
//用户叫庄;
|
||
struct SSS_CMD_C_RobBanker
|
||
{
|
||
bool bRob; //是否抢庄;
|
||
};
|
||
|
||
//用户加注;
|
||
struct SSS_CMD_C_ChipScore
|
||
{
|
||
int lScore; //下注数目;
|
||
};
|
||
|
||
//分段信息;
|
||
struct SSS_CMD_C_OpenCard
|
||
{
|
||
uint8 cbFrontCard[SSS_MIN_ITEM_COUNT]; //前墩扑克;
|
||
uint8 cbMidCard[SSS_MAX_ITEM_COUNT]; //中墩扑克;
|
||
uint8 cbBackCard[SSS_MAX_ITEM_COUNT]; //后墩扑克;
|
||
uint16 wSpecialType; //是否是特殊牌;
|
||
};
|
||
//////////////////////////////////////////////////////////////////////////
|
||
|
||
// 游戏解散结构;
|
||
struct SSS_CMD_S_Private_End_Info
|
||
{
|
||
uint8 aryActiveStatus[SSS_GAME_PLAYER]; //手牌状态;
|
||
SCORE lUserScore[SSS_GAME_PLAYER]; //玩家分数;
|
||
uint8 aryWinTimes[SSS_GAME_PLAYER]; //赢次数;
|
||
uint8 aryLoseTimes[SSS_GAME_PLAYER]; //输次数;
|
||
uint8 aryShootTimes[SSS_GAME_PLAYER]; //打枪次数;
|
||
uint8 aryKillAllTimes[SSS_GAME_PLAYER]; //全垒打次数;
|
||
|
||
void StreamValue(DataStream& kData, bool bSend)
|
||
{
|
||
if (bSend)
|
||
{
|
||
kData.pushValue(this, sizeof(SSS_CMD_S_Private_End_Info));
|
||
}
|
||
else
|
||
{
|
||
kData.popValue(this, sizeof(SSS_CMD_S_Private_End_Info));
|
||
}
|
||
}
|
||
};
|
||
|
||
//////////////////////////////////////////////////////////////////////////////////
|
||
|
||
#pragma pack()
|
||
|
||
#endif |