Files
wnmj/Servers/服务器组件/游戏服务/GameServiceHead.h

1695 lines
49 KiB
C
Raw Normal View History

2026-02-13 14:34:15 +08:00
#ifndef GAME_SERVICE_HEAD_HEAD_FILE
#define GAME_SERVICE_HEAD_HEAD_FILE
//////////////////////////////////////////////////////////////////////////////////
//ƽ̨<C6BD><CCA8><EFBFBD><EFBFBD>
#include "..\..\ȫ<>ֶ<EFBFBD><D6B6><EFBFBD>\Platform.h"
//<2F><>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>
#include "..\..\<5C><>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>\CMD_Commom.h"
#include "..\..\<5C><>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>\CMD_Correspond.h"
#include "..\..\<5C><>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>\CMD_GameServer.h"
//ƽ̨<C6BD>ļ<EFBFBD>
#include "..\..\<5C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\<5C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\ServiceCoreHead.h"
#include "..\..\<5C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\<5C>ں<EFBFBD><DABA><EFBFBD><EFBFBD><EFBFBD>\KernelEngineHead.h"
//////////////////////////////////////////////////////////////////////////////////
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#ifndef GAME_SERVICE_CLASS
#ifdef GAME_SERVICE_DLL
#define GAME_SERVICE_CLASS _declspec(dllexport)
#else
#define GAME_SERVICE_CLASS _declspec(dllimport)
#endif
#endif
//ģ<><EFBFBD><E9B6A8>
#ifndef _DEBUG
#define GAME_SERVICE_DLL_NAME TEXT("GameService.dll") //<2F><><EFBFBD><EFBFBD> DLL <20><><EFBFBD><EFBFBD>
#else
#define GAME_SERVICE_DLL_NAME TEXT("GameServiceD.dll") //<2F><><EFBFBD><EFBFBD> DLL <20><><EFBFBD><EFBFBD>
#endif
//////////////////////////////////////////////////////////////////////////////////
//<2F>ӿ<EFBFBD>˵<EFBFBD><CBB5>
//<2F>û<EFBFBD><C3BB>ӿ<EFBFBD>
interface IServerUserItem;
interface IServerUserManager;
interface IServerUserItemSink;
//<2F><><EFBFBD><EFBFBD><EFBFBD>ӿ<EFBFBD>
interface IAndroidUserItem;
interface IAndroidUserManager;
interface IAndroidUserItemSink;
//<2F><><EFBFBD>ӽӿ<D3BD>
interface ITableFrame;
interface ITableFrameSink;
interface ITableUserAction;
//<2F><><EFBFBD><EFBFBD><EFBFBD>ӿ<EFBFBD>
interface IMainServiceFrame;
interface IGameServiceManager;
interface IGameServiceCustomRule;
interface IGameServiceCustomTime;
//////////////////////////////////////////////////////////////////////////////////
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define ANDROID_WAITSTANDUP 0x01 //<2F>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD><EFBFBD>
#define ANDROID_WAITLEAVE 0x02 //<2F>ȴ<EFBFBD><C8B4>
//Ⱥ<><C8BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define BG_MOBILE (BYTE)(0x01) //<2F>ֻ<EFBFBD>Ⱥ<EFBFBD><C8BA>
#define BG_COMPUTER (BYTE)(0x02) //<2F><><EFBFBD><EFBFBD>Ⱥ<EFBFBD><C8BA>
#define BG_ALL_CLIENT (BYTE)(0xFF) //ȫ<><C8AB>Ⱥ<EFBFBD><C8BA>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define INDEX_SOCKET (WORD)(0x0000) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define INDEX_ANDROID (WORD)(0x2000) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define GAME_SERVICE_CREATE_NAME "CreateGameServiceManager" //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//////////////////////////////////////////////////////////////////////////////////
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define ANDROID_SIMULATE 0x01 //<2F>໥ģ<E0BBA5><C4A3>
#define ANDROID_PASSIVITY 0x02 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define ANDROID_INITIATIVE 0x04 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD>ԭ<EFBFBD><D4AD>
#define GER_NORMAL 0x00 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define GER_DISMISS 0x01 //<2F><>Ϸ<EFBFBD><CFB7>ɢ
#define GER_USER_LEAVE 0x02 //<2F>û<EFBFBD><C3BB>
#define GER_NETWORK_ERROR 0x03 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define GER_BAOZI 0x04 //<2F>˰<EFBFBD><CBB0><EFBFBD>
//<2F>뿪ԭ<EBBFAA><D4AD>
#define LER_NORMAL 0x00 //<2F><><EFBFBD><EFBFBD><EFBFBD>
#define LER_SYSTEM 0x01 //ϵͳԭ<CDB3><D4AD>
#define LER_NETWORK 0x02 //<2F><><EFBFBD><EFBFBD>ԭ<EFBFBD><D4AD>
#define LER_USER_IMPACT 0x03 //<2F>û<EFBFBD><C3BB><EFBFBD>ͻ
#define LER_SERVER_FULL 0x04 //<2F><><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>
#define LER_SERVER_CONDITIONS 0x05 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define SCORE_TYPE_NULL 0x00 //<2F><>Ч<EFBFBD><D0A7><EFBFBD><EFBFBD>
#define SCORE_TYPE_WIN 0x01 //ʤ<>ֻ<EFBFBD><D6BB><EFBFBD>
#define SCORE_TYPE_LOSE 0x02 //<2F><><EFBFBD>ֻ<EFBFBD><D6BB><EFBFBD>
#define SCORE_TYPE_DRAW 0x03 //<2F>;ֻ<CDBE><D6BB><EFBFBD>
#define SCORE_TYPE_FLEE 0x04 //<2F>Ӿֻ<D3BE><D6BB><EFBFBD>
#define SCORE_TYPE_PRESENT 0x10 //<2F><><EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD>
#define SCORE_TYPE_SERVICE 0x11 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><>ʼģʽ
#define START_MODE_ALL_READY 0x00 //<2F><><EFBFBD><EFBFBD>׼<EFBFBD><D7BC>
#define START_MODE_FULL_READY 0x01 //<2F><><EFBFBD>˿<EFBFBD>ʼ
#define START_MODE_PAIR_READY 0x02 //<2F><><EFBFBD>Կ<EFBFBD>ʼ
#define START_MODE_TIME_CONTROL 0x10 //ʱ<><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define START_MODE_MASTER_CONTROL 0x11 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD>ѡ<EFBFBD><D1A1>
#define DISTRIBUTE_ALLOW 0x01 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define DISTRIBUTE_IMMEDIATE 0x02 //<2F><><EFBFBD><EFBFBD>ѡ<EFBFBD><D1A1>
#define DISTRIBUTE_LAST_TABLE 0x04 //ͬ<><CDAC>ѡ<EFBFBD><D1A1>
#define DISTRIBUTE_SAME_ADDRESS 0x08 //<2F><>ַѡ<D6B7><D1A1>
#define DISTRIBUTE_ADJACENT 0X10 //<2F><><EFBFBD><EFBFBD>ѡ<EFBFBD><D1A1>
//////////////////////////////////////////////////////////////////////////////////
//ʱ<><CAB1><EFBFBD><EFBFBD>ʶ
//<2F><><EFBFBD>ȷ<EFBFBD>Χ
#define IDI_MAIN_MODULE_START 1 //<2F><>ʼ<EFBFBD><CABC>ʶ
#define IDI_MAIN_MODULE_FINISH 99 //<2F><>ֹ<EFBFBD><D6B9>ʶ
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ
#define IDI_REBOT_MODULE_START 100 //<2F><>ʼ<EFBFBD><CABC>ʶ
#define IDI_REBOT_MODULE_FINISH 199 //<2F><>ֹ<EFBFBD><D6B9>ʶ
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ
#define IDI_MATCH_MODULE_START 200 //<2F><>ʼ<EFBFBD><CABC>ʶ
#define IDI_MATCH_MODULE_FINISH 299 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʶ
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ
#define IDI_PRIVATE_MODULE_START 300 //<2F><>ʼ<EFBFBD><CABC>ʶ
#define IDI_PRIVATE_MODULE_FINISH 399 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʶ
//<2F><><EFBFBD>ӷ<EFBFBD>Χ
#define IDI_TABLE_MODULE_START 10000 //<2F><>ʼ<EFBFBD><CABC>ʶ
#define IDI_TABLE_MODULE_FINISH 50000 //<2F><>ֹ<EFBFBD><D6B9>ʶ
//////////////////////////////////////////////////////////////////////////////////
//ʱ<>Χ
//<2F><>Ϸʱ<CFB7><CAB1>
#define TIME_TABLE_SINK_RANGE 20 //<2F><>ʶ<EFBFBD><CAB6>Χ
#define TIME_TABLE_KERNEL_RANGE 30 //<2F><>ʶ<EFBFBD><CAB6>Χ
#define TIME_TABLE_MODULE_RANGE 50 //<2F><>ʶ<EFBFBD><CAB6>Χ
//////////////////////////////////////////////////////////////////////////////////
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define RESERVE_USER_COUNT 40L //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ
//<2F>۷<EFBFBD><DBB7><EFBFBD><EFBFBD><EFBFBD>
#define MATCH_FEE_TYPE_GOLD 0x00 //<2F><><EFBFBD>ɽ<EFBFBD><C9BD><EFBFBD>
#define MATCH_FEE_TYPE_MEDAL 0x01 //<2F><><EFBFBD>ɽ<EFBFBD><C9BD><EFBFBD>
#define MATCH_FEE_TYPE_CARD 0x02 //<2F><><EFBFBD>ɷ<EFBFBD><C9B7><EFBFBD>
//<2F><><EFBFBD><EFBFBD>ģʽ
#define MATCH_MODE_NORMAL 0x00 //<2F><><EFBFBD><EFBFBD><E6BFAA>
#define MATCH_MODE_ROUND 0x01 //ѭ<><D1AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define MATCH_TYPE_LOCKTIME 0x00 //<2F><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
#define MATCH_TYPE_IMMEDIATE 0x01 //<2F><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
//////////////////////////////////////////////////////////////////////////////////
//<2F><EFBFBD><E1B9B9><EFBFBD><EFBFBD>
//<2F><><EFBFBD>ò<EFBFBD><C3B2><EFBFBD>
struct tagGameParameter
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
WORD wMedalRate; //<2F><><EFBFBD>ƻ<EFBFBD><C6BB><EFBFBD>
WORD wRevenueRate; //<2F><><EFBFBD><EFBFBD>˰<EFBFBD><CBB0>
//<2F><EFBFBD><E6B1BE>Ϣ
DWORD dwClientVersion; //<2F>ͻ<EFBFBD><CDBB>
DWORD dwServerVersion; //<2F><><EFBFBD><EFBFBD><EFBFBD>
};
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
struct tagGameServiceAttrib
{
//<2F>ں<EFBFBD><DABA><EFBFBD><EFBFBD><EFBFBD>
WORD wKindID; //<2F><><EFBFBD>ƺ<EFBFBD><C6BA><EFBFBD>
WORD wChairCount; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ
WORD wSupporType; //֧<><D6A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
TCHAR szGameName[LEN_KIND]; //<2F><>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD>
//<2F><><EFBFBD>ܱ<EFBFBD>־
BYTE cbAndroidUser; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־
BYTE cbDynamicJoin; //<2F><>̬<EFBFBD><CCAC><EFBFBD><EFBFBD>
BYTE cbOffLineTrustee; //<2F><><EFBFBD>ߴ<EFBFBD><DFB4><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
DWORD dwServerVersion; //<2F><>Ϸ<EFBFBD>
DWORD dwClientVersion; //<2F><>Ϸ<EFBFBD>
TCHAR szDataBaseName[32]; //<2F><>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD>
TCHAR szServerDLLName[LEN_PROCESS]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
TCHAR szClientEXEName[LEN_PROCESS]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
};
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
struct tagGameServiceOption
{
//<2F>ҽ<EFBFBD><D2BD><EFBFBD><EFBFBD><EFBFBD>
WORD wKindID; //<2F>ҽ<EFBFBD><D2BD><EFBFBD><EFBFBD><EFBFBD>
WORD wNodeID; //<2F>ҽӽڵ<D3BD>
WORD wSortID; //<2F><><EFBFBD>б<EFBFBD>ʶ
WORD wServerID; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʶ
WORD wChanelID; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʶ
//˰<><CBB0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
LONG lCellScore; //<2F><>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>
WORD wRevenueRatio; //˰<>ձ<EFBFBD><D5B1><EFBFBD>
SCORE lServiceScore; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
SCORE lRestrictScore; //<2F><><EFBFBD>ƻ<EFBFBD><C6BB><EFBFBD>
SCORE lMinTableScore; //<2F><><EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD>
SCORE lMinEnterScore; //<2F><><EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD>
SCORE lMaxEnterScore; //<2F><><EFBFBD>߻<EFBFBD><DFBB><EFBFBD>
//<2F><>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD>
BYTE cbMinEnterMember; //<2F><><EFBFBD>ͻ<EFBFBD>Ա
BYTE cbMaxEnterMember; //<2F><><EFBFBD>߻<EFBFBD>Ա
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
DWORD dwServerRule; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
DWORD dwAttachUserRight; //<2F><><EFBFBD><EFBFBD>Ȩ<EFBFBD><C8A8>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
WORD wMaxPlayer; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ
WORD wTableCount; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ
WORD wServerPort; //<2F><><EFBFBD><EFBFBD><EFBFBD>˿<EFBFBD>
WORD wServerType; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
TCHAR szServerName[LEN_SERVER]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
BYTE cbDistributeRule; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
WORD wMinDistributeUser; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
WORD wMaxDistributeUser; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
WORD wDistributeTimeSpace; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
WORD wDistributeDrawCount; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
WORD wDistributeStartDelay; //<2F><>ʼ<EFBFBD><CABC>ʱ
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
TCHAR szDataBaseAddr[16]; //<2F><><EFBFBD>ӵ<EFBFBD>ַ
TCHAR szDataBaseName[32]; //<2F><><EFBFBD>ݿ<EFBFBD><DDBF><EFBFBD>
//<2F>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD>
BYTE cbCustomRule[1024]; //<2F>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD>
};
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
struct tagGameMatchOption
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
DWORD dwMatchID; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʶ
DWORD dwMatchNO; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
BYTE cbMatchType; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
TCHAR szMatchName[32]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
SCORE lMatchFee; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
BYTE cbMatchFeeType; //<2F>۷<EFBFBD><DBB7><EFBFBD><EFBFBD><EFBFBD>
BYTE cbMemberOrder; //<2F><>Ա<EFBFBD>ȼ<EFBFBD>
SCORE lMatchEnterScore; //׼<><D7BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
union unGameMatchType
{
//<2F><>ʱ<EFBFBD><CAB1>
struct tagLockTimeMatch
{
//ʱ<><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
DWORD dwEndDelayTime; //<2F>ӳ<EFBFBD>ʱ<EFBFBD><CAB1>
SYSTEMTIME MatchStartTime; //<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>
SYSTEMTIME MatchEndTime; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
SYSTEMTIME SignupStartTime; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ;
SYSTEMTIME SignupEndTime; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֹ;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
SCORE lMatchInitScore; //<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>
SCORE lMatchCullScore; //<2F><>̭<EFBFBD><CCAD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
WORD wMatchPlayCount; //<2F><><EFBFBD>پ<EFBFBD><D9BE><EFBFBD>
BYTE cbMatchMode; //<2F><><EFBFBD><EFBFBD>ģʽ;
DWORD dwChannelID; //<2F><><EFBFBD><EFBFBD>ID;
DWORD dwInviteCode; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ID;
DWORD dwQuality; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
DWORD dwCycle; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
} LockTime;
//<2F><>ʱ<EFBFBD><CAB1>
struct tagImmediateMatch
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
WORD wStartUserCount; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
WORD wAndroidUserCount; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
DWORD dwInitalBase; //<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>
DWORD dwInitalScore; //<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>=0ʱ <20><><EFBFBD><EFBFBD>ʹ<EFBFBD>õ<EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>
WORD wMinEnterGold; //<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>=0ʱ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٱ<EFBFBD><D9B1><EFBFBD><EFBFBD>Ҳ<EFBFBD><D2B2>б<EFBFBD><D0B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
BYTE cbPlayCount; //<2F><>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD>
BYTE cbSwitchTableCount; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(0Ϊ<30><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
WORD wPrecedeTimer; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
} Immediate;
} MatchType;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
WORD wRewardCount; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD>
TCHAR szMatchAwardContent[128]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
TCHAR szMatchContent[512]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
};
// ˽<>˳<EFBFBD><CBB3><EFBFBD><EFBFBD><EFBFBD>
struct tagPrivateFrameParameter
{
DWORD dwCreaterUserID; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
DWORD dwRoomNum; // <20><><EFBFBD><EFBFBD>ID
DWORD dwPlayCost; // <20><><EFBFBD>ĵ<EFBFBD><C4B5><EFBFBD>
// <20><><EFBFBD>ù<EFBFBD><C3B9><EFBFBD>
BYTE cbGameTypeIdex; //<2F><><EFBFBD>ݺ<EFBFBD><DDBA><EFBFBD><EFBFBD><EFBFBD><E9BDAB>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
BYTE cbGameCout; //<2F><>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD>;
DWORD dwGameRule; //<2F><>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD>;
BYTE cbEnterRoomScoreType; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
SCORE lInitEnterRoomScore; //<2F><><EFBFBD>뷿<EFBFBD><EBB7BF>ʱ<EFBFBD>ķ<EFBFBD><C4B7><EFBFBD>;
BYTE cbBaseScore;
// <20><><EFBFBD><EFBFBD><E1BFAA><EFBFBD><EFBFBD><EFBFBD>ֳ<EFBFBD>;
BYTE cbUnionGoldOpen; // <20>Ƿ<EFBFBD><C7B7>ǻ<EFBFBD><C7BB><EFBFBD>ģʽ
SCORE lScoreMultiple; //<2F><><EFBFBD><EFBFBD>
SCORE lGameGold; //Ӷ<><D3B6>
};
// ˽<>˳<EFBFBD><CBB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
struct tagPrivateFrameRecordInfo
{
BYTE cbFinishCout; //<2F><><EFBFBD>ɾ<EFBFBD><C9BE><EFBFBD>
};
//<2F><><EFBFBD>Ӳ<EFBFBD><D3B2><EFBFBD>
struct tagTableFrameParameter
{
//<2F>ں<EFBFBD><DABA><EFBFBD><EFBFBD><EFBFBD>
ITimerEngine * pITimerEngine; //ʱ<><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
IDataBaseEngine * pIRecordDataBaseEngine; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
IDataBaseEngine * pIKernelDataBaseEngine; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
IMainServiceFrame * pIMainServiceFrame; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
IAndroidUserManager * pIAndroidUserManager; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
IGameServiceManager * pIGameServiceManager; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD>
tagGameParameter * pGameParameter; //<2F><><EFBFBD>ò<EFBFBD><C3B2><EFBFBD>
tagGameServiceAttrib * pGameServiceAttrib; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
tagGameServiceOption * pGameServiceOption; //<2F><><EFBFBD>ò<EFBFBD><C3B2><EFBFBD>
tagGameMatchOption * pGameMatchOption; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
IUnknownEx * pIGameMatchServiceManager; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
IUnknownEx * pIGamePrivateServiceManager; //˽<>˳<EFBFBD><CBB3><EFBFBD><EFBFBD><EFBFBD>
};
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
struct tagAndroidUserParameter
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
bool bServiceContinue; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
DWORD dwMinSitInterval; //<2F><><EFBFBD>¼<EFBFBD><C2BC><EFBFBD>
DWORD dwMaxSitInterval; //<2F><><EFBFBD>¼<EFBFBD><C2BC><EFBFBD>
//<2F><><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD>
tagGameParameter * pGameParameter; //<2F><><EFBFBD>ò<EFBFBD><C3B2><EFBFBD>
tagGameServiceAttrib * pGameServiceAttrib; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
tagGameServiceOption * pGameServiceOption; //<2F><><EFBFBD>ò<EFBFBD><C3B2><EFBFBD>
tagGameMatchOption * pGameMatchOption; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F>ں<EFBFBD><DABA><EFBFBD><EFBFBD><EFBFBD>
ITimerEngine * pITimerEngine; //ʱ<><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
IServerUserManager * pIServerUserManager; //<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>
IGameServiceManager * pIGameServiceManager; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
IGameServiceCustomTime * pIGameServiceSustomTime; //ʱ<><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ITCPNetworkEngineEvent * pITCPNetworkEngineEvent; //<2F>¼<EFBFBD><C2BC>ӿ<EFBFBD>
};
//////////////////////////////////////////////////////////////////////////////////
//<2F><><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
struct tagScoreInfo
{
BYTE cbType; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
SCORE lScore; //<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>
SCORE lGrade; //<2F>û<EFBFBD><C3BB>ɼ<EFBFBD>
SCORE lRevenue; //<2F><>Ϸ˰<CFB7><CBB0>
BYTE cbLastScoreMultiple; //<2F><>һ<EFBFBD>ֻ<EFBFBD><D6BB>ֱ<EFBFBD><D6B1><EFBFBD>
};
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
struct tagVariationInfo
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
SCORE lScore; //<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>
SCORE lGrade; //<2F>û<EFBFBD><C3BB>ɼ<EFBFBD>
SCORE lInsure; //<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>
SCORE lRevenue; //<2F><>Ϸ˰<CFB7><CBB0>
//<2F><>Ϸ<EFBFBD><CFB7>Ϣ
BYTE cbNextScoreMultiple; //<2F><>һ<EFBFBD>ֻ<EFBFBD><D6BB>ֱ<EFBFBD><D6B1><EFBFBD>
DWORD dwWinCount; //ʤ<><CAA4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
DWORD dwLostCount; //ʧ<><CAA7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
DWORD dwDrawCount; //<2F>;<EFBFBD><CDBE><EFBFBD><EFBFBD><EFBFBD>
DWORD dwFleeCount; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
DWORD dwPlayTimeCount; //<2F><>Ϸʱ<CFB7><CAB1>
//ȫ<><C8AB><EFBFBD><EFBFBD>Ϣ
DWORD dwUserMedal; //<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>
DWORD dwExperience; //<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>
LONG lLoveLiness; //<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>
};
//<2F><>Ϸ<EFBFBD><CFB7>¼
struct tagGameScoreRecord
{
//<2F>û<EFBFBD><C3BB><EFBFBD>Ϣ
DWORD dwUserID; //<2F>û<EFBFBD><C3BB><EFBFBD>ʶ
WORD wChairID; //<2F><><EFBFBD>Ӻ<EFBFBD><D3BA><EFBFBD>
BYTE cbAndroid; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־
//<2F>ɼ<EFBFBD><C9BC><EFBFBD>Ϣ
SCORE lScore; //<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>
SCORE lGrade; //<2F>û<EFBFBD><C3BB>ɼ<EFBFBD>
SCORE lRevenue; //<2F><>Ϸ˰<CFB7><CBB0>
//<2F>û<EFBFBD><C3BB><EFBFBD>Ϣ
DWORD dwDBQuestID; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʶ
DWORD dwInoutIndex; //<2F><>¼<EFBFBD><C2BC><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
DWORD dwUserMemal; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ
DWORD dwPlayTimeCount; //<2F><>Ϸʱ<CFB7><CAB1>
void StreamValue(DataStream& kData,bool bSend)
{
Stream_VALUE(dwUserID);
Stream_VALUE(wChairID);
Stream_VALUE(cbAndroid);
Stream_VALUE(lScore);
Stream_VALUE(lGrade);
Stream_VALUE(lRevenue);
Stream_VALUE(dwDBQuestID);
Stream_VALUE(dwInoutIndex);
Stream_VALUE(dwUserMemal);
Stream_VALUE(dwPlayTimeCount);
}
};
//<2F><>Ϸ<EFBFBD><CFB7>¼Ԥ<C2BC><D4A4>
struct tagGameRecordOverLook
{
//<2F>û<EFBFBD><C3BB><EFBFBD>Ϣ
DWORD dwRecordID; //<2F>û<EFBFBD><C3BB><EFBFBD>ʶ
//<2F>ɼ<EFBFBD><C9BC><EFBFBD>Ϣ
SCORE lScore; //<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>
SCORE lGrade; //<2F>û<EFBFBD><C3BB>ɼ<EFBFBD>
SYSTEMTIME PlayerTime; //<2F><>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
void StreamValue(DataStream& kData,bool bSend)
{
Stream_VALUE(dwRecordID);
Stream_VALUE(lScore);
Stream_VALUE(lGrade);
Stream_VALUE_SYSTEMTIME(PlayerTime);
}
};
//<2F>ƿ<EFBFBD>
struct tagGameCardLibrary
{
WORD wKindID;
DWORD dwLibID;
DWORD dwCustomID;
BYTE cbCount; //<2F><><EFBFBD><EFBFBD>
BYTE cbData[LEN_CARD_LIB]; //<2F><><EFBFBD><EFBFBD>
};
//<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>
struct tagUserRule
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־
bool bLimitSameIP; //Ч<><D0A7><EFBFBD><EFBFBD>ַ
bool bLimitWinRate; //<2F><><EFBFBD><EFBFBD>ʤ<EFBFBD><CAA4>
bool bLimitFleeRate; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
bool bLimitGameScore; //<2F><><EFBFBD>Ʒ<EFBFBD><C6B7><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
WORD wMinWinRate; //<2F><><EFBFBD><EFBFBD>ʤ<EFBFBD><CAA4>
WORD wMaxFleeRate; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
LONG lMaxGameScore; //<2F><><EFBFBD>߷<EFBFBD><DFB7><EFBFBD>
LONG lMinGameScore; //<2F><><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD>
TCHAR szPassword[LEN_PASSWORD]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
};
//<2F>û<EFBFBD><C3BB><EFBFBD>Ϣ
struct tagUserInfoPlus
{
//<2F><>¼<EFBFBD><C2BC>Ϣ
DWORD dwLogonTime; //<2F><>¼ʱ<C2BC><CAB1>
DWORD dwInoutIndex; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʶ
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
WORD wBindIndex; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
DWORD dwClientAddr; //<2F><><EFBFBD>ӵ<EFBFBD>ַ
TCHAR szMachineID[LEN_MACHINE_ID]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʶ
//<2F><><EFBFBD>ӱ<EFBFBD><D3B1><EFBFBD>
DWORD dwUserRight; //<2F>û<EFBFBD>Ȩ<EFBFBD><C8A8>
DWORD dwMasterRight; //<2F><><EFBFBD><EFBFBD>Ȩ<EFBFBD><C8A8>
SCORE lRestrictScore; //<2F><><EFBFBD>ƻ<EFBFBD><C6BB><EFBFBD>
//<2F>ƿ<EFBFBD><C6BF><EFBFBD><EFBFBD><EFBFBD>
DWORD dwCardLibIndex; //ʹ<><CAB9><EFBFBD>ƿ<EFBFBD><C6BF><EFBFBD><EFBFBD><EFBFBD>
DWORD dwStartLibTime; //<2F>ƿ⿪ʼʹ<CABC><CAB9>ʱ<EFBFBD><CAB1>
DWORD dwStopLibTime; //<2F>ƿ<EFBFBD><C6BF><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>ʱ<EFBFBD><CAB1>
BYTE cbCardLibEnabled; //<2F>ƿ<EFBFBD><C6BF><EFBFBD>Ч<EFBFBD><D0A7>־
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
bool bMobileUser; //<2F>ֻ<EFBFBD><D6BB>û<EFBFBD>
bool bAndroidUser; //<2F><><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>
TCHAR szPassword[LEN_MD5]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
};
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
struct tagRequestResult
{
BYTE cbFailureCode; //ʧ<><CAA7>ԭ<EFBFBD><D4AD>
TCHAR szFailureReason[128]; //ʧ<><CAA7>ԭ<EFBFBD><D4AD>
};
//<2F><><EFBFBD><EFBFBD>״<EFBFBD><D7B4>
struct tagTableUserInfo
{
WORD wMinUserCount; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
WORD wTableUserCount; //<2F>û<EFBFBD><C3BB><EFBFBD>Ŀ
WORD wTableReadyCount; //׼<><D7BC><EFBFBD><EFBFBD>Ŀ
WORD wTableAndroidCount; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ
};
//<2F><><EFBFBD><EFBFBD>״<EFBFBD><D7B4>
struct tagAndroidUserInfo
{
WORD wFreeUserCount; //<2F>û<EFBFBD><C3BB><EFBFBD>Ŀ
WORD wPlayUserCount; //<2F>û<EFBFBD><C3BB><EFBFBD>Ŀ
WORD wSitdownUserCount; //<2F>û<EFBFBD><C3BB><EFBFBD>Ŀ
WORD wWaitUserCount; //<2F>û<EFBFBD><C3BB><EFBFBD>Ŀ
IAndroidUserItem * pIAndroidUserFree[MAX_ANDROID]; //<2F><><EFBFBD><EFBFBD><EFBFBD>ӿ<EFBFBD>
IAndroidUserItem * pIAndroidUserPlay[MAX_ANDROID]; //<2F><><EFBFBD><EFBFBD><EFBFBD>ӿ<EFBFBD>
IAndroidUserItem * pIAndroidUserSitdown[MAX_ANDROID]; //<2F><><EFBFBD><EFBFBD><EFBFBD>ӿ<EFBFBD>
IAndroidUserItem * pIAndroidUserWait[MAX_ANDROID]; //<2F><><EFBFBD><EFBFBD><EFBFBD>ӿ<EFBFBD>
};
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
struct tagAndroidService
{
DWORD dwSwitchTableInnings; //<2F><>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD>
};
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
struct tagAndroidParameter
{
//<2F><><EFBFBD>Ա<EFBFBD><D4B1><EFBFBD>
DWORD dwBatchID; //<2F><><EFBFBD>α<EFBFBD>ʶ
DWORD dwServiceMode; //<2F><><EFBFBD><EFBFBD>ģʽ
DWORD dwAndroidCount; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ
DWORD dwEnterTime; //<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
DWORD dwLeaveTime; //<2F>뿪ʱ<EBBFAA><CAB1>
SCORE lTakeMinScore; //Я<><D0AF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
SCORE lTakeMaxScore; //Я<><D0AF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
DWORD dwEnterMinInterval; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
DWORD dwEnterMaxInterval; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
DWORD dwLeaveMinInterval; //<2F><EFBFBD><EBBFAA><EFBFBD><EFBFBD>
DWORD dwLeaveMaxInterval; //<2F><EFBFBD><EBBFAA><EFBFBD><EFBFBD>
DWORD dwSwitchMinInnings; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
DWORD dwSwitchMaxInnings; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
};
//<2F>ʺ<EFBFBD><CABA><EFBFBD>Ϣ
struct tagAndroidAccountsInfo
{
DWORD dwUserID; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʶ
TCHAR szPassword[LEN_PASSWORD]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
};
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
struct tagAndroidItemConfig
{
tagAndroidAccountsInfo AndroidAccountsInfo; //<2F>ʺ<EFBFBD><CABA><EFBFBD>Ϣ
tagAndroidParameter * pAndroidParameter; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
};
//<2F><><EFBFBD><EFBFBD>״̬
enum EN_MatchStatus
{
EN_NULL=0,
EN_OUT,
};
//////////////////////////////////////////////////////////////////////////////////
#ifdef _UNICODE
#define VER_IGameServiceManager INTERFACE_VERSION(1,1)
static const GUID IID_IGameServiceManager={0xa975cceb,0x0331,0x4553,0xa1,0xe0,0xa7,0xc7,0x7a,0x7c,0x4e,0xfd};
#else
#define VER_IGameServiceManager INTERFACE_VERSION(1,1)
static const GUID IID_IGameServiceManager={0x4b2b9d8f,0xce1b,0x44f3,0xa5,0x22,0x65,0x1a,0x65,0xc9,0x0a,0x25};
#endif
//<2F><>Ϸ<EFBFBD>ӿ<EFBFBD>
interface IGameServiceManager : public IUnknownEx
{
//<2F><><EFBFBD><EFBFBD><EFBFBD>ӿ<EFBFBD>
public:
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
virtual VOID * CreateTableFrameSink(REFGUID Guid, DWORD dwQueryVer)=NULL;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
virtual VOID * CreateAndroidUserItemSink(REFGUID Guid, DWORD dwQueryVer)=NULL;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
virtual VOID * CreateGameDataBaseEngineSink(REFGUID Guid, DWORD dwQueryVer)=NULL;
//<2F><><EFBFBD><EFBFBD><EFBFBD>ӿ<EFBFBD>
public:
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
virtual bool GetServiceAttrib(tagGameServiceAttrib & GameServiceAttrib)=NULL;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
virtual bool RectifyParameter(tagGameServiceOption & GameServiceOption)=NULL;
};
//////////////////////////////////////////////////////////////////////////////////
#ifdef _UNICODE
#define VER_IGameServiceCustomRule INTERFACE_VERSION(1,1)
static const GUID IID_IGameServiceCustomRule={0x74a43b7d,0x7c29,0x4fb8,0xa5,0x00,0x8e,0x8d,0xff,0x6e,0x2a,0xdd};
#else
#define VER_IGameServiceCustomRule INTERFACE_VERSION(1,1)
static const GUID IID_IGameServiceCustomRule={0xc7ace01d,0x75f8,0x4af7,0xb1,0x80,0xa8,0x53,0xcd,0x2e,0x0a,0xb6};
#endif
//<2F><><EFBFBD>ýӿ<C3BD>
interface IGameServiceCustomRule : public IUnknownEx
{
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
virtual bool SaveCustomRule(LPBYTE pcbCustomRule, WORD wCustonSize)=NULL;
//Ĭ<><C4AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
virtual bool DefaultCustomRule(LPBYTE pcbCustomRule, WORD wCustonSize)=NULL;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
virtual HWND CreateCustomRule(CWnd * pParentWnd, CRect rcCreate, LPBYTE pcbCustomRule, WORD wCustonSize)=NULL;
};
//////////////////////////////////////////////////////////////////////////////////
#ifdef _UNICODE
#define VER_IGameServiceCustomTime INTERFACE_VERSION(1,1)
static const GUID IID_IGameServiceCustomTime={0xf57573b0,0x63c3,0x43a9,0x8c,0xb1,0xe2,0x22,0xd3,0x93,0xe2,0xb};
#else
#define VER_IGameServiceCustomTime INTERFACE_VERSION(1,1)
static const GUID IID_IGameServiceCustomTime = { 0xf57573b0, 0x63c3, 0x43a9, 0x8c, 0xb1, 0xe2, 0x22, 0xd3, 0x93, 0xe2, 0xb };
#endif
//ʱ<><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
interface IGameServiceCustomTime : public IUnknownEx
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
virtual DWORD GetAndroidTimerPulse() = NULL;
//ʱ<>Χ
virtual DWORD GetTableSinkTimeRange() = NULL;
//ʱ<>䵥Ԫ
virtual DWORD GetTimerEngineTimeCell() = NULL;
};
//////////////////////////////////////////////////////////////////////////////////
#ifdef _UNICODE
#define VER_IGameDataBaseEngine INTERFACE_VERSION(1,1)
static const GUID IID_IGameDataBaseEngine={0x47dcd531,0x2a19,0x4c0a,0x89,0xb6,0x9f,0xd8,0xe0,0xa7,0x85,0xee};
#else
#define VER_IGameDataBaseEngine INTERFACE_VERSION(1,1)
static const GUID IID_IGameDataBaseEngine={0x4310e733,0xc49b,0x4592,0xa3,0xb1,0x73,0x18,0xd1,0x53,0x2f,0x3e};
#endif
//<2F><>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD>
interface IGameDataBaseEngine : public IUnknownEx
{
//<2F><><EFBFBD>ò<EFBFBD><C3B2><EFBFBD>
public:
//<2F>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD>
virtual VOID * GetCustomRule()=NULL;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
virtual tagGameServiceAttrib * GetGameServiceAttrib()=NULL;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
virtual tagGameServiceOption * GetGameServiceOption()=NULL;
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
public:
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
virtual VOID * GetDataBase(REFGUID Guid, DWORD dwQueryVer)=NULL;
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
virtual VOID * GetDataBaseEngine(REFGUID Guid, DWORD dwQueryVer)=NULL;
//<2F><><EFBFBD>ܽӿ<DCBD>
public:
//Ͷ<>ݽ<EFBFBD><DDBD><EFBFBD>
virtual bool PostGameDataBaseResult(WORD wRequestID, VOID * pData, WORD wDataSize)=NULL;
};
//////////////////////////////////////////////////////////////////////////////////
#ifdef _UNICODE
#define VER_IGameDataBaseEngineSink INTERFACE_VERSION(1,1)
static const GUID IID_IGameDataBaseEngineSink={0x9b9111d9,0x7a71,0x41a1,0xae,0x78,0xd4,0xf3,0x20,0x08,0x24,0xdf};
#else
#define VER_IGameDataBaseEngineSink INTERFACE_VERSION(1,1)
static const GUID IID_IGameDataBaseEngineSink={0xa6c5e2cc,0x34c1,0x422c,0xa0,0x1b,0x54,0xab,0x68,0xfa,0xe6,0x81};
#endif
//<2F><><EFBFBD>ݽӿ<DDBD>
interface IGameDataBaseEngineSink : public IUnknownEx
{
//<2F><><EFBFBD>ýӿ<C3BD>
virtual bool InitializeSink(IUnknownEx * pIUnknownEx)=NULL;
//<2F><><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD>
virtual bool OnGameDataBaseRequest(DWORD dwUserID, WORD wTableID, WORD wChairID);
};
//////////////////////////////////////////////////////////////////////////////////
#ifdef _UNICODE
#define VER_IServerUserItem INTERFACE_VERSION(1,1)
static const GUID IID_IServerUserItem={0xcd43dce8,0x1e12,0x43be,0x8b,0x4f,0x94,0x95,0x92,0xa4,0xf6,0x19};
#else
#define VER_IServerUserItem INTERFACE_VERSION(1,1)
static const GUID IID_IServerUserItem={0xb5ce01a7,0x5cd1,0x4788,0x94,0x6c,0xa1,0xef,0x5b,0x30,0x2c,0xb7};
#endif
//<2F>û<EFBFBD><C3BB>ӿ<EFBFBD>
interface IServerUserItem : public IUnknownEx
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
public:
//<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>
virtual WORD GetBindIndex()=NULL;
//<2F>û<EFBFBD><C3BB><EFBFBD>ַ
virtual DWORD GetClientAddr()=NULL;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʶ
virtual LPCTSTR GetMachineID()=NULL;
//<2F><>¼<EFBFBD><C2BC>Ϣ
public:
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʶ
virtual DWORD GetDBQuestID()=NULL;
//<2F><>¼ʱ<C2BC><CAB1>
virtual DWORD GetLogonTime()=NULL;
//<2F><>¼<EFBFBD><C2BC><EFBFBD><EFBFBD>
virtual DWORD GetInoutIndex()=NULL;
//<2F>û<EFBFBD><C3BB><EFBFBD>Ϣ
public:
//<2F>û<EFBFBD><C3BB><EFBFBD>Ϣ
virtual tagUserInfo * GetUserInfo()=NULL;
//<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>
virtual tagUserRule * GetUserRule()=NULL;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
virtual tagUserProperty * GetUserProperty()=NULL;
//ʱ<><CAB1><EFBFBD><EFBFBD>Ϣ
virtual tagTimeInfo * GetTimeInfo()=NULL;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
public:
//<2F>û<EFBFBD><C3BB>Ա<EFBFBD>
virtual BYTE GetGender()=NULL;
//<2F>û<EFBFBD><C3BB><EFBFBD>ʶ
virtual DWORD GetUserID()=NULL;
//<2F><>Ϸ<EFBFBD><CFB7>ʶ
virtual DWORD GetGameID()=NULL;
//<2F>û<EFBFBD><C3BB>dz<EFBFBD>
virtual LPCTSTR GetNickName()=NULL;
//״̬<D7B4>ӿ<EFBFBD>
public:
//<2F><><EFBFBD>Ӻ<EFBFBD><D3BA><EFBFBD>
virtual WORD GetTableID()=NULL;
//<2F><><EFBFBD>Ӻ<EFBFBD><D3BA><EFBFBD>
virtual WORD GetChairID()=NULL;
//<2F>û<EFBFBD>״̬
virtual BYTE GetUserStatus()=NULL;
//Ȩ<><C8A8><EFBFBD><EFBFBD>Ϣ
public:
//<2F>û<EFBFBD>Ȩ<EFBFBD><C8A8>
virtual DWORD GetUserRight()=NULL;
//<2F><><EFBFBD><EFBFBD>Ȩ<EFBFBD><C8A8>
virtual DWORD GetMasterRight()=NULL;
//Ȩ<><C8A8><EFBFBD><EFBFBD>Ϣ
public:
//<2F>û<EFBFBD>Ȩ<EFBFBD><C8A8>
virtual BYTE GetMemberOrder()=NULL;
//<2F><><EFBFBD><EFBFBD>Ȩ<EFBFBD><C8A8>
virtual BYTE GetMasterOrder()=NULL;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
public:
//<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>
virtual SCORE GetUserScore()=NULL;
//<2F>û<EFBFBD><C3BB>ɼ<EFBFBD>
virtual SCORE GetUserGrade()=NULL;
//<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>
virtual SCORE GetUserInsure()=NULL;
//<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>;
virtual BYTE getScoreMultiple()=NULL;
//<2F>й<EFBFBD><D0B9><EFBFBD>Ϣ
public:
//<2F>йܻ<D0B9><DCBB><EFBFBD>
virtual SCORE GetTrusteeScore()=NULL;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
virtual SCORE GetFrozenedScore()=NULL;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
public:
//<2F>û<EFBFBD>ʤ<EFBFBD><CAA4>
virtual WORD GetUserWinRate()=NULL;
//<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>
virtual WORD GetUserLostRate()=NULL;
//<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>
virtual WORD GetUserDrawRate()=NULL;
//<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>
virtual WORD GetUserFleeRate()=NULL;
//<2F><>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD>
virtual DWORD GetUserPlayCount()=NULL;
//Ч<><D0A7><EFBFBD>ӿ<EFBFBD>
public:
//<2F>Ա<EFBFBD><D4B1>ʺ<EFBFBD>
virtual bool ContrastNickName(LPCTSTR pszNickName)=NULL;
//<2F>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD><EFBFBD>
virtual bool ContrastLogonPass(LPCTSTR pszPassword)=NULL;
//<2F><>Ϸ״̬
public:
//<2F><><EFBFBD><EFBFBD>״̬
virtual bool IsClientReady()=NULL;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
virtual VOID SetClientReady(bool bClientReady)=NULL;
//<2F><>ԭ״̬
virtual BYTE GetReUserStatus() = NULL;
//<2F><><EFBFBD><EFBFBD>״̬
virtual void SetReUserStatus(BYTE cbReUserStatus) = NULL;
//<2F>ֻ<EFBFBD><D6BB>û<EFBFBD>
public:
//<2F><><EFBFBD><EFBFBD>״̬
virtual bool IsMobileUser()=NULL;
//<2F><><EFBFBD>ÿ<EFBFBD><C3BF><EFBFBD>
virtual VOID SetMobileUser(bool bMobileUser)=NULL;
//<2F><><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>
public:
//<2F><><EFBFBD><EFBFBD>״̬
virtual bool IsAndroidUser()=NULL;
//<2F><><EFBFBD>ÿ<EFBFBD><C3BF><EFBFBD>
virtual VOID SetAndroidUser(bool bbMachineUser)=NULL;
//<2F><><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>
virtual bool IsCheatUser() = NULL;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>
virtual void SetCheatUser(bool bFlag) = NULL;
//<2F><>¼<EFBFBD>ӿ<EFBFBD>
public:
//<2F><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
virtual bool IsVariation()=NULL;
//<2F><>ѯ<EFBFBD><D1AF>¼
virtual bool QueryRecordInfo(tagVariationInfo & UserRecordInfo)=NULL;
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
virtual bool DistillVariation(tagVariationInfo & UserVariationInfo)=NULL;
//<2F><><EFBFBD><EFBFBD><EFBFBD>ӿ<EFBFBD>
public:
//<2F><><EFBFBD><EFBFBD>״̬
virtual bool SetUserStatus(BYTE cbUserStatus, WORD wTableID, WORD wChairID)=NULL;
//<2F><><EFBFBD><EFBFBD>״̬
virtual bool SetUserStatus(BYTE cbUserStatus) = NULL;
//д<><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
virtual bool WriteUserScore(SCORE lScore, SCORE lGrade, SCORE lRevenue, DWORD dwUserMedal, BYTE cbScoreType, BYTE cbLastScoreMultiple, DWORD dwPlayTimeCount)=NULL;
//<2F>޸<EFBFBD>Ȩ<EFBFBD><C8A8>
virtual VOID ModifyUserRight( DWORD dwAddRight, DWORD dwRemoveRight, bool bGameRight=true)=NULL;
//<2F><><EFBFBD><EFBFBD><EFBFBD>ӿ<EFBFBD>
public:
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
virtual bool FrozenedUserScore(SCORE lScore)=NULL;
//<2F><EFBFBD><E2B6B3><EFBFBD><EFBFBD>
virtual bool UnFrozenedUserScore(SCORE lScore)=NULL;
//<2F>޸Ľӿ<C4BD>
public:
//<2F>޸<EFBFBD><DEB8><EFBFBD>Ϣ
virtual bool ModifyUserProperty(SCORE lScore, LONG lLoveLiness)=NULL;
//<2F>߼<EFBFBD><DFBC>ӿ<EFBFBD>
public:
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
virtual bool DetachBindStatus()=NULL;
//<2F><><EFBFBD>в<EFBFBD><D0B2><EFBFBD>
virtual bool ModifyUserInsure(SCORE lScore, SCORE lInsure, SCORE lRevenue)=NULL;
//<2F><><EFBFBD>ò<EFBFBD><C3B2><EFBFBD>
virtual bool SetUserParameter(DWORD dwClientAddr, WORD wBindIndex, TCHAR szMachineID[LEN_MACHINE_ID], bool bAndroidUser, bool bClientReady)=NULL;
//<2F>ֻ<EFBFBD><D6BB><EFBFBD><EFBFBD><EFBFBD>
public:
//<2F>ֻ<EFBFBD><D6BB><EFBFBD><EFBFBD><EFBFBD>
virtual WORD GetMobileUserRule()=NULL;
//<2F><><EFBFBD>ö<EFBFBD><C3B6><EFBFBD>
virtual VOID SetMobileUserRule(WORD wMobileUserRule)=NULL;
//<2F><>ǰ<EFBFBD><C7B0>ҳ
virtual WORD GetMobileUserDeskPos()=NULL;
//<2F><>ǰ<EFBFBD><C7B0>ҳ
virtual VOID SetMobileUserDeskPos(WORD wMobileUserDeskPos)=NULL;
//<2F><>ҳ<EFBFBD><D2B3><EFBFBD><EFBFBD>
virtual WORD GetMobileUserDeskCount()=NULL;
//<2F><>ҳ<EFBFBD><D2B3><EFBFBD><EFBFBD>
virtual VOID SetMobileUserDeskCount(WORD wMobileUserDeskCount)=NULL;
//<2F><><EFBFBD><EFBFBD><EFBFBD>ӿ<EFBFBD>
public:
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
virtual VOID * GetMatchData()=NULL;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
virtual VOID SetMatchData(VOID * pMatchData)=NULL;
//<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
virtual DWORD GetSignUpTime()=NULL;
//<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
virtual VOID SetSignUpTime(DWORD dwSignUpTime)=NULL;
//<2F><><EFBFBD><EFBFBD>״̬
virtual BYTE GetUserMatchStatus()=NULL;
//<2F><><EFBFBD><EFBFBD>״̬
virtual VOID SetUserMatchStatus(BYTE cbMatchStatus) = NULL;
//<2F>ƿ<EFBFBD><C6BF>ӿ<EFBFBD>
public:
//<2F>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD>ƿ<EFBFBD>
virtual bool canUseCardLib() = NULL;
//<2F><>ȡ<EFBFBD>ƿ<EFBFBD><C6BF><EFBFBD><EFBFBD><EFBFBD>
virtual DWORD getCardLibIndex() = NULL;
//<2F><><EFBFBD><EFBFBD><EFBFBD>ƿ<EFBFBD><C6BF><EFBFBD><EFBFBD><EFBFBD>
virtual void setCardLibIndex(DWORD dwCardLibIndex) = NULL;
//<2F>ۼ<EFBFBD><DBBC>ƿ<EFBFBD><C6BF><EFBFBD><EFBFBD><EFBFBD>
virtual void addCardLibIndex() = NULL;
//<2F><><EFBFBD><EFBFBD><EFBFBD>ƿ<EFBFBD><C6BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
virtual void setCardLibEnabled(bool bEnabled) = NULL;
//<2F><><EFBFBD><EFBFBD><EFBFBD>ƿ<EFBFBD>ʹ<EFBFBD><CAB9>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
virtual void setUseCardLibTime(DWORD dwStartTime, DWORD dwEndTime) = NULL;
//˽<>˷<EFBFBD><CBB7>ӿ<EFBFBD>
public:
//<2F><><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD>
virtual VOID addPrivateAction(DWORD dwAction)=NULL;
//ͳ<><CDB3>˽<EFBFBD>˳<EFBFBD><CBB3><EFBFBD><EFBFBD>Ҿ<EFBFBD><D2BE><EFBFBD>
virtual VOID addPrivatePlayCout(WORD wCout) = NULL;
};
//////////////////////////////////////////////////////////////////////////////////
#ifdef _UNICODE
#define VER_IServerUserService INTERFACE_VERSION(1,1)
static const GUID IID_IServerUserService={0x2f4e25a9,0xad87,0x4a37,0x98,0x96,0x5c,0x50,0xf9,0x91,0x05,0x31};
#else
#define VER_IServerUserService INTERFACE_VERSION(1,1)
static const GUID IID_IServerUserService={0xcc4e885f,0x3357,0x4d68,0xb2,0x6b,0x78,0x8f,0x4b,0x3e,0x64,0xc3};
#endif
//<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>
interface IServerUserService : public IUnknownEx
{
};
//////////////////////////////////////////////////////////////////////////////////
#ifdef _UNICODE
#define VER_IServerUserItemSink INTERFACE_VERSION(1,1)
static const GUID IID_IServerUserItemSink={0x415be3e4,0xd48d,0x4a77,0x94,0xb7,0xd1,0x05,0xcd,0xa3,0x82,0x81};
#else
#define VER_IServerUserItemSink INTERFACE_VERSION(1,1)
static const GUID IID_IServerUserItemSink={0x9d0cfe02,0x0fe9,0x4a8b,0x97,0x95,0xac,0x32,0x67,0x5a,0xf8,0xb1};
#endif
//״̬<D7B4>ӿ<EFBFBD>
interface IServerUserItemSink : public IUnknownEx
{
//<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>
virtual bool OnEventUserItemScore(IServerUserItem * pIServerUserItem, BYTE cbReason)=NULL;
//<2F>û<EFBFBD>״̬
virtual bool OnEventUserItemStatus(IServerUserItem * pIServerUserItem, WORD wOldTableID=INVALID_TABLE, WORD wOldChairID=INVALID_CHAIR)=NULL;
//<2F>û<EFBFBD>Ȩ<EFBFBD><C8A8>
virtual bool OnEventUserItemRight(IServerUserItem *pIServerUserItem, DWORD dwAddRight, DWORD dwRemoveRight,bool bGameRight=true)=NULL;
};
//////////////////////////////////////////////////////////////////////////////////
#ifdef _UNICODE
#define VER_IServerUserManager INTERFACE_VERSION(1,1)
static const GUID IID_IServerUserManager={0xeb413ed6,0x185b,0x4ceb,0xa8,0xbd,0x54,0x74,0x19,0x89,0x6a,0x53};
#else
#define VER_IServerUserManager INTERFACE_VERSION(1,1)
static const GUID IID_IServerUserManager={0x77a3c4df,0x1d95,0x48c6,0xac,0x9d,0x75,0xd7,0x6c,0x2a,0x3c,0x0e};
#endif
//<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>
interface IServerUserManager : public IUnknownEx
{
//<2F><><EFBFBD>ýӿ<C3BD>
public:
//<2F><><EFBFBD>ýӿ<C3BD>
virtual bool SetServerUserItemSink(IUnknownEx * pIUnknownEx)=NULL;
//<2F><><EFBFBD>ҽӿ<D2BD>
public:
//ö<><C3B6><EFBFBD>û<EFBFBD>
virtual IServerUserItem * EnumUserItem(WORD wEnumIndex)=NULL;
//<2F><><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>
virtual IServerUserItem * SearchUserItem(DWORD dwUserID)=NULL;
//<2F><><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>
virtual IServerUserItem * SearchUserItem(LPCTSTR pszNickName)=NULL;
//ͳ<>ƽӿ<C6BD>
public:
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
virtual DWORD GetUserItemCount()=NULL;
//<2F><><EFBFBD><EFBFBD><EFBFBD>ӿ<EFBFBD>
public:
//ɾ<><C9BE><EFBFBD>û<EFBFBD>
virtual bool DeleteUserItem()=NULL;
//ɾ<><C9BE><EFBFBD>û<EFBFBD>
virtual bool DeleteUserItem(IServerUserItem * pIServerUserItem)=NULL;
//<2F><><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>
virtual bool InsertUserItem(IServerUserItem * * pIServerUserResult, tagUserInfo & UserInfo, tagUserInfoPlus & UserInfoPlus)=NULL;
};
//////////////////////////////////////////////////////////////////////////////////
#ifdef _UNICODE
#define VER_ITableFrame INTERFACE_VERSION(1,1)
static const GUID IID_ITableFrame={0x2e577d5f,0x1e01,0x44ff,0x9f,0xf4,0x01,0x16,0x23,0x1b,0x76,0x15};
#else
#define VER_ITableFrame INTERFACE_VERSION(1,1)
static const GUID IID_ITableFrame={0x860cd1cf,0x1a4f,0x4e35,0xb8,0x0c,0xd2,0x46,0xa4,0xef,0xfd,0xfb};
#endif
interface IGameMatchSink;
//<2F><><EFBFBD>ӽӿ<D3BD>
interface ITableFrame : public IUnknownEx
{
//<2F><><EFBFBD>Խӿ<D4BD>
public:
//<2F><><EFBFBD>Ӻ<EFBFBD><D3BA><EFBFBD>
virtual WORD GetTableID()=NULL;
//<2F><>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD>
virtual WORD GetChairCount()=NULL;
//<2F><>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>Ŀ
virtual WORD GetNullChairCount()=NULL;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ
virtual WORD GetOffLineUserCount()=NULL;
//<2F>û<EFBFBD><C3BB><EFBFBD>Ŀ
virtual WORD GetSitUserCount() = NULL;
//<2F><><EFBFBD>ò<EFBFBD><C3B2><EFBFBD>
public:
//<2F>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD>
virtual VOID * GetCustomRule()=NULL;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
virtual tagGameServiceAttrib * GetGameServiceAttrib()=NULL;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
virtual tagGameServiceOption * GetGameServiceOption()=NULL;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
virtual tagGameMatchOption * GetGameMatchOption() = NULL;
//<2F><><EFBFBD>ýӿ<C3BD>
public:
//<2F><>ʼģʽ
virtual BYTE GetStartMode()=NULL;
//<2F><>ʼģʽ
virtual VOID SetStartMode(BYTE cbStartMode)=NULL;
//<2F><>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD>
public:
//<2F><>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD>
virtual LONG GetCellScore()=NULL;
//<2F><>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD>
virtual VOID SetCellScore(LONG lCellScore)=NULL;
//<2F><>Ϣ<EFBFBD>ӿ<EFBFBD>
public:
//<2F><><EFBFBD><EFBFBD>״̬
virtual bool IsTableLocked()=NULL;
//<2F><>Ϸ״̬
virtual bool IsGameStarted()=NULL;
//<2F><>Ϸ״̬
virtual bool IsDrawStarted()=NULL;
//<2F><>Ϸ״̬
virtual bool IsTableStarted()=NULL;
//״̬<D7B4>ӿ<EFBFBD>
public:
//<2F><>ȡ״̬
virtual BYTE GetGameStatus()=NULL;
//<2F><><EFBFBD><EFBFBD>״̬
virtual VOID SetGameStatus(BYTE bGameStatus)=NULL;
//<2F><><EFBFBD>ƽӿ<C6BD>
public:
//<2F><>ʼ<EFBFBD><CABC>Ϸ
virtual bool StartGame()=NULL;
//<2F><>ɢ<EFBFBD><C9A2>Ϸ
virtual bool DismissGame()=NULL;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϸ
virtual bool ConcludeGame(BYTE cbGameStatus, BYTE cbReason = GER_NORMAL) = NULL;
//д<>ֽӿ<D6BD>
public:
//д<><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
virtual bool WriteUserScore(WORD wChairID, tagScoreInfo & ScoreInfo)=NULL;
//д<><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
virtual bool WriteTableScore(tagScoreInfo ScoreInfoArray[], WORD wScoreCount,DataStream kDataStream = DataStream())=NULL;
//<2F><><EFBFBD>ֱ<EFBFBD><D6B1><EFBFBD>
//virtual bool WriteScoreMultiple(WORD wChairID, BYTE cbScoreMultiple) = NULL;
//<2F><><EFBFBD><EFBFBD><EFBFBD>ӿ<EFBFBD>
public:
//<2F><><EFBFBD><EFBFBD>˰<EFBFBD><CBB0>
virtual SCORE CalculateRevenue(WORD wChairID, SCORE lScore)=NULL;
//<2F><><EFBFBD><EFBFBD><EFBFBD>޶<EFBFBD>
virtual SCORE QueryConsumeQuota(IServerUserItem * pIServerUserItem)=NULL;
//<2F>û<EFBFBD><C3BB>ӿ<EFBFBD>
public:
//Ѱ<><D1B0><EFBFBD>û<EFBFBD>
virtual IServerUserItem * SearchUserItem(DWORD dwUserID)=NULL;
//<2F><>Ϸ<EFBFBD>û<EFBFBD>
virtual IServerUserItem * GetTableUserItem(WORD wChairID)=NULL;
//<2F>Թ<EFBFBD><D4B9>û<EFBFBD>
virtual IServerUserItem * EnumLookonUserItem(WORD wEnumIndex)=NULL;
//ʱ<><CAB1><EFBFBD>ӿ<EFBFBD>
public:
//<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
virtual bool SetGameTimer(DWORD dwTimerID, DWORD dwElapse, DWORD dwRepeat, WPARAM dwBindParameter)=NULL;
//ɾ<><C9BE>ʱ<EFBFBD><CAB1>
virtual bool KillGameTimer(DWORD dwTimerID)=NULL;
//<2F><><EFBFBD><EFBFBD><EFBFBD>ӿ<EFBFBD>
public:
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
virtual bool SendTableData(WORD wChairID, WORD wSubCmdID)=NULL;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
virtual bool SendTableData(WORD wChairID, WORD wSubCmdID, VOID * pData, WORD wDataSize,WORD wMainCmdID=MDM_GF_GAME)=NULL;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
virtual bool SendLookonData(WORD wChairID, WORD wSubCmdID)=NULL;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
virtual bool SendLookonData(WORD wChairID, WORD wSubCmdID, VOID * pData, WORD wDataSize)=NULL;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
virtual bool SendUserItemData(IServerUserItem * pIServerUserItem, WORD wSubCmdID)=NULL;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
virtual bool SendUserItemData(IServerUserItem * pIServerUserItem, WORD wSubCmdID, VOID * pData, WORD wDataSize)=NULL;
//<2F><><EFBFBD>ܽӿ<DCBD>
public:
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
virtual bool SendGameMessage(LPCTSTR lpszMessage, WORD wType)=NULL;
//<2F><>Ϸ<EFBFBD><CFB7>Ϣ
virtual bool SendGameMessage(IServerUserItem * pIServerUserItem, LPCTSTR lpszMessage, WORD wType)=NULL;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
virtual bool SendRoomMessage(IServerUserItem * pIServerUserItem, LPCTSTR lpszMessage, WORD wType)=NULL;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
public:
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
virtual bool PerformStandUpAction(IServerUserItem * pIServerUserItem)=NULL;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
virtual bool PerformStandUpActionEx(IServerUserItem * pIServerUserItem)=NULL;
//<2F>Թ۶<D4B9><DBB6><EFBFBD>
virtual bool PerformLookonAction(WORD wChairID, IServerUserItem * pIServerUserItem)=NULL;
//<2F><><EFBFBD><EFBFBD><C2B6><EFBFBD>
virtual bool PerformSitDownAction(WORD wChairID, IServerUserItem * pIServerUserItem, LPCTSTR lpszPassword=NULL)=NULL;
//<2F><><EFBFBD>ܽӿ<DCBD>
public:
//<2F><><EFBFBD>ͳ<EFBFBD><CDB3><EFBFBD>
virtual bool SendGameScene(IServerUserItem * pIServerUserItem, VOID * pData, WORD wDataSize)=NULL;
//˽<>˷<EFBFBD>
public:
//<2F><><EFBFBD>ýӿ<C3BD>
virtual bool SetTableFramePrivate(IUnknownEx * pIUnknownEx)=NULL;
//<2F><><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD>
virtual void AddPrivateAction(DWORD dwChairID,BYTE bActionIdex) = NULL;
//<2F><><EFBFBD><EFBFBD>˽<EFBFBD>˳<EFBFBD><CBB3><EFBFBD>Ϣ
virtual void SetPrivateInfo(tagPrivateFrameParameter &PriavateFrame) = NULL;
//<2F><>ȡ˽<C8A1>˳<EFBFBD><CBB3><EFBFBD><EFBFBD><EFBFBD>
virtual tagPrivateFrameParameter* GetPrivateFrameInfo() = NULL;
//<2F><>ȡ<EFBFBD><C8A1>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
virtual tagPrivateFrameRecordInfo* GetPrivateFrameRecord()=NULL;
//ͳ<><CDB3>˽<EFBFBD>˳<EFBFBD><CBB3><EFBFBD><EFBFBD>Ҿ<EFBFBD><D2BE><EFBFBD>
virtual VOID addPrivatePlayCout(WORD wCout) = NULL;
//<2F><><EFBFBD><EFBFBD>˽<EFBFBD>˳<EFBFBD><CBB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
virtual void ResetPrivateEndInfo() = NULL;
//<2F><><EFBFBD><EFBFBD>˽<EFBFBD>˳<EFBFBD><CBB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2>
virtual void GetPrivateEndInfo(DataStream &kDataStream, bool bSend) = NULL;
//<2F>ж<EFBFBD>˽<EFBFBD>˳<EFBFBD><CBB3>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>
virtual bool IsPrivateEnd() = NULL;
//<2F><>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
virtual WORD GetRealChairCount() = NULL;
//<2F>ƿ<EFBFBD><C6BF>ӿ<EFBFBD>
public:
//<2F><>ȡ<EFBFBD>ƿ<EFBFBD>
virtual tagGameCardLibrary* GetGameCardLibrary(DWORD dwIndex=0xFFFFFFFF) = NULL;
//<2F><><EFBFBD><EFBFBD><EFBFBD>ӿ<EFBFBD>
public:
//<2F><><EFBFBD>ýӿ<C3BD>
virtual bool SetTableFrameHook(IUnknownEx * pIUnknownEx)=NULL;
//<2F><>ȡ<EFBFBD>ӿ<EFBFBD>
virtual IUnknownEx * GetTableFrameHook()=NULL;
//α<><CEB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
virtual bool ImitateGameOption(IServerUserItem * pIServerUserItem) = NULL;
};
//////////////////////////////////////////////////////////////////////////////////
#ifdef _UNICODE
#define VER_ITableFrameSink INTERFACE_VERSION(1,1)
static const GUID IID_ITableFrameSink={0x9476b154,0x8beb,0x4f7e,0xaf,0x64,0xd2,0xb1,0x1a,0xda,0x5e,0xc4};
#else
#define VER_ITableFrameSink INTERFACE_VERSION(1,1)
static const GUID IID_ITableFrameSink={0x38a74df5,0x6245,0x46c7,0xb6,0xce,0x53,0xf9,0xd5,0xbf,0x6d,0xe6};
#endif
//<2F>ص<EFBFBD><D8B5>ӿ<EFBFBD>
interface ITableFrameSink : public IUnknownEx
{
//<2F><><EFBFBD><EFBFBD><EFBFBD>ӿ<EFBFBD>
public:
//<2F><>λ<EFBFBD>ӿ<EFBFBD>
virtual VOID RepositionSink()=NULL;
//<2F><><EFBFBD>ýӿ<C3BD>
virtual bool Initialization(IUnknownEx * pIUnknownEx)=NULL;
//<2F><>ѯ<EFBFBD>ӿ<EFBFBD>
public:
//<2F><>ѯ<EFBFBD>޶<EFBFBD>
virtual SCORE QueryConsumeQuota(IServerUserItem * pIServerUserItem)=NULL;
//<2F><><EFBFBD>ٻ<EFBFBD><D9BB><EFBFBD>
virtual SCORE QueryLessEnterScore(WORD wChairID, IServerUserItem * pIServerUserItem)=NULL;
//<2F><>ѯ<EFBFBD>Ƿ<EFBFBD><C7B7>۷<EFBFBD><DBB7><EFBFBD><EFBFBD><EFBFBD>
virtual bool QueryBuckleServiceCharge(WORD wChairID)=NULL;
//<2F><>Ϸ<EFBFBD>¼<EFBFBD>
public:
//<2F><>Ϸ<EFBFBD><CFB7>ʼ
virtual bool OnEventGameStart()=NULL;
//<2F><>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD>
virtual bool OnEventGameConclude(WORD wChairID, IServerUserItem * pIServerUserItem, BYTE cbReason)=NULL;
//<2F><><EFBFBD>ͳ<EFBFBD><CDB3><EFBFBD>
virtual bool OnEventSendGameScene(WORD wChairID, IServerUserItem * pIServerUserItem, BYTE cbGameStatus, bool bSendSecret)=NULL;
//<2F>¼<EFBFBD><C2BC>ӿ<EFBFBD>
public:
//ʱ<><CAB1><EFBFBD>¼<EFBFBD>
virtual bool OnTimerMessage(DWORD dwTimerID, WPARAM dwBindParameter)=NULL;
//<2F><><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD>
virtual bool OnDataBaseMessage(WORD wRequestID, VOID * pData, WORD wDataSize)=NULL;
//<2F><><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD>
virtual bool OnUserScroeNotify(WORD wChairID, IServerUserItem * pIServerUserItem, BYTE cbReason)=NULL;
//<2F><><EFBFBD><EFBFBD><EFBFBD>ӿ<EFBFBD>
public:
//<2F><>Ϸ<EFBFBD><CFB7>Ϣ
virtual bool OnGameMessage(WORD wSubCmdID, VOID * pData, WORD wDataSize, IServerUserItem * pIServerUserItem)=NULL;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
virtual bool OnFrameMessage(WORD wSubCmdID, VOID * pData, WORD wDataSize, IServerUserItem * pIServerUserItem)=NULL;
//<2F><><EFBFBD><EFBFBD><EFBFBD>ӿ<EFBFBD>
public:
//<2F><><EFBFBD>û<EFBFBD><C3BB><EFBFBD>
virtual void SetGameBaseScore(LONG lBaseScore)=NULL;
//˽<>˳<EFBFBD><CBB3>ӿ<EFBFBD>
public:
//<2F><><EFBFBD><EFBFBD>˽<EFBFBD>˳<EFBFBD><CBB3><EFBFBD>Ϣ
virtual void SetPrivateInfo(BYTE bGameTypeIdex,DWORD bGameRuleIdex)=NULL;
//<2F><><EFBFBD><EFBFBD>˽<EFBFBD>˳<EFBFBD><CBB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
virtual void ResetPrivateEndInfo() = NULL;
//<2F><><EFBFBD><EFBFBD>˽<EFBFBD>˳<EFBFBD><CBB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2>
virtual void GetPrivateEndInfo(DataStream &kDataStream, bool bSend) = NULL;
//<2F>ж<EFBFBD>˽<EFBFBD>˳<EFBFBD><CBB3>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>
virtual bool IsPrivateEnd() = NULL;
//<2F><>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
virtual WORD GetRealChairCount() = NULL;
};
//////////////////////////////////////////////////////////////////////////////////
#ifdef _UNICODE
#define VER_ITableUserAction INTERFACE_VERSION(1,1)
static const GUID IID_ITableUserAction={0x0f9aa3f9,0xdba4,0x49cb,0x88,0x4f,0xd9,0x11,0xaf,0x24,0xfb,0x8d};
#else
#define VER_ITableUserAction INTERFACE_VERSION(1,1)
static const GUID IID_ITableUserAction={0xc97c060b,0xcf0e,0x40b7,0x93,0x30,0x97,0xa4,0xf6,0x8c,0xca,0x84};
#endif
//<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>
interface ITableUserAction : public IUnknownEx
{
//<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>
virtual bool OnActionUserOffLine(WORD wChairID, IServerUserItem * pIServerUserItem) = NULL;
//<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>
virtual bool OnActionUserSitDown(WORD wChairID, IServerUserItem * pIServerUserItem, bool bLookonUser)=NULL;
//<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>
virtual bool OnActionUserStandUp(WORD wChairID, IServerUserItem * pIServerUserItem, bool bLookonUser)=NULL;
//<2F>û<EFBFBD>ͬ<EFBFBD><CDAC>
virtual bool OnActionUserOnReady(WORD wChairID, IServerUserItem * pIServerUserItem, VOID * pData, WORD wDataSize)=NULL;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
virtual bool OnActionUserFangKaCheck(WORD wChairID, IServerUserItem * pIServerUserItem, SCORE lUserInsure) = NULL;
//<2F>û<EFBFBD><C3BB><EFBFBD>ʼ<EFBFBD><CABC>Ϸ
virtual bool OnActionUserOnStart(WORD wChairID, IServerUserItem * pIServerUserItem, VOID * pData, WORD wDataSize) = NULL;
//<2F>û<EFBFBD><C3BB><EFBFBD>ʼ<EFBFBD><CABC>Ϸ
virtual bool OnActionUserStartGame(WORD wChairID, IServerUserItem * pIServerUserItem, VOID * pData, WORD wDataSize) = NULL;
};
//////////////////////////////////////////////////////////////////////////////////
#ifdef _UNICODE
#define VER_ITableUserRequest INTERFACE_VERSION(1,1)
static const GUID IID_ITableUserRequest={0x7a810ebe,0x3835,0x41b5,0xba,0x7e,0x02,0x97,0x8c,0x13,0x73,0x50};
#else
#define VER_ITableUserRequest INTERFACE_VERSION(1,1)
static const GUID IID_ITableUserRequest={0x7ad17e89,0xcb5b,0x472a,0xac,0xeb,0x84,0x4d,0x4f,0xa1,0x4c,0x38};
#endif
//<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>
interface ITableUserRequest : public IUnknownEx
{
//<2F>Թ<EFBFBD><D4B9><EFBFBD><EFBFBD><EFBFBD>
virtual bool OnUserRequestLookon(WORD wChairID, IServerUserItem * pIServerUserItem, tagRequestResult & RequestResult)=NULL;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
virtual bool OnUserRequestSitDown(WORD wChairID, IServerUserItem * pIServerUserItem, tagRequestResult & RequestResult)=NULL;
};
//////////////////////////////////////////////////////////////////////////////////
#ifdef _UNICODE
#define VER_IMainServiceFrame INTERFACE_VERSION(1,1)
static const GUID IID_IMainServiceFrame={0xef3efa64,0x788b,0x4299,0x80,0x99,0xdd,0xed,0x08,0xde,0x57,0xc1};
#else
#define VER_IMainServiceFrame INTERFACE_VERSION(1,1)
static const GUID IID_IMainServiceFrame={0xbaaf5584,0xf9b4,0x41b6,0xae,0x6b,0xef,0x4d,0x54,0x41,0xf8,0x32};
#endif
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
interface IMainServiceFrame : public IUnknownEx
{
//<2F><>Ϣ<EFBFBD>ӿ<EFBFBD>
public:
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
virtual bool SendRoomMessage(LPCTSTR lpszMessage, WORD wType)=NULL;
//<2F><>Ϸ<EFBFBD><CFB7>Ϣ
virtual bool SendGameMessage(LPCTSTR lpszMessage, WORD wType)=NULL;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
virtual bool SendRoomMessage(IServerUserItem * pIServerUserItem, LPCTSTR lpszMessage, WORD wType)=NULL;
//<2F><>Ϸ<EFBFBD><CFB7>Ϣ
virtual bool SendGameMessage(IServerUserItem * pIServerUserItem, LPCTSTR lpszMessage, WORD wType)=NULL;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
virtual bool SendRoomMessage(DWORD dwSocketID, LPCTSTR lpszMessage, WORD wType, bool bAndroid)=NULL;
//<2F><><EFBFBD>͸<EFBFBD><CDB8><EFBFBD><EFBFBD><EFBFBD>Ϣ
virtual bool SendUserInfoPacket(IServerUserItem * pIServerUserItem, IServerUserItem * pISendToUserItem) = NULL;
//<2F><><EFBFBD><EFBFBD><EFBFBD>ӿ<EFBFBD>
public:
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
virtual bool SendData(BYTE cbSendMask, WORD wMainCmdID, WORD wSubCmdID, VOID * pData, WORD wDataSize)=NULL;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
virtual bool SendData(DWORD dwContextID, WORD wMainCmdID, WORD wSubCmdID, VOID * pData, WORD wDataSize)=NULL;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
virtual bool SendData(IServerUserItem * pIServerUserItem, WORD wMainCmdID, WORD wSubCmdID, VOID * pData, WORD wDataSize)=NULL;
//Ⱥ<><C8BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
virtual bool SendDataBatchToMobileUser(WORD wCmdTable, WORD wMainCmdID, WORD wSubCmdID, VOID * pData, WORD wDataSize)=NULL;
//<2F><><EFBFBD>ܽӿ<DCBD>
public:
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
virtual bool InsertDistribute(IServerUserItem * pIServerUserItem)=NULL;
//ɾ<><C9BE><EFBFBD>û<EFBFBD>
virtual bool DeleteDistribute(IServerUserItem * pIServerUserItem) = NULL;
//<2F><><EFBFBD>дʹ<D0B4><CAB9><EFBFBD>
virtual void SensitiveWordFilter(LPCTSTR pMsg, LPTSTR pszFiltered, int nMaxLen)=NULL;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
virtual VOID UnLockAndroidUser(WORD wServerID, WORD wBatchID) = NULL;
};
//////////////////////////////////////////////////////////////////////////////////
#ifdef _UNICODE
#define VER_IAndroidUserItem INTERFACE_VERSION(1,1)
static const GUID IID_IAndroidUserItem={0xf6856fe1,0xc93e,0x4166,0xbc,0x92,0xf7,0x43,0xad,0x97,0x1c,0xa8};
#else
#define VER_IAndroidUserItem INTERFACE_VERSION(1,1)
static const GUID IID_IAndroidUserItem={0xb1faa2f4,0x9804,0x4c6f,0x9d,0xfc,0xb1,0x0a,0x08,0x8a,0x22,0x69};
#endif
//<2F><><EFBFBD><EFBFBD><EFBFBD>˽ӿ<CBBD>
interface IAndroidUserItem : public IUnknownEx
{
//<2F><>Ϣ<EFBFBD>ӿ<EFBFBD>
public:
//<2F><>ȡ I D
virtual DWORD GetUserID() = NULL;
//<2F><><EFBFBD>Ӻ<EFBFBD><D3BA><EFBFBD>
virtual WORD GetTableID() = NULL;
//<2F><><EFBFBD>Ӻ<EFBFBD><D3BA><EFBFBD>
virtual WORD GetChairID() = NULL;
//״̬<D7B4><CCAC><EFBFBD><EFBFBD>
public:
//<2F><>ȡ״̬
virtual BYTE GetGameStatus() = NULL;
//<2F><><EFBFBD><EFBFBD>״̬
virtual VOID SetGameStatus(BYTE cbGameStatus) = NULL;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
public:
//<2F><>ȡ״̬
virtual tagAndroidService * GetAndroidService() = NULL;
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
virtual tagAndroidParameter * GetAndroidParameter() = NULL;
//<2F><><EFBFBD>ܽӿ<DCBD>
public:
//<2F><>ȡ<EFBFBD>Լ<EFBFBD>
virtual IServerUserItem * GetMeUserItem() = NULL;
//<2F><>Ϸ<EFBFBD>û<EFBFBD>
virtual IServerUserItem * GetTableUserItem(WORD wChariID) = NULL;
//<2F><><EFBFBD>нӿ<D0BD>
public:
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϸ<EFBFBD><CFB7>
virtual bool PerformSaveScore(SCORE lScore) = NULL;
//<2F><>ȡ<EFBFBD><C8A1>Ϸ<EFBFBD><CFB7>
virtual bool PerformTakeScore(SCORE lScore) = NULL;
//<2F><><EFBFBD><EFBFBD><EFBFBD>ӿ<EFBFBD>
public:
//<2F><><EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD>
virtual bool SendSocketData(WORD wSubCmdID) = NULL;
//<2F><><EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD>
virtual bool SendSocketData(WORD wSubCmdID, VOID * pData, WORD wDataSize) = NULL;
//<2F><><EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD>
virtual bool SendSocketData(WORD wMainCmdID, WORD wSubCmdID, VOID * pData, WORD wDataSize) = NULL;
//<2F><><EFBFBD><EFBFBD><EFBFBD>ӿ<EFBFBD>
public:
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
virtual bool JudgeAndroidActionAndRemove(WORD wAction) = NULL;
//<2F><><EFBFBD>ܽӿ<DCBD>
public:
//ɾ<><C9BE>ʱ<EFBFBD><CAB1>
virtual bool KillGameTimer(UINT nTimerID) = NULL;
//<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
virtual bool SetGameTimer(UINT nTimerID, UINT nElapse) = NULL;
//<2F><><EFBFBD><EFBFBD>׼<EFBFBD><D7BC>
virtual bool SendUserReady(VOID * pData, WORD wDataSize) = NULL;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
virtual bool SendChatMessage(DWORD dwTargetUserID, LPCTSTR pszChatString, COLORREF crFontColor)=NULL;
};
//////////////////////////////////////////////////////////////////////////////////
#ifdef _UNICODE
#define VER_IAndroidUserItemSink INTERFACE_VERSION(1,1)
static const GUID IID_IAndroidUserItemSink={0x0967632c,0x93da,0x4f7f,0x98,0xe4,0x6f,0x9f,0xf2,0xca,0x7b,0xc4};
#else
#define VER_IAndroidUserItemSink INTERFACE_VERSION(1,1)
static const GUID IID_IAndroidUserItemSink={0x1e8a1918,0x572b,0x453b,0xbc,0x0b,0x6b,0x61,0x70,0xa3,0x3c,0xca};
#endif
//<2F><><EFBFBD><EFBFBD><EFBFBD>˽ӿ<CBBD>
interface IAndroidUserItemSink : public IUnknownEx
{
//<2F><><EFBFBD>ƽӿ<C6BD>
public:
//<2F><><EFBFBD>ýӿ<C3BD>
virtual bool RepositionSink() = NULL;
//<2F><>ʼ<EFBFBD>ӿ<EFBFBD>
virtual bool Initialization(IUnknownEx * pIUnknownEx) = NULL;
//<2F><>Ϸ<EFBFBD>¼<EFBFBD>
public:
//ʱ<><CAB1><EFBFBD><EFBFBD>Ϣ
virtual bool OnEventTimer(UINT nTimerID) = NULL;
//<2F><>Ϸ<EFBFBD><CFB7>Ϣ
virtual bool OnEventGameMessage(WORD wSubCmdID, VOID * pData, WORD wDataSize) = NULL;
//<2F><>Ϸ<EFBFBD><CFB7>Ϣ
virtual bool OnEventFrameMessage(WORD wSubCmdID, VOID * pData, WORD wDataSize) = NULL;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
virtual bool OnEventSceneMessage(BYTE cbGameStatus, bool bLookonOther, VOID * pData, WORD wDataSize) = NULL;
//<2F>û<EFBFBD><C3BB>¼<EFBFBD>
public:
//<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>
virtual VOID OnEventUserEnter(IAndroidUserItem * pIAndroidUserItem, bool bLookonUser) = NULL;
//<2F>û<EFBFBD><C3BB>
virtual VOID OnEventUserLeave(IAndroidUserItem * pIAndroidUserItem, bool bLookonUser) = NULL;
//<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>
virtual VOID OnEventUserScore(IAndroidUserItem * pIAndroidUserItem, bool bLookonUser) = NULL;
//<2F>û<EFBFBD>״̬
virtual VOID OnEventUserStatus(IAndroidUserItem * pIAndroidUserItem, bool bLookonUser) = NULL;
};
//////////////////////////////////////////////////////////////////////////////////
#ifdef _UNICODE
#define VER_IAndroidUserManager INTERFACE_VERSION(1,1)
static const GUID IID_IAndroidUserManager={0x0c963240,0xa798,0x4e33,0x81,0x28,0x97,0x3d,0x05,0xe7,0x7f,0x89};
#else
#define VER_IAndroidUserManager INTERFACE_VERSION(1,1)
static const GUID IID_IAndroidUserManager={0xba43054d,0x924b,0x4013,0xb2,0x6d,0xa6,0x91,0xb6,0x20,0x23,0xb2};
#endif
//<2F><><EFBFBD><EFBFBD><EFBFBD>˽ӿ<CBBD>
interface IAndroidUserManager : public IUnknownEx
{
//<2F><><EFBFBD>ƽӿ<C6BD>
public:
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
virtual bool StartService() = NULL;
//ֹͣ<CDA3><D6B9><EFBFBD><EFBFBD>
virtual bool ConcludeService() = NULL;
//<2F><><EFBFBD>ýӿ<C3BD>
public:
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
virtual bool InitAndroidUser(tagAndroidUserParameter & AndroidUserParameter) = NULL;
//<2F>Ƴ<EFBFBD><C6B3><EFBFBD><EFBFBD><EFBFBD>
virtual bool RemoveAndroidParameter(DWORD dwBatchID) = NULL;
//<2F><><EFBFBD>Ӳ<EFBFBD><D3B2><EFBFBD>
virtual bool AddAndroidParameter(tagAndroidParameter AndroidParameter[], WORD wParemeterCount) = NULL;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
virtual bool InsertAndroidInfo(tagAndroidAccountsInfo AndroidAccountsInfo[], WORD wAndroidCount, DWORD dwBatchID) = NULL;
//<2F><><EFBFBD><EFBFBD><EFBFBD>ӿ<EFBFBD>
public:
//ɾ<><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
virtual bool DeleteAndroidUserItem(DWORD dwAndroidID, bool bStockRetrieve) = NULL;
//<2F><><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>
virtual IAndroidUserItem * SearchAndroidUserItem(DWORD dwUserID, DWORD dwContextID) = NULL;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
virtual IAndroidUserItem * CreateAndroidUserItem(tagAndroidItemConfig & AndroidItemConfig) = NULL;
//<2F>¼<EFBFBD><C2BC>ӿ<EFBFBD>
public:
//<2F><><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD>
virtual bool OnEventTimerPulse(DWORD dwTimerID, WPARAM dwBindParameter) = NULL;
//״̬<D7B4>ӿ<EFBFBD>
public:
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ
virtual WORD GetAndroidCount() = NULL;
//<2F><><EFBFBD>ػ<EFBFBD><D8BB><EFBFBD>
virtual bool GetAndroidLoadInfo(DWORD & dwBatchID, DWORD & dwLoadCount) = NULL;
//<2F>û<EFBFBD>״<EFBFBD><D7B4>
virtual WORD GetAndroidUserInfo(tagAndroidUserInfo & AndroidUserInfo, DWORD dwServiceMode) = NULL;
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
virtual tagGameServiceOption* GetGameServiceOption() = NULL;
//<2F><>ȡ<EFBFBD><C8A1>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD>
virtual tagGameServiceAttrib* GetGameServiceAttrib() = NULL;
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
virtual tagGameMatchOption* GetGameMatchOption() = NULL;
//<2F><><EFBFBD><EFBFBD><EFBFBD>ӿ<EFBFBD>
public:
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
virtual bool SendDataToClient(WORD wMainCmdID, WORD wSubCmdID, VOID * pData, WORD wDataSize) = NULL;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
virtual bool SendDataToClient(DWORD dwAndroidID, WORD wMainCmdID, WORD wSubCmdID, VOID * pData, WORD wDataSize) = NULL;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
virtual bool SendDataToServer(DWORD dwAndroidID, WORD wMainCmdID, WORD wSubCmdID, VOID * pData, WORD wDataSize) = NULL;
};
//////////////////////////////////////////////////////////////////////////////////
#ifdef _UNICODE
#define VER_IQueryServiceSink INTERFACE_VERSION(1,1)
static const GUID IID_IQueryServiceSink={0x0c963248,0xa798,0x4e33,0x88,0x28,0x98,0x3d,0x05,0xe7,0x7f,0x89};
#else
#define VER_IQueryServiceSink INTERFACE_VERSION(1,1)
static const GUID IID_IQueryServiceSink={0xba43054d,0x924b,0x4013,0xb2,0x6d,0xa6,0x96,0xb6,0x26,0x26,0xb2};
#endif
//<2F><>ѯ<EFBFBD>ӿ<EFBFBD>
interface IQueryServiceSink : public IUnknownEx
{
//<2F><>ѯ<EFBFBD>Ƿ<EFBFBD><C7B7>۷<EFBFBD><DBB7><EFBFBD><EFBFBD><EFBFBD>
virtual bool QueryBuckleServiceCharge(WORD wChairID)=NULL;
};
//////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////
#ifdef _UNICODE
#define VER_IDBCorrespondManager INTERFACE_VERSION(1,1)
static const GUID IID_IDBCorrespondManager={0x0c963248,0xa796,0x4e33,0x86,0x28,0x98,0x3d,0x05,0xe7,0x7f,0x89};
#else
#define VER_IDBCorrespondManager INTERFACE_VERSION(1,1)
static const GUID IID_IDBCorrespondManager={0xba43154d,0x924b,0x4018,0xb2,0x6d,0xa6,0x96,0xb6,0x28,0x26,0xb2};
#endif
//<2F><>ѯ<EFBFBD>ӿ<EFBFBD>
interface IDBCorrespondManager : public IServiceModule
{
//<2F><><EFBFBD>ýӿ<C3BD>
public:
//<2F><><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3>
virtual bool __cdecl InitDBCorrespondManager(IDataBaseEngine * pIDataBaseEngine)=NULL;
//<2F><><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD>
public:
//<2F><><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD>
virtual bool __cdecl PostDataBaseRequest(DWORD dwUserID, WORD wRequestID, DWORD dwContextID, VOID * pData, WORD wDataSize, BYTE cbCache = FALSE)=NULL;
//ͬ<><CDAC><EFBFBD>¼<EFBFBD>
public:
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
virtual bool __cdecl OnPostRequestComplete(DWORD dwUserID, bool bSucceed)=NULL;
//<2F><>ʱ<EFBFBD>¼<EFBFBD>
public:
//<2F><>ʱ<EFBFBD>¼<EFBFBD>
virtual bool __cdecl OnTimerNotify()=NULL;
};
//////////////////////////////////////////////////////////////////////////////////
//<2F><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
#ifndef GAME_SERVICE_DLL
#include "AndroidUserItem.h"
#include "ServerUserManager.h"
#include "AndroidUserManager.h"
#include "GamePropertyManager.h"
#endif
//<2F><>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD>
DECLARE_MODULE_DYNAMIC(GameServiceManager)
DECLARE_MODULE_DYNAMIC(AndroidUserItemSink)
//////////////////////////////////////////////////////////////////////////////////
#endif