#include "StdAfx.h"
#include "Tableframesink.h"
#include "GameServerManager.h"
//
//全局变量
static CGameServiceManager g_GameServiceManager; //管理变量
//
//构造函数
CGameServiceManager::CGameServiceManager(void)
{
//设置属性
m_GameServiceAttrib.wKindID=KIND_ID;
m_GameServiceAttrib.wChairCount=GAME_PLAYER;
m_GameServiceAttrib.cbJoinInGame=FALSE;
lstrcpyn(m_GameServiceAttrib.szKindName,GAME_NAME,CountArray(m_GameServiceAttrib.szKindName));
lstrcpyn(m_GameServiceAttrib.szDataBaseName,TEXT("QPShuangKouDB"),CountArray(m_GameServiceAttrib.szDataBaseName));
#ifdef VIDEO_GAME
lstrcpyn(m_GameServiceAttrib.szDescription,TEXT("双扣游戏服务组件"),CountArray(m_GameServiceAttrib.szDescription));
lstrcpyn(m_GameServiceAttrib.szClientModuleName,TEXT("ShuangKouVD.EXE"),CountArray(m_GameServiceAttrib.szClientModuleName));
lstrcpyn(m_GameServiceAttrib.szServerModuleName,TEXT("ShuangKouVDServer.DLL"),CountArray(m_GameServiceAttrib.szServerModuleName));
#else
lstrcpyn(m_GameServiceAttrib.szDescription,TEXT("双扣游戏服务组件"),CountArray(m_GameServiceAttrib.szDescription));
lstrcpyn(m_GameServiceAttrib.szClientModuleName,TEXT("ShuangKou.EXE"),CountArray(m_GameServiceAttrib.szClientModuleName));
lstrcpyn(m_GameServiceAttrib.szServerModuleName,TEXT("ShuangKouServer.DLL"),CountArray(m_GameServiceAttrib.szServerModuleName));
#endif
return;
}
//析构函数
CGameServiceManager::~CGameServiceManager(void)
{
}
//接口查询
void * __cdecl CGameServiceManager::QueryInterface(const IID & Guid, DWORD dwQueryVer)
{
QUERYINTERFACE(IGameServiceManager,Guid,dwQueryVer);
QUERYINTERFACE_IUNKNOWNEX(IGameServiceManager,Guid,dwQueryVer);
return NULL;
}
//创建游戏桌
void * __cdecl CGameServiceManager::CreateTableFrameSink(const IID & 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;
}
//获取属性
void __cdecl CGameServiceManager::GetGameServiceAttrib(tagGameServiceAttrib & GameServiceAttrib)
{
GameServiceAttrib=m_GameServiceAttrib;
return;
}
//参数修改
bool __cdecl CGameServiceManager::RectifyServiceOption(tagGameServiceOption * pGameServiceOption)
{
//效验参数
ASSERT(pGameServiceOption!=NULL);
if (pGameServiceOption==NULL) return false;
//单元积分
pGameServiceOption->lCellScore=__max(1L,pGameServiceOption->lCellScore);
//积分下限
if (pGameServiceOption->wServerType==GAME_GENRE_GOLD)
{
pGameServiceOption->lLessScore=__max(pGameServiceOption->lCellScore*6L,pGameServiceOption->lLessScore);
}
/*
//积分上限
if (pGameServiceOption->lRestrictScore!=0L)
{
pGameServiceOption->lRestrictScore=__max(pGameServiceOption->lRestrictScore,pGameServiceOption->lLessScore);
}
*/
return true;
}
//创建机器
VOID * __cdecl CGameServiceManager::CreateAndroidUserItemSink(REFGUID Guid, DWORD dwQueryVer)
{
return NULL;
}
//
//建立对象函数
extern "C" __declspec(dllexport) void * __cdecl CreateGameServiceManager(const GUID & Guid, DWORD dwInterfaceVer)
{
return g_GameServiceManager.QueryInterface(Guid,dwInterfaceVer);
}
//
#include "Tableframesink.h"
#include "GameServerManager.h"
//
//全局变量
static CGameServiceManager g_GameServiceManager; //管理变量
//
//构造函数
CGameServiceManager::CGameServiceManager(void)
{
//设置属性
m_GameServiceAttrib.wKindID=KIND_ID;
m_GameServiceAttrib.wChairCount=GAME_PLAYER;
m_GameServiceAttrib.cbJoinInGame=FALSE;
lstrcpyn(m_GameServiceAttrib.szKindName,GAME_NAME,CountArray(m_GameServiceAttrib.szKindName));
lstrcpyn(m_GameServiceAttrib.szDataBaseName,TEXT("QPShuangKouDB"),CountArray(m_GameServiceAttrib.szDataBaseName));
#ifdef VIDEO_GAME
lstrcpyn(m_GameServiceAttrib.szDescription,TEXT("双扣游戏服务组件"),CountArray(m_GameServiceAttrib.szDescription));
lstrcpyn(m_GameServiceAttrib.szClientModuleName,TEXT("ShuangKouVD.EXE"),CountArray(m_GameServiceAttrib.szClientModuleName));
lstrcpyn(m_GameServiceAttrib.szServerModuleName,TEXT("ShuangKouVDServer.DLL"),CountArray(m_GameServiceAttrib.szServerModuleName));
#else
lstrcpyn(m_GameServiceAttrib.szDescription,TEXT("双扣游戏服务组件"),CountArray(m_GameServiceAttrib.szDescription));
lstrcpyn(m_GameServiceAttrib.szClientModuleName,TEXT("ShuangKou.EXE"),CountArray(m_GameServiceAttrib.szClientModuleName));
lstrcpyn(m_GameServiceAttrib.szServerModuleName,TEXT("ShuangKouServer.DLL"),CountArray(m_GameServiceAttrib.szServerModuleName));
#endif
return;
}
//析构函数
CGameServiceManager::~CGameServiceManager(void)
{
}
//接口查询
void * __cdecl CGameServiceManager::QueryInterface(const IID & Guid, DWORD dwQueryVer)
{
QUERYINTERFACE(IGameServiceManager,Guid,dwQueryVer);
QUERYINTERFACE_IUNKNOWNEX(IGameServiceManager,Guid,dwQueryVer);
return NULL;
}
//创建游戏桌
void * __cdecl CGameServiceManager::CreateTableFrameSink(const IID & 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;
}
//获取属性
void __cdecl CGameServiceManager::GetGameServiceAttrib(tagGameServiceAttrib & GameServiceAttrib)
{
GameServiceAttrib=m_GameServiceAttrib;
return;
}
//参数修改
bool __cdecl CGameServiceManager::RectifyServiceOption(tagGameServiceOption * pGameServiceOption)
{
//效验参数
ASSERT(pGameServiceOption!=NULL);
if (pGameServiceOption==NULL) return false;
//单元积分
pGameServiceOption->lCellScore=__max(1L,pGameServiceOption->lCellScore);
//积分下限
if (pGameServiceOption->wServerType==GAME_GENRE_GOLD)
{
pGameServiceOption->lLessScore=__max(pGameServiceOption->lCellScore*6L,pGameServiceOption->lLessScore);
}
/*
//积分上限
if (pGameServiceOption->lRestrictScore!=0L)
{
pGameServiceOption->lRestrictScore=__max(pGameServiceOption->lRestrictScore,pGameServiceOption->lLessScore);
}
*/
return true;
}
//创建机器
VOID * __cdecl CGameServiceManager::CreateAndroidUserItemSink(REFGUID Guid, DWORD dwQueryVer)
{
return NULL;
}
//
//建立对象函数
extern "C" __declspec(dllexport) void * __cdecl CreateGameServiceManager(const GUID & Guid, DWORD dwInterfaceVer)
{
return g_GameServiceManager.QueryInterface(Guid,dwInterfaceVer);
}
//