#include "StdAfx.h" #include "Tableframesink.h" #include "GameServerManager.h" ////////////////////////////////////////////////////////////////////////// //全局变量 static CGameServiceManager g_GameServiceManager; //管理变量 ////////////////////////////////////////////////////////////////////////// //机器定义 #ifndef _DEBUG #define ANDROID_SERVICE_DLL_NAME TEXT("WNMJAndroid.dll") //组件名字 #else #define ANDROID_SERVICE_DLL_NAME TEXT("WNMJAndroid.dll") //组件名字 #endif //构造函数 CGameServiceManager::CGameServiceManager(void) { m_hDllInstance = NULL; //设置属性 m_GameServiceAttrib.wKindID=KIND_ID; m_GameServiceAttrib.wChairCount=GAME_PLAYER; m_GameServiceAttrib.wSupporType = GAME_GENRE_EDUCATE;//(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,szTreasureDB,CountArray(m_GameServiceAttrib.szDataBaseName)); lstrcpyn(m_GameServiceAttrib.szClientEXEName,TEXT("WNMJ.EXE"),CountArray(m_GameServiceAttrib.szClientEXEName)); lstrcpyn(m_GameServiceAttrib.szServerDLLName,TEXT("WNMJServer.DLL"),CountArray(m_GameServiceAttrib.szServerDLLName)); return; } //析构函数 CGameServiceManager::~CGameServiceManager(void) { } //接口查询 VOID * CGameServiceManager::QueryInterface(const IID & Guid, DWORD dwQueryVer) { QUERYINTERFACE(IGameServiceManager,Guid,dwQueryVer); QUERYINTERFACE(IGameServiceCustomRule,Guid,dwQueryVer); QUERYINTERFACE_IUNKNOWNEX(IGameServiceManager,Guid,dwQueryVer); return NULL; } //创建游戏桌 VOID * CGameServiceManager::CreateTableFrameSink(REFGUID Guid, DWORD dwQueryVer) { //建立对象 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); return NULL; } //获取属性 bool CGameServiceManager::GetServiceAttrib(tagGameServiceAttrib & GameServiceAttrib) { //设置变量 GameServiceAttrib=m_GameServiceAttrib; return true; } //参数修改 bool CGameServiceManager::RectifyParameter(tagGameServiceOption & GameServiceOption) { //效验参数 ASSERT(&GameServiceOption != NULL); if (&GameServiceOption == NULL) return false; //单元积分 GameServiceOption.lCellScore = __max(1L, GameServiceOption.lCellScore); //积分下限 if (GameServiceOption.wServerType == GAME_GENRE_GOLD) { GameServiceOption.lMinTableScore = __max(GameServiceOption.lCellScore * 20L, GameServiceOption.lMinTableScore); } return true; } //获取配置 bool CGameServiceManager::SaveCustomRule(LPBYTE pcbCustomRule, WORD wCustonSize) { return true; } //默认配置 bool CGameServiceManager::DefaultCustomRule(LPBYTE pcbCustomRule, WORD wCustonSize) { return true; } //创建窗口 HWND CGameServiceManager::CreateCustomRule(CWnd * pParentWnd, CRect rcCreate, LPBYTE pcbCustomRule, WORD wCustonSize) { return NULL; } //创建机器 VOID * CGameServiceManager::CreateAndroidUserItemSink(REFGUID Guid, DWORD dwQueryVer) { try { //加载模块 if (m_hDllInstance == NULL) { m_hDllInstance = AfxLoadLibrary(ANDROID_SERVICE_DLL_NAME); if (m_hDllInstance == NULL) throw TEXT("机器人服务模块不存在"); } //寻找函数 ModuleCreateProc * CreateProc = (ModuleCreateProc *)GetProcAddress(m_hDllInstance, "CreateAndroidUserItemSink"); if (CreateProc == NULL) { CTraceService::TraceString(TEXT("创建机器人失败"), TraceLevel_Exception); throw TEXT("创建机器人失败"); } //创建组件 return CreateProc(Guid, dwQueryVer); } catch (...) {} return NULL; } //创建数据 VOID * CGameServiceManager::CreateGameDataBaseEngineSink(REFGUID Guid, DWORD dwQueryVer) { return NULL; } ////////////////////////////////////////////////////////////////////////// //建立对象函数 extern "C" __declspec(dllexport) VOID * CreateGameServiceManager(REFGUID Guid, DWORD dwInterfaceVer) { static CGameServiceManager GameServiceManager; return GameServiceManager.QueryInterface(Guid, dwInterfaceVer); } //////////////////////////////////////////////////////////////////////////