GameBattleManager.cs 9.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280
  1. using UnityEngine;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. namespace YLBattle
  5. {
  6. /// <summary>
  7. ///
  8. /// </summary>
  9. public partial class GameBattleManager
  10. {
  11. /// <summary>
  12. /// 单键实例
  13. /// </summary>
  14. protected static GameBattleManager instance = null;
  15. /// <summary>
  16. /// 战斗管理器
  17. /// </summary>
  18. protected BattleManager mBattleManager = new BattleManager();
  19. /// <summary>
  20. /// 战斗环境
  21. /// </summary>
  22. public BattleParam mBattleParam = new BattleParam();
  23. /// <summary>
  24. /// 战斗模式
  25. /// </summary>
  26. public BattleDefine.EBattleSceneType battleType = BattleDefine.EBattleSceneType.EBattleType_Default;
  27. #region 数据适配器
  28. /// <summary>
  29. /// 显示适配器
  30. /// </summary>
  31. protected IShowAdapter mShowAdapter = new ShowAdapter();
  32. /// <summary>
  33. /// 战场模板数据适配器
  34. /// </summary>
  35. protected IFieldAdapter mFieldAdapter = new FieldAdapter();
  36. /// <summary>
  37. /// 技能模板数据适配器
  38. /// </summary>
  39. protected ISkillAdapter mSkillAdapter = new SkillAdapter();
  40. /// <summary>
  41. /// 时间辅助类
  42. /// </summary>
  43. protected TimeHelper mTimeHelper = new TimeHelper();
  44. /// <summary>
  45. /// 随机数生成辅助类
  46. /// </summary>
  47. protected RandomHelper mRandomHelper = new RandomHelper();
  48. /// <summary>
  49. /// 调试输出适配
  50. /// </summary>
  51. protected IDebug debugAdapter = new UnityDebug();
  52. public Light battleMapLight = null;
  53. #endregion
  54. #region 关卡数据
  55. /// <summary>
  56. /// 执行场景进度
  57. /// </summary>
  58. protected int mLevelStatus = 0;
  59. /// <summary>
  60. /// 普通关卡信息
  61. /// </summary>
  62. protected sm_gate_combat mGateInfo = null;
  63. /// <summary>
  64. /// 无穷尽关卡信息
  65. /// </summary>
  66. protected sm_gate_combat mFroeverInfo = null;
  67. #endregion
  68. /// <summary>
  69. /// 战场调度状态
  70. /// </summary>
  71. protected EBattleUpdateStatus mBattleStatus = EBattleUpdateStatus.Stop;
  72. /// <summary>
  73. /// 战场上一个状态
  74. /// </summary>
  75. protected EBattleUpdateStatus mPreBattleStatus = EBattleUpdateStatus.Stop;
  76. /// <summary>
  77. /// 获取单键实例
  78. /// </summary>
  79. /// <returns>单键实例</returns>
  80. public static GameBattleManager Instance()
  81. {
  82. if (instance == null)
  83. {
  84. instance = new GameBattleManager();
  85. }
  86. return instance;
  87. }
  88. /// <summary>
  89. /// <summary>
  90. /// 构造
  91. /// </summary>
  92. protected GameBattleManager()
  93. {
  94. #region 初始化常用适配器
  95. this.mBattleParam.mShowAdapter = this.mShowAdapter;
  96. this.mBattleParam.mFieldAdapter = this.mFieldAdapter;
  97. this.mBattleParam.mTimeHelper = this.mTimeHelper;
  98. this.mBattleParam.mRandom = this.mRandomHelper;
  99. this.mBattleParam.mDebugHelper = this.debugAdapter;
  100. this.mBattleParam.mSkillAdapter = this.mSkillAdapter;
  101. #endregion
  102. #region 外部常量数据初始化
  103. ///战斗常量配置
  104. this.mBattleParam.BattleShowTime = GlobalParameter.Instance.BattleShowTime;
  105. this.mBattleParam.BattleTeamMaxFighter = GlobalParameter.Instance.BattleTeamMaxFighter;
  106. this.mBattleParam.BlueTeamMaxPower = GlobalParameter.Instance.BlueTeamMaxPower;
  107. this.mBattleParam.BlueTeamMaxSkillPower = GlobalParameter.Instance.BlueTeamMaxSkillPower;
  108. this.mBattleParam.RedTeamMaxSkillPower = GlobalParameter.Instance.RedTeamMaxSkillPower;
  109. this.mBattleParam.BlueCriticalTime = GlobalParameter.Instance.BlueCriticalTime;
  110. this.mBattleParam.BattleLianJiDamageRate = GlobalParameter.Instance.BattleLianJiDamageRate;
  111. this.mBattleParam.IncreasePowerByCastSkill = GlobalParameter.Instance.BattleIncreasePowerByCastSkill;
  112. LogHelper.Log("###暂时定制战斗时间=" + this.mBattleParam.BattleShowTime / 1000);
  113. LogHelper.Log("###己方最大人数=" + this.mBattleParam.BattleTeamMaxFighter);
  114. LogHelper.Log("###己方最高能量值=" + this.mBattleParam.BlueTeamMaxPower);
  115. LogHelper.Log("###己方释放技能团队power增长值=" + this.mBattleParam.IncreasePowerByCastSkill);
  116. #endregion
  117. }
  118. /// <summary>
  119. /// 更改调度状态
  120. /// </summary>
  121. /// <param name="status">目标状态</param>
  122. public void ChangeStatus(EBattleUpdateStatus status)
  123. {
  124. this.mPreBattleStatus = this.mBattleStatus;
  125. this.mBattleStatus = status;
  126. }
  127. /// <summary>
  128. /// 获取上一次调度状态
  129. /// </summary>
  130. /// <returns>状态</returns>
  131. public EBattleUpdateStatus PreStatus()
  132. {
  133. return this.mPreBattleStatus;
  134. }
  135. /// <summary>
  136. /// 【UI=>战斗】状态驱动
  137. /// </summary>
  138. public void Update()
  139. {
  140. switch (this.mBattleStatus)
  141. {
  142. case EBattleUpdateStatus.Continue:
  143. this.mBattleStatus = this.mBattleManager.Update();
  144. break;
  145. case EBattleUpdateStatus.Complete:
  146. if (true == this.mBattleParam.BattleInnerOper().IsBattleFinish())
  147. {
  148. this.ChangeStatus(EBattleUpdateStatus.Stop);
  149. return;
  150. }
  151. // 继续下一个关卡
  152. this.ChangeStatus(EBattleUpdateStatus.Waiting);
  153. break;
  154. case EBattleUpdateStatus.Waiting:
  155. {
  156. this.ChangeStatus(EBattleUpdateStatus.DoNothing);
  157. this.PrepareForBattle();
  158. }
  159. break;
  160. case EBattleUpdateStatus.Stop:
  161. {
  162. }
  163. break;
  164. case EBattleUpdateStatus.DoNothing:
  165. break;
  166. }
  167. }
  168. /// <summary>
  169. /// 开始本次战斗
  170. /// </summary>
  171. public void Go(BattleDefine.EBattleSceneType _battleType = BattleDefine.EBattleSceneType.EBattleType_Default)
  172. {
  173. LogHelper.Log("进入场景,开始本次战斗");
  174. battleType = _battleType;
  175. AudioManager.Instance.ChangeGameBackMusic(AudioManager.BattleBackMusic, 0.1f);
  176. this.ChangeStatus(EBattleUpdateStatus.Continue);
  177. // 重制战斗中介者 为 星2战斗提供 战斗上下文
  178. //BattleMediator.Instance.DataReset(this.mBattleParam);
  179. this.mBattleManager.BattleStart(this.mBattleParam);
  180. switch (battleType)
  181. {
  182. case BattleDefine.EBattleSceneType.EBattleType_Default:
  183. RoleManager.Instance.InitHeros();
  184. ////AIManager.Instance.Init();
  185. break;
  186. case BattleDefine.EBattleSceneType.EBattleType_Arena:
  187. RoleManager.Instance.InitChallengeHeros();
  188. break;
  189. case BattleDefine.EBattleSceneType.EBattleType_Guide:
  190. ////RoleManager.Instance.InitHeros(true);
  191. break;
  192. }
  193. PrepareForBattle();
  194. FightingManager.Instance.SetUpdateState(true);
  195. RPGEffectManager.Instance.Init();
  196. X2Battle.X2BattleManager.Instance.mBulletModel.AddBattleEvent();
  197. // 获取场景灯光
  198. GameObject btMap = GameObject.Find("AdonBG");
  199. if(btMap)
  200. {
  201. battleMapLight = btMap.transform.Find("Demo_Scene/Directional light").GetComponent<Light>();
  202. }
  203. }
  204. /// <summary>
  205. /// 设置 当前关卡是否 进入过 0 未进入 1以进入
  206. /// </summary>
  207. /// <param name="levelStatus"></param>
  208. public void SetLevelStatusValue(int levelStatus)
  209. {
  210. this.mLevelStatus = levelStatus;
  211. }
  212. /// <summary>
  213. /// 准备战斗信息
  214. /// </summary>
  215. public void PrepareForBattle()
  216. {
  217. LogHelper.Log("准备战斗数据 关卡ID:" + this.mBattleParam.levelID);
  218. this.mBattleParam.levelStatus = this.mLevelStatus;
  219. LogHelper.Log("波次信息");
  220. // 重制战斗中介者 为 星2战斗提供 战斗上下文
  221. BattleMediator.Instance.DataReset(this.mBattleParam, 456);
  222. this.mLevelStatus++;
  223. }
  224. }
  225. }
  226. /// <summary>
  227. /// 战斗类型
  228. /// </summary>
  229. //public enum E_BattleType
  230. //{
  231. // /// <summary>
  232. // /// 默认 普通闯关战斗
  233. // /// </summary>
  234. // Default = 0,
  235. // /// <summary>
  236. // /// 挑战
  237. // /// </summary>
  238. // Challenge = 1,
  239. // /// <summary>
  240. // /// 竞技场
  241. // /// </summary>
  242. // Arena = 2,
  243. // /// <summary>
  244. // /// 引导
  245. // /// </summary>
  246. // Guid = 3,
  247. //}