#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); } //////////////////////////////////////////////////////////////////////////