Files
wnmj/Classes/Games/WNMJ/WN_GameLogic.h

165 lines
4.2 KiB
C
Raw Normal View History

2026-02-13 14:34:15 +08:00
#ifndef GAME_LOGIC_HEAD_FILE
#define GAME_LOGIC_HEAD_FILE
#pragma once
#include "cocos2d.h"
#include "ui/CocosGUI.h"
#include "Define.h"
#include "WN_CMD_Sparrow.h"
USING_NS_CC;
namespace WNMJ_SPACE{
//<2F>߼<EFBFBD><DFBC><EFBFBD><EFBFBD><EFBFBD>
enum WNMJ_MASK
{
MASK_WN_COLOR = 0xF0, //<2F><>ɫ<EFBFBD><C9AB><EFBFBD><EFBFBD>
MASK_WN_VALUE = 0x0F, //<2F><>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>
};
//////////////////////////////////////////////////////////////////////////
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
enum WN_WIK_TYPE
{
WIK_WN_NULL = 0x0000, //û<><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
WIK_WN_LEFT = (1 << 0), //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
WIK_WN_CENTER = (1 << 1), //<2F>г<EFBFBD><D0B3><EFBFBD><EFBFBD><EFBFBD>
WIK_WN_RIGHT = (1 << 2), //<2F>ҳ<EFBFBD><D2B3><EFBFBD><EFBFBD><EFBFBD>
WIK_WN_PENG = (1 << 3), //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
WIK_WN_GANG = (1 << 4), //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
WIK_WN_CHI_HU = (1 << 5), //<2F>Ժ<EFBFBD><D4BA><EFBFBD><EFBFBD><EFBFBD>
WIK_WN_DNBL = (1 << 6), //<2F><><EFBFBD>ϱ<EFBFBD><CFB1><EFBFBD>
WIK_WN_DNBC = (1 << 7), //<2F><><EFBFBD>ϱ<EFBFBD><CFB1><EFBFBD>
WIK_WN_DNBR = (1 << 8), //<2F><><EFBFBD>ϱ<EFBFBD><CFB1><EFBFBD>
WIK_WN_DXBL = (1 << 9), //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
WIK_WN_DXBC = (1 << 10), //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
WIK_WN_DXBR = (1 << 11), //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
WIK_WN_CHI = (WIK_WN_RIGHT | WIK_WN_CENTER | WIK_WN_LEFT | WIK_WN_DNBL | WIK_WN_DNBC | WIK_WN_DNBR | WIK_WN_DXBL | WIK_WN_DXBC | WIK_WN_DXBR), //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
};
//////////////////////////////////////////////////////////////////////////
//<2F><><EFBFBD>ƶ<EFBFBD><C6B6><EFBFBD>
enum WNMJ_HU_TYPE
{
//<2F>Ǻ<EFBFBD><C7BA><EFBFBD><EFBFBD><EFBFBD>
CHK_NULL = 0x0000, //<2F>Ǻ<EFBFBD><C7BA><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CHK_JI_HU = 0x0001, //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CHK_QI_DUI = 0x0002, //<2F>߶<EFBFBD>
CHK_THIRTEEN = 0x0004, //13<31><33>
CHK_SERVEN = 0x0008, //<2F><><EFBFBD><EFBFBD>
CHK_PENG_PENG = 0x0010, //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
CHK_HUNYISE = 0x0020, //<2F><>һɫ;
CHK_QINYISE = 0x0040, //<2F><>һɫ;
CHK_ZIYISE = 0x0080, //<2F><>һɫ;
//<2F><><EFBFBD><EFBFBD>Ȩλ
CHR_ZI_MO = 0x0001, //<2F><><EFBFBD><EFBFBD>Ȩλ
CHR_QIANG_GANG = 0x0002, //<2F><><EFBFBD><EFBFBD>Ȩλ
CHR_GANG_FLOWER = 0x0004, //<2F><><EFBFBD>Ͽ<EFBFBD><CFBF><EFBFBD>
CHR_HAS_KING = 0x0008, //<2F>б<EFBFBD>Ȩλ
CHR_GERMAN = 0x0010, //<2F>¹<EFBFBD>Ȩλ
CHR_TIAN = 0x0020, //<2F><><EFBFBD><EFBFBD>Ȩλ
CHR_DI = 0x0040, //<2F>غ<EFBFBD>Ȩλ
CHR_LIAN_GANG_FLOWER = 0x0080, //<2F><><EFBFBD>ܺ<EFBFBD>Ȩλ;
CHR_QIANG_LIAN_GANG = 0x0100, //<2F><><EFBFBD><EFBFBD><EFBFBD>ܺ<EFBFBD>Ȩλ;
};
//////////////////////////////////////////////////////////////////////////
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
struct tagKindItem
{
uint8 cbWeaveKingReplace; //<2F><><EFBFBD><EFBFBD><EFBFBD>
WORD wWeaveKind; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8 cbCenterCard; //<2F><><EFBFBD><EFBFBD><EFBFBD>˿<EFBFBD>
uint8 cbCardIndex[3]; //<2F>˿<EFBFBD><CBBF><EFBFBD><EFBFBD><EFBFBD>
};
//<2F><><EFBFBD>ƽ<EFBFBD><C6BD><EFBFBD>
struct tagChiHuResult
{
WORD wChiHuKind; //<2F>Ժ<EFBFBD><D4BA><EFBFBD><EFBFBD><EFBFBD>
WORD wChiHuRight; //<2F><><EFBFBD><EFBFBD>Ȩλ
};
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
struct tagAnalyseItem
{
uint8 cbEyeKingReplace; //<2F><><EFBFBD><EFBFBD><EFBFBD>
uint8 cbWeaveKingReplace; //<2F><><EFBFBD><EFBFBD><EFBFBD>
uint8 cbCardEye; //<2F><><EFBFBD><EFBFBD><EFBFBD>˿<EFBFBD>
WORD wWeaveKind[MAX_WEAVE]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8 cbCenterCard[MAX_WEAVE]; //<2F><><EFBFBD><EFBFBD><EFBFBD>˿<EFBFBD>
};
enum EN_KING_TYPE
{
KT_MAIN = 0, // <20><>
KT_VICE, // <20><>
KT_KING, // <20><>
KT_NULL, // <20><>ͨ<EFBFBD><CDA8>
};
//////////////////////////////////////////////////////////////////////////
//<2F><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5>
typedef CArrayTemplate<tagAnalyseItem, tagAnalyseItem &> CAnalyseItemArray;
//<2F><>Ϸ<EFBFBD>߼<EFBFBD><DFBC><EFBFBD>
class WN_CGameLogic
{
CREATE_SINGLETON_MUTEX_CLEAR(WN_CGameLogic, s_configInstance, nullptr);
private:
static WN_CGameLogic *s_configInstance;
private:
void init();
void clear();
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
protected:
static const uint8 m_cbCardDataArray[MAX_REPERTORY]; //<2F>˿<EFBFBD><CBBF><EFBFBD><EFBFBD><EFBFBD>
uint8 m_cbKingCardIndex[2]; //<2F><><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
public:
//<2F><>Ч<EFBFBD>ж<EFBFBD>
static bool IsValidCard(uint8 cbCardData);
//<2F>˿<EFBFBD><CBBF><EFBFBD>Ŀ
uint8 GetCardCount(uint8 cbCardIndex[MAX_INDEX]);
//<2F><><EFBFBD><EFBFBD><EFBFBD>˿<EFBFBD>
uint8 GetWeaveCard(WORD cbWeaveKind, uint8 cbCenterCard, uint8 cbCardBuffer[4]);
//<2F><>ȡ<EFBFBD><C8A1>ֵ
static uint8 GetCardValue(uint8 cbCardData) { return (cbCardData&MASK_WN_VALUE); }
//<2F><>ȡ<EFBFBD><C8A1>ɫ
static uint8 GetCardColor(uint8 cbCardData) { return ((cbCardData&MASK_WN_COLOR) >> 4); }
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
std::string GetHuKind(WORD wChiHuKind);
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>άȨ
std::string GetHuRight(WORD wChiHuRight);
//ת<><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
public:
//<2F>˿<EFBFBD>ת<EFBFBD><D7AA>
uint8 SwitchToCardData(uint8 cbCardIndex);
//<2F>˿<EFBFBD>ת<EFBFBD><D7AA>
uint8 SwitchToCardIndex(uint8 cbCardData);
//<2F><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
public:
//<2F><><EFBFBD>Ʒ<EFBFBD><C6B7><EFBFBD>
WORD AnalyseGangCard(uint8 cbCardIndex[MAX_INDEX], tagWeaveItem WeaveItem[], uint8 cbWeaveCount, tagGangCardResult & GangCardResult);
};
}
//////////////////////////////////////////////////////////////////////////
#endif