Files

284 lines
7.6 KiB
C
Raw Permalink Normal View History

2026-03-03 13:56:44 +08:00
#ifndef _CMD_NiuNiu_GAME_HEAD_FILE_
#define _CMD_NiuNiu_GAME_HEAD_FILE_
#include "Types.h"
#include "DataStream.h"
#pragma pack(1)
//<2F><>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD>;
#define NN_KIND_ID 2 //<2F><>ϷID;
#define NN_GAME_PLAYER 5 //<2F><>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD>;
#define NN_GAME_NAME ("ţţ") //<2F><>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD>;
#define NN_MAX_COUNT 5 //<2F>˿<EFBFBD><CBBF><EFBFBD>Ŀ;
#define NN_FULL_COUNT 52 //<2F><><EFBFBD><EFBFBD><EFBFBD>ƿ<EFBFBD><C6BF><EFBFBD><EFBFBD><EFBFBD>;
#define NN_CTYPE_COUNT 12 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
//<2F>˿<EFBFBD><CBBF><EFBFBD><EFBFBD><EFBFBD>;
#define NN_MASK_VALUE 0x0F //<2F><>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>;
#define NN_MASK_COLOR 0xF0 //<2F><>ɫ<EFBFBD><C9AB><EFBFBD><EFBFBD>;
//<2F><><EFBFBD>Ͷ<EFBFBD><CDB6><EFBFBD>;
#define NIU_TYPE_0 0 //<2F><>ţ;
#define NIU_TYPE_1 1 //ţһ;
#define NIU_TYPE_2 2 //ţ<><C5A3>;
#define NIU_TYPE_3 3 //ţ<><C5A3>;
#define NIU_TYPE_4 4 //ţ<><C5A3>;
#define NIU_TYPE_5 5 //ţ<><C5A3>;
#define NIU_TYPE_6 6 //ţ<><C5A3>;
#define NIU_TYPE_7 7 //ţ<><C5A3>;
#define NIU_TYPE_8 8 //ţ<><C5A3>;
#define NIU_TYPE_9 9 //ţ<><C5A3>;
#define NIU_TYPE_10 10 //ţţ;
#define NIU_TYPE_WHN 11 //<2F>廨ţ;
#define NIU_TYPE_SHN 12 //<2F><>ը;
#define NIU_TYPE_WXN 13 //<2F><>Сţ;
#define NN_MAX_NIU_TYPE 13 //<2F><><EFBFBD><EFBFBD>ţ<EFBFBD><C5A3><EFBFBD><EFBFBD>;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ض<EFBFBD><D8B6><EFBFBD>;
#define NN_VIEW_L1_ID 0 //<2F><>1<EFBFBD><31><EFBFBD><EFBFBD>;
#define NN_VIEW_L2_ID 1 //<2F><>2<EFBFBD><32><EFBFBD><EFBFBD>;
#define NN_VIEW_SELF_ID 2 //<2F>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD><EFBFBD>;
#define NN_VIEW_R3_ID 3 //<2F><>2<EFBFBD><32><EFBFBD><EFBFBD>;
#define NN_VIEW_R4_ID 4 //<2F><>1<EFBFBD><31><EFBFBD><EFBFBD>;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
#define NN_RULE_HUA_NIU 0x01 //<2F>л<EFBFBD>ţ;
#define NN_RULE_SAN_ZHANG 0x02 //<2F><><EFBFBD><EFBFBD>ţ;
#define NN_RULE_FREE_CHIP 0x04 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע;
#define NN_RULE_NIU_FAN 0x08 //<2F><>ţ<EFBFBD><C5A3>;
#define NN_BANKER_OWNER 1 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ׯ;
#define NN_BANKER_TURNS 2 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ׯ;
#define NN_BANKER_ROB 3 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ׯ;
#define NN_BANKER_ROB4 4 //<2F><>4<EFBFBD><34><EFBFBD><EFBFBD>ׯ;
//<2F><>Ϸ״̬;
#define NN_GS_TK_FREE GAME_STATUS_FREE //<2F>ȴ<EFBFBD><C8B4><EFBFBD>ʼ;
#define NN_GS_TK_SEND_CARD GAME_STATUS_PLAY //<2F><><EFBFBD><EFBFBD>״̬;
#define NN_GS_TK_ROB_BANKER (GAME_STATUS_PLAY + 1) //<2F><>ׯ״̬;
#define NN_GS_TK_USER_CHIP (GAME_STATUS_PLAY + 2) //<2F><>ע״̬;
#define NN_GS_TK_OPEN_CARD (GAME_STATUS_PLAY + 3) //<2F><><EFBFBD><EFBFBD>״̬;
#define NN_GS_TK_SHOW_CARD (GAME_STATUS_PLAY + 4) //<2F><>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD>;
#define NN_OPEN_CARD_TIME 20 //<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ò<EFBFBD><C3B2><EFBFBD>;
struct tagNinNiuRuleCfg
{
uint16 wGameRule = 0; //<2F><>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD>;
uint16 wBankerRule = 0; //<2F><>ׯ<EFBFBD><D7AF><EFBFBD><EFBFBD>;
uint8 cbMinFreeChip = 0; //<2F><>С<EFBFBD><D0A1>ע;
uint8 cbMaxFreeChip = 0; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע;
};
//<2F><><EFBFBD><EFBFBD>״̬;
struct NN_CMD_S_StatusFree
{
SCORE lCellScore; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
SCORE lMinFreeChip; //<2F><>С<EFBFBD><D0A1><EFBFBD><EFBFBD>ע;
SCORE lMaxFreeChip; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע;
uint8 cbHandCardCount; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
bool bActiveStatus[NN_GAME_PLAYER]; //<2F><><EFBFBD><EFBFBD>״̬;
};
//<2F><><EFBFBD><EFBFBD>״̬;
struct NN_CMD_S_StatusSend
{
NN_CMD_S_StatusFree stStatusFree; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
uint16 wBankerUser; //ׯ<><D7AF><EFBFBD>û<EFBFBD>;
uint8 cbSendStatus; //<2F><><EFBFBD><EFBFBD>״̬;
uint8 cbHandCardData[NN_MAX_COUNT]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
};
//<2F><>ׯ״̬;
struct NN_CMD_S_StatusRob
{
NN_CMD_S_StatusFree stStatusFree; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
uint8 cbRobStatus[NN_GAME_PLAYER]; //<2F><>ׯ״̬ 0:û<><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1:<3A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>2:<3A><>;
uint8 cbHandCardData[NN_GAME_PLAYER][NN_MAX_COUNT];//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
};
//<2F><>ע״̬;
struct NN_CMD_S_StatusChip
{
NN_CMD_S_StatusFree stStatusFree; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
uint16 wBankerUser; //ׯ<><D7AF><EFBFBD>û<EFBFBD>;
uint8 cbChipStatus[NN_GAME_PLAYER]; //<2F><>ע״̬;
SCORE lUserChipScore[NN_GAME_PLAYER]; //<2F><>ע<EFBFBD><D7A2><EFBFBD><EFBFBD>;
uint8 cbHandCardData[NN_MAX_COUNT]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
};
//<2F>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD><EFBFBD>״̬;
struct NN_CMD_S_StatusOpen
{
NN_CMD_S_StatusFree stStatusFree; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
uint16 wBankerUser; //ׯ<><D7AF><EFBFBD>û<EFBFBD>;
SCORE lUserChipScore[NN_GAME_PLAYER]; //<2F><>ע<EFBFBD><D7A2><EFBFBD><EFBFBD>;
uint8 cbOpenStatus[NN_GAME_PLAYER]; //<2F><><EFBFBD><EFBFBD>״̬;
uint8 cbHandCardType; //<2F><><EFBFBD><EFBFBD>;
uint8 cbHandCardData[NN_MAX_COUNT]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
};
//<2F><><EFBFBD><EFBFBD><EFBFBD>˶<EFBFBD><CBB6><EFBFBD><EFBFBD><EFBFBD>;
struct NN_CMD_S_StatusAllOpen
{
NN_CMD_S_StatusFree stStatusFree; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
uint16 wBankerUser; //ׯ<><D7AF><EFBFBD>û<EFBFBD>;
uint8 cbOpenStatus[NN_GAME_PLAYER]; //<2F><><EFBFBD><EFBFBD>״̬;
SCORE lUserChipScore[NN_GAME_PLAYER]; //<2F><>ע<EFBFBD><D7A2><EFBFBD><EFBFBD>;
uint8 cbHandCardType[NN_GAME_PLAYER]; //<2F><><EFBFBD><EFBFBD>;
uint8 cbHandCardData[NN_GAME_PLAYER][NN_MAX_COUNT];//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
};
//////////////////////////////////////////////////////////////////////////
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
#define NN_SUB_S_GAME_START 100 //<2F><>Ϸ<EFBFBD><CFB7>ʼ;
#define NN_SUB_S_START_ROB 101 //<2F><>ʼ<EFBFBD><CABC>ׯ;
#define NN_SUB_S_USER_ROB 102 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ׯ;
#define NN_SUB_S_START_CHIP 103 //<2F><>ʼ<EFBFBD><CABC>ע;
#define NN_SUB_S_USER_CHIP 104 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע;
#define NN_SUB_S_START_OPEN 105 //<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>;
#define NN_SUB_S_OPEN_CARD 106 //<2F><><EFBFBD>ҿ<EFBFBD><D2BF><EFBFBD>;
#define NN_SUB_S_GAME_END 107 //<2F><>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD>;
#define NN_SUB_S_ALL_OPEN_CARD 108 //<2F><><EFBFBD>ҿ<EFBFBD><D2BF><EFBFBD>;
//<2F><>Ϸ<EFBFBD><CFB7>ʼ;
struct NN_CMD_S_GameStart
{
uint16 wBankerUser; //ׯ<><D7AF><EFBFBD>û<EFBFBD>;
bool bActiveStatus[NN_GAME_PLAYER]; //<2F><><EFBFBD><EFBFBD>״̬;
uint8 cbHandCardCount; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
uint8 cbHandCardData[NN_MAX_COUNT]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
};
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ׯ;
struct NN_CMD_S_UserRob
{
uint16 wRobUser; //<2F><>ׯ<EFBFBD><D7AF><EFBFBD><EFBFBD>;
bool bRobResult; //<2F>Ƿ<EFBFBD><C7B7><EFBFBD>ׯ;
};
//<2F><>ʼ<EFBFBD><CABC>ע;
struct NN_CMD_S_StartChip
{
uint16 wBankerUser; //ׯ<><D7AF><EFBFBD>û<EFBFBD>;
};
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע;
struct NN_CMD_S_UserChip
{
uint16 wChipUser; //<2F><>ע<EFBFBD><D7A2><EFBFBD><EFBFBD>;
SCORE lChipScore; //<2F><>ע<EFBFBD><D7A2><EFBFBD><EFBFBD>;
};
//<2F><><EFBFBD>ҿ<EFBFBD><D2BF><EFBFBD>;
struct NN_CMD_S_OpenCard
{
uint16 wOpenUser; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
uint8 cbCardType; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
uint8 cbCardData[NN_MAX_COUNT]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
};
//<2F><><EFBFBD><EFBFBD><EFBFBD>˿<EFBFBD><CBBF><EFBFBD>;
struct NN_CMD_S_AllOpenCard
{
bool bActiveStatus[NN_GAME_PLAYER]; //<2F><><EFBFBD><EFBFBD>״̬;
uint8 cbCardType[NN_GAME_PLAYER]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
uint8 cbHandCardData[NN_GAME_PLAYER][NN_MAX_COUNT];//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
};
//<2F><>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD>;
struct NN_CMD_S_GameEnd
{
uint8 cbCardType[NN_GAME_PLAYER]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
uint8 cbHandCardData[NN_GAME_PLAYER][NN_MAX_COUNT]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
SCORE lAllScore[NN_GAME_PLAYER]; //;
SCORE lGameScore[NN_GAME_PLAYER]; //<2F><>Ϸ<EFBFBD>÷<EFBFBD>;
SCORE lRevenue[NN_GAME_PLAYER]; //˰<><CBB0>;
};
//<2F>ܽ<EFBFBD><DCBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
struct NN_CMD_S_FinishData
{
bool bActiveStatus[NN_GAME_PLAYER]; //<2F><><EFBFBD><EFBFBD>״̬;
uint8 cbCardTypeCount[NN_GAME_PLAYER][12]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
SCORE lTotalScore[NN_GAME_PLAYER]; //<2F>ܵ÷<DCB5>;
};
//////////////////////////////////////////////////////////////////////////
//<2F>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
#define NN_SUB_C_SEND_OVER 1 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
#define NN_SUB_C_ROB_BANKER 2 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ׯ;
#define NN_SUB_C_CHIP_SCORE 3 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע;
#define NN_SUB_C_OPEN_CARD 4 //<2F><><EFBFBD>ҿ<EFBFBD><D2BF><EFBFBD>;
//<2F>û<EFBFBD><C3BB><EFBFBD>ׯ;
struct NN_CMD_C_RobBanker
{
bool bRob; //<2F>Ƿ<EFBFBD><C7B7><EFBFBD>ׯ;
};
//<2F>û<EFBFBD><C3BB><EFBFBD>ע;
struct NN_CMD_C_ChipScore
{
SCORE lScore; //<2F><>ע<EFBFBD><D7A2>Ŀ;
};
//////////////////////////////////////////////////////////////////////////////////
enum EN_NN_RESULT_TYPE
{
NN_RT_ALL_WIN = 0, // ͨɱ;
NN_RT_ALL_LOSE, // ͨ<><CDA8>;
NN_RT_NIUNIU, // ţţ;
NN_RT_WIN, // Ӯ;
};
// <20><>Ϸ<EFBFBD><CFB7>ɢ<EFBFBD>ṹ;
struct NN_CMD_S_Private_End_Info
{
WORD wMainChairID; // <20><><EFBFBD><EFBFBD>;
BYTE cbFinishCout; // <20><><EFBFBD>ɾ<EFBFBD><C9BE><EFBFBD>;
bool aryActiveStatus[NN_GAME_PLAYER]; // <20><><EFBFBD><EFBFBD>״̬;
SCORE lAllScore[NN_GAME_PLAYER]; // <20>ܳɼ<DCB3>;
BYTE aryResultTypeCount[NN_GAME_PLAYER][4]; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
void StreamValue(DataStream& kData, bool bSend)
{
if (bSend)
{
kData.pushValue(this, sizeof(NN_CMD_S_Private_End_Info));
}
else
{
kData.popValue(this, sizeof(NN_CMD_S_Private_End_Info));
}
}
};
enum eNNRuleEnum
{
eNNRuleEnum_NULL = 0, //NULL;
eNNRuleEnum_CardAA = 1, //<2F><><EFBFBD><EFBFBD>AA;
eNNRuleEnum_BANKER_OWNER = 1 << 1, //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ׯ;
eNNRuleEnum_BANKER_TURNS = 1 << 2, //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ׯ;
eNNRuleEnum_BANKER_ROB = 1 << 3, //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ׯ;
eNNRuleEnum_BANKER_ROB4 = 1 << 4, //<2F><>4<EFBFBD><34><EFBFBD><EFBFBD>ׯ;
eNNRuleEnum_NO_SPECIAL_NIU = 1 << 5, //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ţ;
eNNRuleEnum_BAYONET = 1 << 6, //ƴ<>̵<EFBFBD>;
eNNRuleEnum_WHN = 1 << 7, //<2F>廨ţ;
eNNRuleEnum_BOMB = 1 << 8, //ը<><D5A8>;
eNNRuleEnum_WXN = 1 << 9, //<2F><>Сţ;
};
//////////////////////////////////////////////////////////////////////////////////
#pragma pack()
#endif