|
- #include "StdAfx.h"
- #include "Tableframesink.h"
- #include "TableframesinkOther.h"
- #include "TableFrameSinkCxz.h"
- #include "TableFrameSinkZhiPai.h"
- #include "GameServerManager.h"
- #include "LogString.h"
- //////////////////////////////////////////////////////////////////////////
-
- //全局变量
- static CGameServiceManager g_GameServiceManager; //管理变量
-
- //////////////////////////////////////////////////////////////////////////
-
- //构造函数
- CGameServiceManager::CGameServiceManager()
- {
- //内核属性
- m_GameServiceAttrib.wKindID=KIND_ID;
- m_GameServiceAttrib.wChairCount=GAME_PLAYER;
- m_GameServiceAttrib.wSupporType=(GAME_GENRE_GOLD|GAME_GENRE_SCORE|GAME_GENRE_MATCH|GAME_GENRE_EDUCATE);
-
- //功能标志
- m_GameServiceAttrib.cbDynamicJoin=TRUE;
- m_GameServiceAttrib.cbAndroidUser=TRUE;
- m_GameServiceAttrib.cbOffLineTrustee=FALSE;
-
- //服务属性
- m_GameServiceAttrib.dwServerVersion=VERSION_SERVER;
- m_GameServiceAttrib.dwClientVersion=VERSION_CLIENT;
- lstrcpyn(m_GameServiceAttrib.szGameName,GAME_NAME,CountArray(m_GameServiceAttrib.szGameName));
- lstrcpyn(m_GameServiceAttrib.szDataBaseName,TEXT("QPSparrowXZDB"),CountArray(m_GameServiceAttrib.szDataBaseName));
- lstrcpyn(m_GameServiceAttrib.szClientEXEName,TEXT("SparrowXZ.EXE"),CountArray(m_GameServiceAttrib.szClientEXEName));
- lstrcpyn(m_GameServiceAttrib.szServerDLLName,TEXT("SparrowXZServer.DLL"),CountArray(m_GameServiceAttrib.szServerDLLName));
-
- return;
- }
-
- //析构函数
- CGameServiceManager::~CGameServiceManager()
- {
- }
-
- //接口查询
- void * CGameServiceManager::QueryInterface(const IID & Guid, DWORD dwQueryVer)
- {
- QUERYINTERFACE(IGameServiceManager,Guid,dwQueryVer);
- QUERYINTERFACE_IUNKNOWNEX(IGameServiceManager,Guid,dwQueryVer);
- return NULL;
- }
-
- //创建游戏桌
- void * CGameServiceManager::CreateTableFrameSink(const IID & Guid, DWORD dwQueryVer)
- {
- if (dwQueryVer == VER_ITableFrameSink)
- {
- //建立对象
- CTableFrameSink * pTableFrameSink = NULL;
- try
- {
- pTableFrameSink = new CTableFrameSink();
- if (pTableFrameSink == NULL)
- throw TEXT("创建失败");
- void * pObject = pTableFrameSink->QueryInterface(Guid, dwQueryVer);
- if (pObject == NULL)
- throw TEXT("接口查询失败");
- return pObject;
- }
- catch (...) {}
-
- //清理对象
- SafeDelete(pTableFrameSink);
- }
- else if (dwQueryVer == VER_ITableFrameSinkOther)
- {
- //建立对象
- CTableFrameSinkOther * pTableFrameSink = NULL;
- try
- {
- pTableFrameSink = new CTableFrameSinkOther();
- if (pTableFrameSink == NULL)
- throw TEXT("创建失败");
- void * pObject = pTableFrameSink->QueryInterface(Guid, dwQueryVer);
- if (pObject == NULL)
- throw TEXT("接口查询失败");
- return pObject;
- }
- catch (...) {}
-
- //清理对象
- SafeDelete(pTableFrameSink);
- }
- else if (dwQueryVer == VER_ITableFrameSinkCxz)
- {
- TableFrameSinkCxz * pTableFrameSink = NULL;
- try
- {
- pTableFrameSink = new TableFrameSinkCxz();
- if (pTableFrameSink == NULL)
- throw TEXT("创建失败");
- void * pObject = pTableFrameSink->QueryInterface(Guid, dwQueryVer);
- if (pObject == NULL)
- throw TEXT("接口查询失败");
- return pObject;
- }
- catch (...) {}
-
- //清理对象
- SafeDelete(pTableFrameSink);
- }
- else if (dwQueryVer == VER_ITableFrameSinkZhiPai)
- {
- TableFrameSinkZhiPai * pTableFrameSink = NULL;
- try
- {
- pTableFrameSink = new TableFrameSinkZhiPai();
- if (pTableFrameSink == NULL)
- throw TEXT("创建失败");
- void * pObject = pTableFrameSink->QueryInterface(Guid, dwQueryVer);
- if (pObject == NULL)
- throw TEXT("接口查询失败");
- return pObject;
- }
- catch (...) {}
-
- //清理对象
- SafeDelete(pTableFrameSink);
- }
-
-
- return NULL;
- }
-
- //获取属性
- bool CGameServiceManager::GetServiceAttrib(tagGameServiceAttrib & GameServiceAttrib)
- {
- GameServiceAttrib = m_GameServiceAttrib;
-
- return true;
- }
-
- //参数修改
- bool CGameServiceManager::RectifyParameter(tagGameServiceOption & GameServiceOption)
- {
-
- //单元积分
- GameServiceOption.lCellScore=__max(1L,GameServiceOption.lCellScore);
-
- //积分下限
- if (GameServiceOption.wServerType!=GAME_GENRE_SCORE)
- {
- GameServiceOption.lMinEnterScore=__max(GameServiceOption.lCellScore*256L,GameServiceOption.lMinEnterScore);
- }
-
- //积分上限
- if (GameServiceOption.lRestrictScore!=0L)
- {
- GameServiceOption.lRestrictScore=__max(GameServiceOption.lRestrictScore,GameServiceOption.lMinEnterScore);
- }
-
- //积分上限
- if (GameServiceOption.wServerType!=GAME_GENRE_SCORE)
- {
- if(GameServiceOption.lMaxEnterScore<=GameServiceOption.lMinEnterScore)
- GameServiceOption.lMinEnterScore=0L;
- else if(GameServiceOption.lRestrictScore>0)
- GameServiceOption.lMaxEnterScore=__min(GameServiceOption.lMaxEnterScore,GameServiceOption.lRestrictScore);
- }
-
- return true;
- }
- //创建机器
- VOID * CGameServiceManager::CreateAndroidUserItemSink(REFGUID Guid, DWORD dwQueryVer)
- {
- try
- {
- //创建组件
- if( m_AndroidServiceHelper.GetInterface() == NULL )
- {
- m_AndroidServiceHelper.SetModuleCreateInfo(TEXT("SparrowXZAndroid.dll"),"CreateAndroidService");
-
- if( !m_AndroidServiceHelper.CreateInstance() ) throw 0;
- }
-
- //创建机器人
- VOID *pAndroidObject = m_AndroidServiceHelper->CreateAndroidUserItemSink(Guid,dwQueryVer);
- if( pAndroidObject == NULL ) throw TEXT("创建机器人失败");
-
- return pAndroidObject;
- }
- catch(...) {}
-
- return NULL;
- }
- //////////////////////////////////////////////////////////////////////////
- //设置子游戏协议解析地址
- PVOID CGameServiceManager::GetDataString()
- {
- PVOID sgRet = NULL;
-
- sgRet = LogString::GetString;
- return sgRet;
- }
- //建立对象函数
- extern "C" __declspec(dllexport) void * CreateGameServiceManager(const GUID & Guid, DWORD dwInterfaceVer)
- {
- return g_GameServiceManager.QueryInterface(Guid,dwInterfaceVer);
- }
-
- //////////////////////////////////////////////////////////////////////////
|