Files
winapp/PolicyUnit.h
2026-06-12 22:37:02 +08:00

196 lines
4.8 KiB
C++

//---------------------------------------------------------------------------
#ifndef PolicyUnitH
#define PolicyUnitH
//---------------------------------------------------------------------------
#include <system.hpp>
#include <vector>
#define TYPE_P_BET 0
#define TYPE_P_CHIP 1
#define KIND_BET_NOR 0
#define KIND_BET_ASK 2
#define KIND_BET_DIF 3
#define KIND_CHIP_NOR 0
#define KIND_CHIP_HAN 1
#define KIND_CHIP_LEV 2
#define KIND_CHIP_COM 3
#define KIND_CHIP_WLD 4
#define KIND_CHIP_RAN 8
//---------------------------------------------------------------------------
using namespace std;
//策略基类
class TBaseRow {
public:
virtual void Clear()=0;
// TBaseRow(){Clear();};
};
class TBasePolicy {
public:
String name;
int type; //存储类型 0=内置免费 1=内置付费 2=用户自定义 3=用户定制
int id; //唯一ID
int kind; //自定义类型 CHIP:0=普通 1=手数层级 2=组合层级 4=随机 ... BET:0=普通 2=庄闲问路 3=庄闲差...
bool actived; //是否激活
vector<TBaseRow*> aRows;
virtual void AddNewRow()=0;
virtual TBaseRow* ParseRow(char* data, int& err)=0;
virtual int ParsePolicy(char* data, int pt);
virtual void Clear();
virtual void Reset();
TBasePolicy(){id=type=kind=0;}
~TBasePolicy();
};
//打法策略
class TBetRow : public TBaseRow {
public:
vector<int> cond; //切入点匹配,字符串解析为整形保存
// item&0x3=颜色 (item&7C)>>2=个数 item&0x80=是否定长
// int bet; //下注方向
vector<char> bets; //下注项
virtual void Clear(){
cond.clear();
bets.clear();
};
// TBetRow(){};//Clear();};
};
class TBetPolicy : public TBasePolicy{
public:
int road; //适用路单
TBetPolicy& operator = (const TBetPolicy& b);
bool operator == (const TBetPolicy& b);
virtual void AddNewRow();
virtual TBaseRow* ParseRow(char* data, int& err);
vector<int> ParseCondition(char* data);
static vector<char> ParseBet(char* data);
virtual void Reset();
TBetPolicy(){road=0;}
};
//注码策略
class TChipRow : public TBaseRow{
public:
int iSeq; //序号
int chip; //注码/倍数
int iWin; //赢走向
int iLos; //输走向
virtual void Clear(){iSeq=chip=iWin=iLos=0;};
TChipRow(){Clear();};
};
//层级
class TTierRow : public TChipRow{
public:
int hands; //层级注码手数
};
//阶梯
class TLevelRow : public TChipRow{
public:
int nCondWin; //赢走向条件
int nCondLos; //输走向条件
};
//组合
class TComboRow : public TLevelRow{
public:
int id; //方案id
int iPolicy; //方案序号
TComboRow(){id=iPolicy=-1;};
};
////赢输次差
//class TWLDiffRow : public TChipRow{
//public:
// int nMore; //大于数值
// int nLess; //少于数值
//};
class TChipPolicy: public TBasePolicy{
public:
int dead, //爆缆后操作 0=停止 1=新局重启 2=暂停后重启
deadPause; //暂停分钟数
TChipPolicy& operator = (const TChipPolicy& b);
bool operator == (const TChipPolicy& b);
virtual void AddNewRow();
virtual TBaseRow* ParseRow(char* data, int& err);
TChipPolicy(){dead=deadPause=0;}
};
class TTierPolicy: public TChipPolicy{
public:
bool bTierWinRet,//二层以上赢利回基
bTierAccChip, //输额加入下层注码
bTierLos0; //输打0
TTierPolicy(){bTierWinRet=bTierAccChip=bTierLos0=0;}
};
class TLevelPolicy: public TChipPolicy{
public:
bool bTotalDiff, //总体计算输赢
bInstant; //即时跳转
TLevelPolicy(){bTotalDiff=bInstant=0;}
};
class TWLDiffPolicy: public TLevelPolicy{
public:
bool bIndie; //各层分别统计
TWLDiffPolicy(){bIndie=0;}
};
typedef struct tagRandomChip{
int minChip, //最小随机
maxChip; //最大随机
tagRandomChip(){minChip=20, maxChip=100;}
}TRandomChip;
typedef struct tagBPAskBet{
char bet[2]; //庄全红/闲全红 0=不打 1=庄 2=闲
tagBPAskBet(){bet[0]=1, bet[1]=2;}
}TBPAskBet;
typedef struct tagBPDiffBet{
BYTE diff[2]; //庄闲差 0=庄大 1=闲大
// char bet[2]; //庄大/闲大下注 1=庄 2=闲
char bets[2][16]; //庄大/闲大下注 1=庄 2=闲
tagBPDiffBet(){diff[0]=diff[1]=5, strcpy(bets[0],"a"), strcpy(bets[1],"s");}
}TBPDiffBet;
void __fastcall LoadPolicies();
int __fastcall SavePolicy(int type, TBasePolicy* pPolicy, int index);
int __fastcall DeletePolicy(int type, int index);
int __fastcall MinChipOfPolicy(int index);
vector<int> __fastcall PolicyInCombo(int iPolicy);
int __fastcall FindPolicy(int type, int id);
void __fastcall CheckComboRow(TComboRow* row);
extern vector<TBasePolicy*> g_aBetPolicies;
extern vector<TBasePolicy*> g_aChipPolicies;
extern int g_iBetPolicy; //全局打法
extern int g_iChipPolicy;//全局注码
extern int g_nChipMul; //全局注码倍数
extern TRandomChip g_RandomChip;
extern TBPAskBet g_BPAskBet;
extern TBPDiffBet g_BPDiffBet;
#endif