诸暨麻将添加redis
選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。
 
 
 
 
 
 

211 行
5.7 KiB

  1. #include "StdAfx.h"
  2. #include "Tableframesink.h"
  3. #include "TableframesinkOther.h"
  4. #include "TableFrameSinkCxz.h"
  5. #include "TableFrameSinkZhiPai.h"
  6. #include "GameServerManager.h"
  7. #include "LogString.h"
  8. //////////////////////////////////////////////////////////////////////////
  9. //全局变量
  10. static CGameServiceManager g_GameServiceManager; //管理变量
  11. //////////////////////////////////////////////////////////////////////////
  12. //构造函数
  13. CGameServiceManager::CGameServiceManager()
  14. {
  15. //内核属性
  16. m_GameServiceAttrib.wKindID=KIND_ID;
  17. m_GameServiceAttrib.wChairCount=GAME_PLAYER;
  18. m_GameServiceAttrib.wSupporType=(GAME_GENRE_GOLD|GAME_GENRE_SCORE|GAME_GENRE_MATCH|GAME_GENRE_EDUCATE);
  19. //功能标志
  20. m_GameServiceAttrib.cbDynamicJoin=TRUE;
  21. m_GameServiceAttrib.cbAndroidUser=TRUE;
  22. m_GameServiceAttrib.cbOffLineTrustee=FALSE;
  23. //服务属性
  24. m_GameServiceAttrib.dwServerVersion=VERSION_SERVER;
  25. m_GameServiceAttrib.dwClientVersion=VERSION_CLIENT;
  26. lstrcpyn(m_GameServiceAttrib.szGameName,GAME_NAME,CountArray(m_GameServiceAttrib.szGameName));
  27. lstrcpyn(m_GameServiceAttrib.szDataBaseName,TEXT("QPSparrowXZDB"),CountArray(m_GameServiceAttrib.szDataBaseName));
  28. lstrcpyn(m_GameServiceAttrib.szClientEXEName,TEXT("SparrowXZ.EXE"),CountArray(m_GameServiceAttrib.szClientEXEName));
  29. lstrcpyn(m_GameServiceAttrib.szServerDLLName,TEXT("SparrowXZServer.DLL"),CountArray(m_GameServiceAttrib.szServerDLLName));
  30. return;
  31. }
  32. //析构函数
  33. CGameServiceManager::~CGameServiceManager()
  34. {
  35. }
  36. //接口查询
  37. void * CGameServiceManager::QueryInterface(const IID & Guid, DWORD dwQueryVer)
  38. {
  39. QUERYINTERFACE(IGameServiceManager,Guid,dwQueryVer);
  40. QUERYINTERFACE_IUNKNOWNEX(IGameServiceManager,Guid,dwQueryVer);
  41. return NULL;
  42. }
  43. //创建游戏桌
  44. void * CGameServiceManager::CreateTableFrameSink(const IID & Guid, DWORD dwQueryVer)
  45. {
  46. if (dwQueryVer == VER_ITableFrameSink)
  47. {
  48. //建立对象
  49. CTableFrameSink * pTableFrameSink = NULL;
  50. try
  51. {
  52. pTableFrameSink = new CTableFrameSink();
  53. if (pTableFrameSink == NULL)
  54. throw TEXT("创建失败");
  55. void * pObject = pTableFrameSink->QueryInterface(Guid, dwQueryVer);
  56. if (pObject == NULL)
  57. throw TEXT("接口查询失败");
  58. return pObject;
  59. }
  60. catch (...) {}
  61. //清理对象
  62. SafeDelete(pTableFrameSink);
  63. }
  64. else if (dwQueryVer == VER_ITableFrameSinkOther)
  65. {
  66. //建立对象
  67. CTableFrameSinkOther * pTableFrameSink = NULL;
  68. try
  69. {
  70. pTableFrameSink = new CTableFrameSinkOther();
  71. if (pTableFrameSink == NULL)
  72. throw TEXT("创建失败");
  73. void * pObject = pTableFrameSink->QueryInterface(Guid, dwQueryVer);
  74. if (pObject == NULL)
  75. throw TEXT("接口查询失败");
  76. return pObject;
  77. }
  78. catch (...) {}
  79. //清理对象
  80. SafeDelete(pTableFrameSink);
  81. }
  82. else if (dwQueryVer == VER_ITableFrameSinkCxz)
  83. {
  84. TableFrameSinkCxz * pTableFrameSink = NULL;
  85. try
  86. {
  87. pTableFrameSink = new TableFrameSinkCxz();
  88. if (pTableFrameSink == NULL)
  89. throw TEXT("创建失败");
  90. void * pObject = pTableFrameSink->QueryInterface(Guid, dwQueryVer);
  91. if (pObject == NULL)
  92. throw TEXT("接口查询失败");
  93. return pObject;
  94. }
  95. catch (...) {}
  96. //清理对象
  97. SafeDelete(pTableFrameSink);
  98. }
  99. else if (dwQueryVer == VER_ITableFrameSinkZhiPai)
  100. {
  101. TableFrameSinkZhiPai * pTableFrameSink = NULL;
  102. try
  103. {
  104. pTableFrameSink = new TableFrameSinkZhiPai();
  105. if (pTableFrameSink == NULL)
  106. throw TEXT("创建失败");
  107. void * pObject = pTableFrameSink->QueryInterface(Guid, dwQueryVer);
  108. if (pObject == NULL)
  109. throw TEXT("接口查询失败");
  110. return pObject;
  111. }
  112. catch (...) {}
  113. //清理对象
  114. SafeDelete(pTableFrameSink);
  115. }
  116. return NULL;
  117. }
  118. //获取属性
  119. bool CGameServiceManager::GetServiceAttrib(tagGameServiceAttrib & GameServiceAttrib)
  120. {
  121. GameServiceAttrib = m_GameServiceAttrib;
  122. return true;
  123. }
  124. //参数修改
  125. bool CGameServiceManager::RectifyParameter(tagGameServiceOption & GameServiceOption)
  126. {
  127. //单元积分
  128. GameServiceOption.lCellScore=__max(1L,GameServiceOption.lCellScore);
  129. //积分下限
  130. if (GameServiceOption.wServerType!=GAME_GENRE_SCORE)
  131. {
  132. GameServiceOption.lMinEnterScore=__max(GameServiceOption.lCellScore*256L,GameServiceOption.lMinEnterScore);
  133. }
  134. //积分上限
  135. if (GameServiceOption.lRestrictScore!=0L)
  136. {
  137. GameServiceOption.lRestrictScore=__max(GameServiceOption.lRestrictScore,GameServiceOption.lMinEnterScore);
  138. }
  139. //积分上限
  140. if (GameServiceOption.wServerType!=GAME_GENRE_SCORE)
  141. {
  142. if(GameServiceOption.lMaxEnterScore<=GameServiceOption.lMinEnterScore)
  143. GameServiceOption.lMinEnterScore=0L;
  144. else if(GameServiceOption.lRestrictScore>0)
  145. GameServiceOption.lMaxEnterScore=__min(GameServiceOption.lMaxEnterScore,GameServiceOption.lRestrictScore);
  146. }
  147. return true;
  148. }
  149. //创建机器
  150. VOID * CGameServiceManager::CreateAndroidUserItemSink(REFGUID Guid, DWORD dwQueryVer)
  151. {
  152. try
  153. {
  154. //创建组件
  155. if( m_AndroidServiceHelper.GetInterface() == NULL )
  156. {
  157. m_AndroidServiceHelper.SetModuleCreateInfo(TEXT("SparrowXZAndroid.dll"),"CreateAndroidService");
  158. if( !m_AndroidServiceHelper.CreateInstance() ) throw 0;
  159. }
  160. //创建机器人
  161. VOID *pAndroidObject = m_AndroidServiceHelper->CreateAndroidUserItemSink(Guid,dwQueryVer);
  162. if( pAndroidObject == NULL ) throw TEXT("创建机器人失败");
  163. return pAndroidObject;
  164. }
  165. catch(...) {}
  166. return NULL;
  167. }
  168. //////////////////////////////////////////////////////////////////////////
  169. //设置子游戏协议解析地址
  170. PVOID CGameServiceManager::GetDataString()
  171. {
  172. PVOID sgRet = NULL;
  173. sgRet = LogString::GetString;
  174. return sgRet;
  175. }
  176. //建立对象函数
  177. extern "C" __declspec(dllexport) void * CreateGameServiceManager(const GUID & Guid, DWORD dwInterfaceVer)
  178. {
  179. return g_GameServiceManager.QueryInterface(Guid,dwInterfaceVer);
  180. }
  181. //////////////////////////////////////////////////////////////////////////