226 lines
7.6 KiB
C
226 lines
7.6 KiB
C
|
|
#ifndef LOCKTIME_MATCH_HEAD_FILE
|
|||
|
|
#define LOCKTIME_MATCH_HEAD_FILE
|
|||
|
|
|
|||
|
|
#pragma once
|
|||
|
|
|
|||
|
|
#include <vector>
|
|||
|
|
#include <map>
|
|||
|
|
using std::vector;
|
|||
|
|
using std::map;
|
|||
|
|
#include "NDSTLExtend.h"
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
|
|||
|
|
#include "TableFrameHook.h"
|
|||
|
|
#include "MatchServiceHead.h"
|
|||
|
|
#include "DistributeManager.h"
|
|||
|
|
|
|||
|
|
#include "..\<5C><>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\DataBasePacket.h"
|
|||
|
|
|
|||
|
|
///////////////////////////////////////////////////////////////////////////////////////////
|
|||
|
|
|
|||
|
|
//ʱ<>Ӷ<EFBFBD><D3B6><EFBFBD>
|
|||
|
|
#define IDI_CHECK_START_MATCH (IDI_MATCH_MODULE_START+1) //<2F><>ʼʱ<CABC><CAB1>
|
|||
|
|
#define IDI_CHECK_END_MATCH (IDI_MATCH_MODULE_START+2) //<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
|||
|
|
#define IDI_SWITCH_STATUS (IDI_MATCH_MODULE_START+3) //<2F>л<EFBFBD>״̬
|
|||
|
|
#define IDI_LOAD_RANKDATA (IDI_MATCH_MODULE_START+4) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>а<EFBFBD><D0B0><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
//<2F>Ƴ<EFBFBD><C6B3><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
#define REMOVE_BY_ENDMATCH 250 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
///////////////////////////////////////////////////////////////////////////////////////////
|
|||
|
|
//<2F>ṹ<EFBFBD><E1B9B9><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
//////////////////////////////////////////////////////////////////////////////////////////
|
|||
|
|
|
|||
|
|
//<2F><>ʱ<EFBFBD><CAB1>
|
|||
|
|
class CLockTimeMatch : public IGameMatchItem,public IMatchEventSink,IServerUserItemSink
|
|||
|
|
{
|
|||
|
|
typedef map<DWORD, tagMatchScore*> tagMatchScorePtrMap;
|
|||
|
|
typedef vector<tagMatchScore*> tagMatchScorePtrVector;
|
|||
|
|
//״̬<D7B4><CCAC><EFBFBD><EFBFBD>
|
|||
|
|
protected:
|
|||
|
|
BYTE m_MatchStatus; //<2F><><EFBFBD><EFBFBD>״̬
|
|||
|
|
CTime m_TimeLastMatch; //<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
protected:
|
|||
|
|
CDistributeManager m_DistributeManage; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
|
|||
|
|
|
|||
|
|
tagMatchScorePtrMap m_AllMatchScorePtrMap; //<2F><><EFBFBD>в<EFBFBD><D0B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5><EFBFBD><EFBFBD>ҷ<EFBFBD><D2B7><EFBFBD>map;
|
|||
|
|
tagMatchScorePtrVector m_AllMatchScorePtrVector; //<2F><><EFBFBD>в<EFBFBD><D0B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵķ<D2B5><C4B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>vector;
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
protected:
|
|||
|
|
tagGameMatchOption * m_pMatchOption; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
tagGameServiceOption * m_pGameServiceOption; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
tagGameServiceAttrib * m_pGameServiceAttrib; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
//<2F>ں˽ӿ<CBBD>
|
|||
|
|
protected:
|
|||
|
|
ITableFrame ** m_ppITableFrame; //<2F><><EFBFBD>ܽӿ<DCBD>
|
|||
|
|
ITimerEngine * m_pITimerEngine; //ʱ<><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
IDBCorrespondManager * m_pIDataBaseEngine; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
ITCPNetworkEngineEvent * m_pITCPNetworkEngineEvent; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>ӿ<EFBFBD>
|
|||
|
|
protected:
|
|||
|
|
IMainServiceFrame * m_pIGameServiceFrame; //<2F><><EFBFBD>ܽӿ<DCBD>
|
|||
|
|
IServerUserManager * m_pIServerUserManager; //<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
IAndroidUserManager * m_pAndroidUserManager; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
IServerUserItemSink * m_pIServerUserItemSink; //<2F>û<EFBFBD><C3BB>ص<EFBFBD>
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
public:
|
|||
|
|
//<2F><><EFBFBD>캯<EFBFBD><ECBAAF>
|
|||
|
|
CLockTimeMatch();
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
virtual ~CLockTimeMatch(void);
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>ӿ<EFBFBD>
|
|||
|
|
public:
|
|||
|
|
//<2F>ͷŶ<CDB7><C5B6><EFBFBD>
|
|||
|
|
virtual VOID Release(){ delete this; }
|
|||
|
|
//<2F>ӿڲ<D3BF>ѯ
|
|||
|
|
virtual VOID * QueryInterface(REFGUID Guid, DWORD dwQueryVer);
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD>ƽӿ<C6BD>
|
|||
|
|
public:
|
|||
|
|
//<2F><><EFBFBD><EFBFBD>֪ͨ
|
|||
|
|
virtual void OnStartService() { return ; }
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>ӿ<EFBFBD>
|
|||
|
|
public:
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
virtual bool BindTableFrame(ITableFrame * pTableFrame,WORD wTableID);
|
|||
|
|
//<2F><>ʼ<EFBFBD><CABC><EFBFBD>ӿ<EFBFBD>
|
|||
|
|
virtual bool InitMatchInterface(tagMatchManagerParameter & MatchManagerParameter);
|
|||
|
|
|
|||
|
|
//ϵͳ<CFB5>¼<EFBFBD>
|
|||
|
|
public:
|
|||
|
|
//ʱ<><CAB1><EFBFBD>¼<EFBFBD>
|
|||
|
|
virtual bool OnEventTimer(DWORD dwTimerID, WPARAM dwBindParameter);
|
|||
|
|
//<2F><><EFBFBD>ݿ<EFBFBD><DDBF>¼<EFBFBD>
|
|||
|
|
virtual bool OnEventDataBase(WORD wRequestID, IServerUserItem * pIServerUserItem, VOID * pData, WORD wDataSize);
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD>
|
|||
|
|
public:
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD>
|
|||
|
|
virtual bool OnEventSocketMatch(WORD wSubCmdID, VOID * pData, WORD wDataSize, IServerUserItem * pIServerUserItem, DWORD dwSocketID);
|
|||
|
|
|
|||
|
|
//<2F>û<EFBFBD><C3BB>ӿ<EFBFBD>
|
|||
|
|
public:
|
|||
|
|
//<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
virtual bool OnEventUserItemScore(IServerUserItem * pIServerUserItem, BYTE cbReason);
|
|||
|
|
//<2F>û<EFBFBD>״̬
|
|||
|
|
virtual bool OnEventUserItemStatus(IServerUserItem * pIServerUserItem, WORD wOldTableID=INVALID_TABLE, WORD wOldChairID=INVALID_CHAIR);
|
|||
|
|
//<2F>û<EFBFBD>Ȩ<EFBFBD><C8A8>
|
|||
|
|
virtual bool OnEventUserItemRight(IServerUserItem *pIServerUserItem, DWORD dwAddRight, DWORD dwRemoveRight,bool bGameRight=true);
|
|||
|
|
|
|||
|
|
//<2F>¼<EFBFBD><C2BC>ӿ<EFBFBD>
|
|||
|
|
public:
|
|||
|
|
//<2F>û<EFBFBD><C3BB><EFBFBD>¼
|
|||
|
|
virtual bool OnEventUserLogon(IServerUserItem * pIServerUserItem);
|
|||
|
|
//<2F>û<EFBFBD><C3BB>dz<EFBFBD>
|
|||
|
|
virtual bool OnEventUserLogout(IServerUserItem * pIServerUserItem);
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD>
|
|||
|
|
virtual bool OnEventEnterMatch(DWORD dwSocketID ,VOID* pData,DWORD dwUserIP, bool bIsMobile);
|
|||
|
|
//<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
virtual bool OnEventUserJoinMatch(IServerUserItem * pIServerUserItem, BYTE cbReason,DWORD dwSocketID);
|
|||
|
|
//<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
virtual bool OnEventUserQuitMatch(IServerUserItem * pIServerUserItem, BYTE cbReason, WORD *pBestRank=NULL, DWORD dwContextID=INVALID_WORD);
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD>ܺ<EFBFBD><DCBA><EFBFBD>
|
|||
|
|
public:
|
|||
|
|
//<2F><>Ϸ<EFBFBD><CFB7>ʼ
|
|||
|
|
virtual bool OnEventGameStart(ITableFrame *pITableFrame, WORD wChairCount);
|
|||
|
|
//<2F><>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD>
|
|||
|
|
virtual bool OnEventGameEnd(ITableFrame *pITableFrame,WORD wChairID, IServerUserItem * pIServerUserItem, BYTE cbReason);
|
|||
|
|
|
|||
|
|
//<2F>û<EFBFBD><C3BB>¼<EFBFBD>
|
|||
|
|
public:
|
|||
|
|
//<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
virtual bool OnActionUserSitDown(WORD wTableID, WORD wChairID, IServerUserItem * pIServerUserItem, bool bLookonUser);
|
|||
|
|
//<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
virtual bool OnActionUserStandUp(WORD wTableID, WORD wChairID, IServerUserItem * pIServerUserItem, bool bLookonUser);
|
|||
|
|
//<2F>û<EFBFBD>ͬ<EFBFBD><CDAC>
|
|||
|
|
virtual bool OnActionUserOnReady(WORD wTableID, WORD wChairID, IServerUserItem * pIServerUserItem, VOID * pData, WORD wDataSize);
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><D7BC>
|
|||
|
|
virtual bool OnActionUserOnStart(WORD wTableID, WORD wChairID, IServerUserItem * pIServerUserItem, VOID * pData, WORD wDataSize){ return true; }
|
|||
|
|
virtual bool OnActionUserStartGame(WORD wTableID, WORD wChairID, IServerUserItem * pIServerUserItem, VOID * pData, WORD wDataSize){ return true; }
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
protected:
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
void ClearSameTableUser(DWORD dwUserID);
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>
|
|||
|
|
void InserSameTableUser(DWORD dwUserID,DWORD dwTableUserID);
|
|||
|
|
//<2F><><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD>
|
|||
|
|
bool SendMatchUserScore(IServerUserItem * pIServerUserItem);
|
|||
|
|
//<2F>Ƴ<EFBFBD><C6B3><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
bool RemoveDistribute(IServerUserItem * pIServerUserItem);
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>
|
|||
|
|
bool InsertDistribute(IServerUserItem * pIServerUserItem);
|
|||
|
|
//<2F><><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD>
|
|||
|
|
bool SendMatchUserInitScore(IServerUserItem * pIServerUserItem);
|
|||
|
|
|
|||
|
|
//У<>麯<EFBFBD><E9BAAF>
|
|||
|
|
private:
|
|||
|
|
//<2F><><EFBFBD><EFBFBD>У<EFBFBD><D0A3>
|
|||
|
|
bool VerifyUserEnterMatch(IServerUserItem * pIServerUserItem);
|
|||
|
|
//ʱ<><CAB1>У<EFBFBD><D0A3>
|
|||
|
|
bool VerifyMatchTime(LPTSTR pszMessage,WORD wMaxCount,WORD & wMessageType);
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
bool SendMatchInfo(IServerUserItem * pIServerUserItem);
|
|||
|
|
//ѭ<><D1AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ;
|
|||
|
|
bool IsRoundMatchMode();
|
|||
|
|
//<2F><><EFBFBD><EFBFBD>ģʽ;
|
|||
|
|
bool IsNormalMatchMode();
|
|||
|
|
//<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>У<EFBFBD><D0A3>;
|
|||
|
|
bool VerifySignupMatchTime(LPTSTR pszMessage, WORD wMaxCount, WORD & wMessageType);
|
|||
|
|
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
protected:
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>
|
|||
|
|
bool PerformDistribute();
|
|||
|
|
//<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>
|
|||
|
|
DWORD GetMatchStartInterval();
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
WORD GetUserRank(IServerUserItem *pUserItem, ITableFrame *pITableFrame);
|
|||
|
|
//<2F><><EFBFBD>ͱ<EFBFBD><CDB1><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|||
|
|
void SendTableUserMatchInfo(ITableFrame *pITableFrame, WORD wChairID);
|
|||
|
|
void SendTableUserMatchInfo(IServerUserItem* pIServerUserItem);
|
|||
|
|
//д<>뽱<EFBFBD><EBBDB1>
|
|||
|
|
bool WriteUserAward(IServerUserItem *pIServerUserItem,tagMatchRankInfo * pMatchRankInfo);
|
|||
|
|
//<2F><><EFBFBD><EFBFBD>״̬
|
|||
|
|
void UpdateMatchStatus();
|
|||
|
|
//ִ<><D6B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
|
|||
|
|
VOID PerformAllUserStandUp(ITableFrame *pITableFrame);
|
|||
|
|
//<2F><><EFBFBD>㳡<EFBFBD><E3B3A1>;
|
|||
|
|
DWORD CalcMatchNo();
|
|||
|
|
//<2F>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD>tagMatchScore;
|
|||
|
|
void ReleaseMatchScore();
|
|||
|
|
//<2F><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>tagMatchScore;
|
|||
|
|
void CreateNewMatchScore(IServerUserItem *pIServerUserItem);
|
|||
|
|
//<2F><><EFBFBD>뵽m_AllMatchScorePtrMap<61><70>
|
|||
|
|
void InsertAllMatchScoreMap(IServerUserItem *pIServerUserItem);
|
|||
|
|
//find tagMatchScore;
|
|||
|
|
tagMatchScore* FindMatchScore(IServerUserItem *pIServerUserItem);
|
|||
|
|
//update tagMatchScore;
|
|||
|
|
void UpdateMatchScore(IServerUserItem *pIServerUserItem, bool bFinish);
|
|||
|
|
//sort tagMatchScore;
|
|||
|
|
void SortMatchScoreVector();
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD>RankID;
|
|||
|
|
DWORD GetUserRank(IServerUserItem *pUserItem);
|
|||
|
|
//<2F><><EFBFBD><EFBFBD>CMD_GR_Match_Rank_Info<66><6F><EFBFBD><EFBFBD>;
|
|||
|
|
void GetCMDGRMatchRankInfo(CMD_GR_Match_Rank_Info* pRankInfo, WORD& refRankSize);
|
|||
|
|
//send SUB_GR_MATCH_JOIN_RESULT
|
|||
|
|
void SendMatchJoinResult(IServerUserItem* pIServerUserItem, WORD wSuccess, LPCTSTR lpszMessage);
|
|||
|
|
//<2F><><EFBFBD>뵽m_AllMatchScorePtrMap<61><70>
|
|||
|
|
void InsertAllMatchScoreMap(tagMatchRankDataInfo * pMatchRankDataInfo);
|
|||
|
|
//send SUB_GR_MATCH_PLAYERFINISH msg;
|
|||
|
|
void SendMatchPlayerFinish(IServerUserItem* pIServerUserItem);
|
|||
|
|
//send SUB_GR_MATCH_WAIT_TIP msg;
|
|||
|
|
void SendMatchWaitTip(IServerUserItem* pIServerUserItem);
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
#endif
|