BattleLocal.cs 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. using CommonNetwork.Sockets;
  5. using CommonLang.Protocol;
  6. using RoomService.Net.BsServer;
  7. using CommonLang.Log;
  8. using RoomService.Net.BsClient;
  9. using CommonAI.ZoneClient;
  10. using CommonAI.Zone;
  11. using CommonLang.IO;
  12. using CommonAI.Zone.ZoneEditor;
  13. using CommonAI.ZoneServer;
  14. using CommonAI.Zone.Instance;
  15. using CommonLang.Concurrent;
  16. using CommonAI.Zone.Replay;
  17. namespace CommonAIClient.Client
  18. {
  19. public abstract class BattleLocal : AbstractBattle, InstanceZoneListener
  20. {
  21. private int mRecvPack = 0;
  22. private int mSendPack = 0;
  23. private BattleRecorder mRecorder;
  24. private InstanceUnit mSender;
  25. public override int CurrentPing { get { return 0; } }
  26. public override long RecvPackages { get { return mRecvPack; } }
  27. public override long SendPackages { get { return mSendPack; } }
  28. public override bool IsNet { get { return false; } }
  29. public override RoomService.Net.BsServer.KickedByServerNotifyB2C KickMessage { get { return null; } }
  30. public abstract EditorScene Zone { get; }
  31. public SceneData SceneData { get { return Zone.Data; } }
  32. public BattleLocal(EditorTemplates datas)
  33. : base(datas)
  34. {
  35. this.Layer.ActorSyncMode = SyncMode.ForceByServer;
  36. }
  37. protected override void Disposing()
  38. {
  39. base.Disposing();
  40. mSender = null;
  41. mRecorder = null;
  42. }
  43. public override void SendAction(CommonAI.Zone.Action action)
  44. {
  45. if (mSender == null && Layer.Actor!=null)
  46. {
  47. mSender = Zone.getUnit(Layer.Actor.ObjectID);
  48. }
  49. action.sender = mSender;
  50. Zone.pushAction(action);
  51. mSendPack++;
  52. }
  53. public void onEventHandler(Event e)
  54. {
  55. mRecvPack++;
  56. if (mRecorder != null)
  57. {
  58. mRecorder.Record(e, Zone.PassTimeMS);
  59. }
  60. Layer.ProcessMessage(e as IMessage);
  61. }
  62. public void onResponseHandler(InstanceZoneObject obj, ActorRequest req, ActorResponse rsp)
  63. {
  64. mRecvPack++;
  65. if (mRecorder != null)
  66. {
  67. mRecorder.Record(rsp, Zone.PassTimeMS);
  68. }
  69. Layer.ProcessMessage(rsp as IMessage);
  70. }
  71. /// <summary>
  72. /// 设置战报录像记录器
  73. /// </summary>
  74. /// <param name="recorder"></param>
  75. public void SetRecoder(BattleRecorder recorder)
  76. {
  77. this.mRecorder = recorder;
  78. }
  79. public bool CheckDropItem()
  80. {
  81. return false;
  82. }
  83. }
  84. }