ZoneManagerI.cs 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226
  1. using Ice;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Web.Helpers;
  5. using CommonLang.Log;
  6. using System.Collections;
  7. namespace Pomelo
  8. {
  9. class ZoneManagerI : ZoneManagerDisp_
  10. {
  11. private IZone zone;
  12. public ZoneManagerI(IZone zone)
  13. {
  14. this.zone = zone;
  15. }
  16. private CommonLang.Log.Logger log = LoggerFactory.GetLogger("ZoneManagerI");
  17. public override int setCallback(Identity ident, Current current__)
  18. {
  19. string gameSrvId = ident.name;
  20. if (string.IsNullOrEmpty(gameSrvId))
  21. {
  22. return 2;
  23. }
  24. Ice.ObjectPrx @base = current__.con.createProxy(ident);
  25. ZoneManagerCallbackPrx client = ZoneManagerCallbackPrxHelper.uncheckedCast(@base);
  26. int resCode = IceManager.instance().setCallback(ident.name, (ZoneManagerCallbackPrx)client.ice_oneway());
  27. zone.SetCallBack(ident.name);
  28. return resCode;
  29. }
  30. public override void createZoneRequest_async(AMD_ZoneManager_createZoneRequest cb__, string playerId, string gameServerId,
  31. int mapTemplateId, string instanceId, bool forceCreate, string data, Current current__)
  32. {
  33. try
  34. {
  35. //log.Info("createZone begin:" + System.Threading.Thread.CurrentThread.ManagedThreadId);
  36. zone.CreateZone(playerId, gameServerId, mapTemplateId, instanceId, forceCreate, data,
  37. (ret) => { cb__.ice_response(ret); },
  38. (err) => { cb__.ice_exception(err); }
  39. );
  40. } catch (System.Exception e){
  41. log.Error("CreateZone failed, error: " + e.Message, e);
  42. cb__.ice_exception(e);
  43. }
  44. }
  45. public override void destroyZoneRequest_async(AMD_ZoneManager_destroyZoneRequest cb__, string instanceId, Current current__)
  46. {
  47. try
  48. {
  49. //log.Info("destroyZone begin:" + System.Threading.Thread.CurrentThread.ManagedThreadId);
  50. zone.DestroyZone(instanceId, (err, ret) =>
  51. {
  52. if (err != null)
  53. {
  54. cb__.ice_exception(err);
  55. }
  56. else
  57. {
  58. cb__.ice_response();
  59. }
  60. log.Debug("destroyZone end:" + System.Threading.Thread.CurrentThread.ManagedThreadId);
  61. });
  62. } catch (System.Exception e)
  63. {
  64. log.Error("stop failed, error: " + e.Message, e);
  65. cb__.ice_exception(e);
  66. }
  67. }
  68. public override void playerEnterRequest_async(AMD_ZoneManager_playerEnterRequest cb__, string playerId, string instanceId, string data, Current current__)
  69. {
  70. try
  71. {
  72. //log.Info("playerEnter begin:" + System.Threading.Thread.CurrentThread.ManagedThreadId);
  73. zone.PlayerEnter(playerId, instanceId, data, (err, ret) =>
  74. {
  75. if (err != null)
  76. {
  77. cb__.ice_exception(err);
  78. }
  79. else
  80. {
  81. cb__.ice_response();
  82. }
  83. //log.Debug("playerEnter end:" + System.Threading.Thread.CurrentThread.ManagedThreadId);
  84. });
  85. } catch (System.Exception e)
  86. {
  87. log.Error("add player failed, error: " + playerId + ", " + instanceId + ", " + e.Message, e);
  88. cb__.ice_exception(e);
  89. }
  90. }
  91. public override void playerLeaveRequest_async(AMD_ZoneManager_playerLeaveRequest cb__, string playerId, string instanceId, bool keepObject, Current current__)
  92. {
  93. try
  94. {
  95. //log.Info("playerLeave begin:" + System.Threading.Thread.CurrentThread.ManagedThreadId);
  96. zone.PlayerLeave(playerId, instanceId, keepObject, (err, ret) =>
  97. {
  98. if (err != null)
  99. {
  100. cb__.ice_exception(err);
  101. }
  102. else
  103. {
  104. cb__.ice_response();
  105. }
  106. log.Debug("playerLeave end:" + System.Threading.Thread.CurrentThread.ManagedThreadId);
  107. });
  108. } catch (System.Exception e)
  109. {
  110. log.Error("playerLeave failed, error: " + e.Message, e);
  111. cb__.ice_exception(e);
  112. }
  113. }
  114. public override void playerNetStateChanged_async(AMD_ZoneManager_playerNetStateChanged cb__, string playerId, string state, Current current__)
  115. {
  116. try
  117. {
  118. zone.PlayerNetStateChanged(playerId, state);
  119. cb__.ice_response();
  120. }
  121. catch (System.Exception err)
  122. {
  123. cb__.ice_exception(err);
  124. }
  125. }
  126. public override void clearAllPlayersRequest_async(AMD_ZoneManager_clearAllPlayersRequest cb__, Current current__)
  127. {
  128. //log.Info("clearAllPlayers begin:" + System.Threading.Thread.CurrentThread.ManagedThreadId);
  129. zone.ClearAllPlayers((err, ret) =>
  130. {
  131. if (err != null)
  132. {
  133. cb__.ice_exception(err);
  134. }
  135. else
  136. {
  137. cb__.ice_response();
  138. }
  139. log.Debug("clearAllPlayers end:" + System.Threading.Thread.CurrentThread.ManagedThreadId);
  140. });
  141. }
  142. public override void getAllPlayerCountRequest_async(AMD_ZoneManager_getAllPlayerCountRequest cb__, Current current__)
  143. {
  144. //log.Info("getAllPlayerCount begin:" + System.Threading.Thread.CurrentThread.ManagedThreadId);
  145. zone.GetAllPlayerCount((err, ret) =>
  146. {
  147. if (err != null)
  148. {
  149. cb__.ice_exception(err);
  150. }
  151. else
  152. {
  153. cb__.ice_response(ret);
  154. }
  155. log.Debug("getAllPlayerCount end:" + System.Threading.Thread.CurrentThread.ManagedThreadId);
  156. });
  157. }
  158. public override void getServerState_async(AMD_ZoneManager_getServerState cb__, string serverID, Current current__)
  159. {
  160. //log.Info("getServerState_async begin:" + System.Threading.Thread.CurrentThread.ManagedThreadId);
  161. zone.GetServerState(serverID, (err, ret) =>
  162. {
  163. if (err != null)
  164. {
  165. cb__.ice_exception(err);
  166. }
  167. else
  168. {
  169. cb__.ice_response(Json.Encode(ret));
  170. }
  171. log.Debug("getServerState_async end:" + System.Threading.Thread.CurrentThread.ManagedThreadId);
  172. });
  173. }
  174. public override void registerGameServer_async(Pomelo.AMD_ZoneManager_registerGameServer cb__, int serverid, int crossid, Ice.Current current__)
  175. {
  176. zone.RegisterGameServer(serverid, crossid, (err, ret) =>
  177. {
  178. if (err != null)
  179. {
  180. cb__.ice_exception(err);
  181. }
  182. else
  183. {
  184. cb__.ice_response(ret);
  185. }
  186. // log.Debug("getServerState_async end:" + System.Threading.Thread.CurrentThread.ManagedThreadId);
  187. });
  188. }
  189. public override void getUnitHP_async(AMD_ZoneManager_getUnitHP cb__, string instanceId, int objectId, Current current__)
  190. {
  191. zone.GetUnitHP(instanceId, objectId, (err, ret) =>
  192. {
  193. if (err != null)
  194. {
  195. cb__.ice_exception(err);
  196. }
  197. else
  198. {
  199. cb__.ice_response(ret);
  200. }
  201. });
  202. }
  203. }
  204. }