228 lines
6.4 KiB
C
228 lines
6.4 KiB
C
#ifndef _CMD_ZJH_GAME_HEAD_FILE_
|
|
#define _CMD_ZJH_GAME_HEAD_FILE_
|
|
|
|
#include "Types.h"
|
|
#include "DataStream.h"
|
|
|
|
#pragma pack(1)
|
|
|
|
//游戏属性;
|
|
#define ZJH_KIND_ID 6 //游戏ID;
|
|
#define ZJH_GAME_PLAYER 5 //游戏人数;
|
|
#define ZJH_GAME_NAME ("炸金花") //游戏名字;
|
|
|
|
#define ZJH_MAX_COUNT 3 //扑克数目;
|
|
|
|
//扑克掩码;
|
|
#define ZJH_MASK_VALUE 0x0F //数值掩码;
|
|
#define ZJH_MASK_COLOR 0xF0 //花色掩码;
|
|
|
|
|
|
//玩家相关定义;
|
|
#define ZJH_VIEW_L1_ID 0 //左1玩家;
|
|
#define ZJH_VIEW_L2_ID 1 //左2玩家;
|
|
#define ZJH_VIEW_SELF_ID 2 //自己玩家;
|
|
#define ZJH_VIEW_R3_ID 3 //右2玩家;
|
|
#define ZJH_VIEW_R4_ID 4 //右1玩家;
|
|
|
|
//扑克类型;
|
|
#define ZJH_CT_ERROR 0 //无效类型;
|
|
#define ZJH_CT_SINGLE 1 //单牌类型;
|
|
#define ZJH_CT_DOUBLE 2 //对子类型;
|
|
#define ZJH_CT_SHUN_ZI 3 //顺子类型;
|
|
#define ZJH_CT_JIN_HUA 4 //金花类型;
|
|
#define ZJH_CT_SHUN_JIN 5 //顺金类型;
|
|
#define ZJH_CT_BAO_ZI 6 //豹子类型;
|
|
#define ZJH_CT_SPECIAL 7 //特殊类型;
|
|
|
|
|
|
//开房规则枚举;
|
|
enum tagZJHGameRuleEnum
|
|
{
|
|
eZJHGameRuleCardAA = 1, // 房卡AA
|
|
eZJHGameRuleCompareRound1 = 1 << 1, // 1轮比牌;
|
|
eZJHGameRuleCompareRound2 = 1 << 2, // 2轮比牌;
|
|
eZJHGameRuleCompareRound3 = 1 << 3, // 3轮比牌;
|
|
eZJHGameRuleOpenCardRound5 = 1 << 4, // 5轮开牌;
|
|
eZJHGameRuleOpenCardRound10 = 1 << 5, // 10轮开牌;
|
|
eZJHGameRuleOpenCardRound15 = 1 << 6, // 15轮开牌;
|
|
eZJHGameRuleLookCardRound0 = 1 << 7, // 不闷牌;
|
|
eZJHGameRuleLookCardRound2 = 1 << 8, // 闷2轮牌;
|
|
eZJHGameRuleLookCardRound3 = 1 << 9, // 闷3轮牌;
|
|
};
|
|
|
|
|
|
//游戏状态;
|
|
#define ZJH_GS_FREE GAME_STATUS_FREE //等待开始;
|
|
#define ZJH_GS_SEND_CARD GAME_STATUS_PLAY //发牌阶段;
|
|
#define ZJH_GS_PLAYING (GAME_STATUS_PLAY + 1) //游戏状态;
|
|
|
|
//游戏进行状态;
|
|
#define ZJH_ST_GAMING_NULL 0 //旁观;
|
|
#define ZJH_ST_GAMING_HIDDEN 1 //暗牌;
|
|
#define ZJH_ST_GAMING_LOOK 2 //看牌;
|
|
#define ZJH_ST_GAMING_LOSE 3 //比牌输;
|
|
#define ZJH_ST_GAMING_GIVEUP 4 //放弃;
|
|
|
|
//操作类型;
|
|
#define ZJH_OPERATE_NULL 0x00 //无效;
|
|
#define ZJH_OPERATE_GIVEUP 0x01 //放弃;
|
|
#define ZJH_OPERATE_LOOK 0x02 //看牌;
|
|
#define ZJH_OPERATE_FOLLOW 0x04 //跟注;
|
|
#define ZJH_OPERATE_ADD_CHIP 0x08 //加注;
|
|
#define ZJH_OPERATE_COMPARE_CARD 0x10 //比牌;
|
|
|
|
//服务器命令码;
|
|
#define ZJH_SUB_S_GAME_START 100 //游戏开始;
|
|
#define ZJH_SUB_S_START_CHIP 101 //开始下注;
|
|
#define ZJH_SUB_S_GIVE_UP 102 //放弃跟注;
|
|
#define ZJH_SUB_S_USER_CHIP 103 //加注结果;
|
|
#define ZJH_SUB_S_LOOK_CARD 104 //看牌跟注;
|
|
#define ZJH_SUB_S_COMPARE_CARD 105 //比牌跟注;
|
|
#define ZJH_SUB_S_GAME_END 106 //游戏结束;
|
|
#define ZJH_SUB_S_CHEAT_CARD 111 //作弊消息;
|
|
|
|
//客户端命令码;
|
|
#define ZJH_SUB_C_SEND_OVER 1 //发牌结束;
|
|
#define ZJH_SUB_C_USER_OPERATE 2 //用户操作;
|
|
#define ZJH_SUB_C_MASTER_CONTROL 10 //;
|
|
|
|
//游戏状态;
|
|
typedef struct ZJH_CMD_S_StatusFree
|
|
{
|
|
int lCellScore; //基础积分;
|
|
uint8 cbCurRound; //当前轮数;
|
|
uint8 cbMaxRound; //最大轮数;
|
|
int lCurChipScore; //当前注数;
|
|
int lMaxChipScore; //最大可下注;
|
|
uint16 wOperTimeOut; //操作超时时间;
|
|
}ZJHStatusBase;
|
|
|
|
//发牌状态;
|
|
struct ZJH_CMD_S_StatusSendCard
|
|
{
|
|
ZJHStatusBase stBase; //基础信息;
|
|
bool bSendOver; //发牌结束;
|
|
uint16 wBankerUser; //庄家用户;
|
|
uint8 aryGamingStatus[ZJH_GAME_PLAYER]; //玩家游戏状态;
|
|
int aryUserChipScore[ZJH_GAME_PLAYER]; //玩家下注;
|
|
};
|
|
|
|
//游戏状态;
|
|
struct ZJH_CMD_S_StatusPlay
|
|
{
|
|
ZJHStatusBase stBase; //基础信息;
|
|
uint16 wBankerUser; //庄家用户;
|
|
uint16 wCurrentUser; //当前玩家;
|
|
uint32 dwOperateCode; //操作码;
|
|
uint8 aryGamingStatus[ZJH_GAME_PLAYER]; //玩家游戏状态;
|
|
uint8 aryHandCardData[ZJH_MAX_COUNT]; //扑克数据;
|
|
int aryUserChipScore[ZJH_GAME_PLAYER]; //玩家下注;
|
|
};
|
|
|
|
//游戏开始;
|
|
struct ZJH_CMD_S_GameStart
|
|
{
|
|
uint8 cbCurRound; //当前轮数;
|
|
uint16 wBankerUser; //庄家用户;
|
|
int lCurChipScore; //当前下注;
|
|
uint8 aryGamingStatus[ZJH_GAME_PLAYER]; //玩家游戏状态;
|
|
int aryUserChipScore[ZJH_GAME_PLAYER]; //玩家下注;
|
|
};
|
|
|
|
//开始下注;
|
|
typedef struct ZJH_CMD_S_StartChip
|
|
{
|
|
uint8 cbCurRound; //当前轮数;
|
|
uint16 wCurrentUser; //当前用户;
|
|
uint32 dwOperateCode; //操作掩码;
|
|
int lCurChipScore; //当前下注;
|
|
}ZJHChipInfo;
|
|
|
|
//用户下注;
|
|
struct ZJH_CMD_S_ChipScore
|
|
{
|
|
uint16 wChipUser; //加注用户;
|
|
int lChipScore; //下注筹码;
|
|
int lTtlChipScore; //总的下注;
|
|
uint32 dwOperateCode; //操作类型;
|
|
ZJHChipInfo stChipInfo; //当前下注信息;
|
|
};
|
|
|
|
//用户放弃;
|
|
struct ZJH_CMD_S_GiveUp
|
|
{
|
|
uint16 wGiveUpUser; //放弃玩家;
|
|
ZJHChipInfo stChipInfo; //当前下注信息;
|
|
};
|
|
|
|
//看牌数据包;
|
|
struct ZJH_CMD_S_LookCard
|
|
{
|
|
uint16 wLookUser; //看牌玩家;
|
|
uint8 aryCardData[ZJH_MAX_COUNT]; //玩家扑克;
|
|
ZJHChipInfo stChipInfo; //当前下注信息;
|
|
};
|
|
|
|
//比牌数据包;
|
|
struct ZJH_CMD_S_CompareCard
|
|
{
|
|
bool bWin; //输赢结果;
|
|
uint16 wChairID; //比牌者;
|
|
uint16 wCompareUser; //被比牌者;
|
|
int lChipScore; //下注筹码;
|
|
int lTtlChipScore; //总的下注;
|
|
ZJHChipInfo stChipInfo; //当前下注信息;
|
|
};
|
|
|
|
//游戏结束;
|
|
struct ZJH_CMD_S_GameEnd
|
|
{
|
|
bool isPrivateEnd; //私人场是否结束;
|
|
uint8 aryGamingStatus[ZJH_GAME_PLAYER]; //玩家游戏状态;
|
|
uint8 aryCardType[ZJH_GAME_PLAYER]; //玩家牌型;
|
|
uint8 aryHandCardData[ZJH_GAME_PLAYER][ZJH_MAX_COUNT]; //用户扑克;
|
|
int aryGameScore[ZJH_GAME_PLAYER]; //玩家游戏得分;
|
|
int aryXiScore[ZJH_GAME_PLAYER]; //喜钱;
|
|
};
|
|
|
|
//作弊消息;
|
|
struct ZJH_CMD_S_CheatCardInfo
|
|
{
|
|
uint8 aryGamingStatus[ZJH_GAME_PLAYER]; //玩家游戏状态;
|
|
uint8 aryHandCardData[ZJH_GAME_PLAYER][ZJH_MAX_COUNT]; //用户扑克;
|
|
};
|
|
|
|
//用户操作;
|
|
struct ZJH_CMD_C_UserOperate
|
|
{
|
|
uint32 dwCode; //操作码;
|
|
int lData; //操作参数;
|
|
};
|
|
|
|
// 游戏解散结构;
|
|
struct ZJH_CMD_S_Private_End_Info
|
|
{
|
|
uint8 aryActiveStatus[ZJH_GAME_PLAYER]; //手牌状态;
|
|
SCORE aryWinScore[ZJH_GAME_PLAYER]; //赢分;
|
|
SCORE aryXiScore[ZJH_GAME_PLAYER]; //喜钱;
|
|
SCORE aryTotalScore[ZJH_GAME_PLAYER]; //总得分;
|
|
|
|
void StreamValue(DataStream& kData, bool bSend)
|
|
{
|
|
if (bSend)
|
|
{
|
|
kData.pushValue(this, sizeof(ZJH_CMD_S_Private_End_Info));
|
|
}
|
|
else
|
|
{
|
|
kData.popValue(this, sizeof(ZJH_CMD_S_Private_End_Info));
|
|
}
|
|
}
|
|
};
|
|
|
|
//////////////////////////////////////////////////////////////////////////////////
|
|
|
|
#pragma pack()
|
|
|
|
#endif |