BattleManager.cs 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  1. using UnityEngine;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using YLBattle;
  5. namespace YLBattle
  6. {
  7. /// <summary>
  8. /// 战斗管理
  9. /// </summary>
  10. public partial class BattleManager : IBattleGlobalOper
  11. {
  12. /// <summary>
  13. /// 战斗上下文环境信息
  14. /// </summary>
  15. protected BattleParam mBattleParam = null;
  16. /// <summary>
  17. /// 当前战场
  18. /// </summary>
  19. protected BattleField mFieldModule = new BattleField();
  20. /// <summary>
  21. /// 战斗对象管理器
  22. /// </summary>
  23. protected LogicFighterManager mLogicFightersModel = new LogicFighterManager();
  24. /// <summary>
  25. /// (技能)子弹管理器
  26. /// </summary>
  27. protected X2Battle.BulletManager mBulletModel = new X2Battle.BulletManager();
  28. /// <summary>
  29. /// buff管理器
  30. /// </summary>
  31. protected BuffManager mBuffModel = new BuffManager();
  32. /// <summary>
  33. /// 战斗事件处理器
  34. /// </summary>
  35. protected FieldEventDispatcher mEventDisp = new FieldEventDispatcher();
  36. /// <summary>
  37. /// 返回上下文环境信息
  38. /// </summary>
  39. /// <returns>上下文环境信息</returns>
  40. public BattleParam Env()
  41. {
  42. return this.mBattleParam;
  43. }
  44. /// <summary>
  45. /// 开始一场战斗
  46. /// </summary>
  47. /// <param name="param">战斗参数</param>
  48. public void BattleStart(BattleParam param)
  49. {
  50. ///战场模块数据间的交互
  51. this.mBattleParam = param;
  52. this.mBattleParam.mBattleGlobalOper = this;
  53. this.mBattleParam.mBattleInnerOper = this.mFieldModule;
  54. this.mBattleParam.mLogicFighterOper = this.mLogicFightersModel;
  55. this.mBattleParam.mBulletManagerOpr = this.mBulletModel;
  56. this.mBattleParam.mBuffManagerOpr = this.mBuffModel;
  57. this.mBattleParam.mEventDisp = this.mEventDisp;
  58. this.mBattleParam.ShowAdapter().Initialize(this,
  59. this.Env().BattleSceneBundle(),
  60. this.Env().BattleSceneBgBundle(),
  61. this.Env().levelMode);
  62. // 交互模块的初始化
  63. this.mFieldModule.Initialize(this.mBattleParam);
  64. this.mLogicFightersModel.Initialize(this.mBattleParam);
  65. this.mBulletModel.Initialize(this.mBattleParam);
  66. this.mEventDisp.Initialize(this.mBattleParam);
  67. this.mBuffModel.Initialize(this.mBattleParam);
  68. this.mBattleParam.TimeCenter().Start();
  69. if(GameDateManager.Instance.isMultiRoom)
  70. {
  71. // 网络回调
  72. MultiBattleProxy.Instance.On_PeopleList = GetPeoplistSC;
  73. MultiBattleProxy.Instance.On_BroadCast = NetBattleBroadCastSC;
  74. MultiBattleProxy.Instance.On_UpdatePosition = NetBattlePostionSC;
  75. MultiBattleProxy.Instance.On_BTStatus = NetBattleStatusSC;
  76. // 刷新战斗成员列表
  77. MultiBattleProxy.Instance.GetPeopleList();
  78. }
  79. }
  80. public void GetPeoplistSC(MultiDup.SC_BT_PeopleList pList)
  81. {
  82. foreach(var p in pList.PlayerUids)
  83. {
  84. if(p == UserProxy.Instance.player.uid)
  85. {
  86. continue;
  87. }
  88. RoleManager.Instance.CreateFriendPlayers(p, () => { });
  89. }
  90. }
  91. public void NetBattleBroadCastSC(MultiDup.SC_BT_BroadCast broadMsg)
  92. {
  93. }
  94. public void NetBattlePostionSC(MultiDup.SC_BT_Position positionMsg)
  95. {
  96. RoleManager.Instance.SetFriendPosition(positionMsg.SenderUid, positionMsg.X, positionMsg.Y, positionMsg.Z);
  97. }
  98. public void NetBattleStatusSC(MultiDup.SC_BT_Status statusMsg)
  99. {
  100. RoleManager.Instance.SetFiendStatus(statusMsg.SenderUid, statusMsg.PropertyName, statusMsg.Value);
  101. }
  102. /// <summary>
  103. /// 帧调度
  104. /// </summary>
  105. /// <returns>调度结果</returns>
  106. public EBattleUpdateStatus Update()
  107. {
  108. if (this.Env().IsPause == true)
  109. {
  110. return EBattleUpdateStatus.Continue;
  111. }
  112. ///// 计时器调度
  113. //this.mBattleParam.TimeCenter().Update();
  114. ///// 时间
  115. //long now = this.Env().TimeCenter().Now();
  116. ///// 事件调度
  117. //this.mEventDisp.OnUpdateFieldEvent(now);
  118. ///// 对象调度
  119. //this.mLogicFightersModel.OnUpdate(now);
  120. ///// 技能调度
  121. //this.mBulletModel.OnUpdateBullet(now);
  122. ///// buff调度
  123. //this.mBuffModel.OnUpdateBuffs(now);
  124. ///// 战场策略调度
  125. //if (this.mFieldModule.CurrentPoilcy().IsComplete())
  126. //{
  127. // if (this.mFieldModule.CurrentPoilcy().Type() == EBattleStaus.EBATTLE_STATUS_FIGHTING)
  128. // {
  129. // LogHelper.Log(" 清空战场残留,比如Buff");
  130. // mBuffModel.ClearAllBuff();
  131. // }
  132. // this.mFieldModule.ChangeFieldPolicy(this.mFieldModule.CurrentPoilcy().Next(), this.mFieldModule.CurrentPoilcy().Result());
  133. //}
  134. return this.mFieldModule.OnUpdate(0);
  135. }
  136. }
  137. }