GameBattleManagerOpr.cs 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318
  1. using UnityEngine;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. namespace YLBattle
  5. {
  6. public partial class GameBattleManager
  7. {
  8. /// <summary>
  9. /// Test版本
  10. /// </summary>
  11. /// <param name="blue"></param>
  12. /// <param name="red"></param>
  13. /// <param name="isCastSkill">是否可释放技能</param>
  14. public void BattleInitializeTest(List<GameHeroVo> blue, List<GameHeroVo> red,
  15. bool isCastSkill0 = false,
  16. bool isCastSkill1 = false,
  17. bool isCastSkill2 = false,
  18. bool isCastSkill3 = false,
  19. bool isCastSkill4 = false
  20. )
  21. {
  22. this.mBattleParam.redteam.Clear();
  23. this.mBattleParam.blueteam.Clear();
  24. int seat = -1;
  25. //List<int> mSort = new List<int>() { 3, 1, 0, 2, 4 };
  26. foreach (GameHeroVo vo in red)
  27. {
  28. seat++;
  29. if (vo == null)
  30. {
  31. continue;
  32. }
  33. HeroAdapter adaptee = new HeroAdapter(vo, seat, false);
  34. this.mBattleParam.redteam.Add(adaptee);
  35. }
  36. seat = -1;
  37. foreach (GameHeroVo vo in blue)
  38. {
  39. seat++;
  40. if (vo == null)
  41. {
  42. continue;
  43. }
  44. HeroAdapter adaptee = new HeroAdapter(vo, seat, false);
  45. this.mBattleParam.blueteam.Add(adaptee);
  46. }
  47. BattleSwitch.IsOpenAttack = isCastSkill0;
  48. BattleSwitch.IsOpenEnemySkill = isCastSkill1;
  49. BattleSwitch.IsOpenLeaderSkill = isCastSkill2;
  50. BattleSwitch.isOpenCOMBO = isCastSkill3;
  51. BattleSwitch.IsConsumePower = isCastSkill4;
  52. BattlesSimulatedData.Instance.TestBlue = blue;
  53. BattlesSimulatedData.Instance.TestRed = red;
  54. BattleInitialize(0, null, false, null, 0, 0, string.Empty, (int)BattleMode.Test, 0);
  55. }
  56. /// <summary>
  57. /// Guide引导
  58. /// </summary>
  59. /// <param name="blue"></param>
  60. /// <param name="red"></param>
  61. /// <param name="isCastSkill">是否可释放技能</param>
  62. public void BattleInitializeGuide(int level, List<GameHeroVo> blue, List<GameHeroVo> red)
  63. {
  64. this.mBattleParam.redteam.Clear();
  65. this.mBattleParam.blueteam.Clear();
  66. int seat = -1;
  67. //foreach (HeroGameVo vo in red)
  68. //{
  69. // seat++;
  70. // if (vo == null)
  71. // {
  72. // continue;
  73. // }
  74. // HeroAdapter adaptee = new HeroAdapter(vo, seat, false);
  75. // this.mBattleParam.redteam.Add(adaptee);
  76. //}
  77. seat = -1;
  78. foreach (GameHeroVo vo in blue)
  79. {
  80. seat++;
  81. if (vo == null)
  82. {
  83. continue;
  84. }
  85. HeroAdapter adaptee = new HeroAdapter(vo, seat, false);
  86. this.mBattleParam.blueteam.Add(adaptee);
  87. }
  88. // List<string> blue2 = new List<string> { "10001'", "10002" };
  89. BattlesSimulatedData.Instance.TestBlue = blue;
  90. BattlesSimulatedData.Instance.TestRed = red;
  91. BattleInitialize(level, null, false, null, 0, 0, string.Empty, 4, 0);
  92. }
  93. /// <summary>
  94. /// 战斗环境初始化【PVE】
  95. /// </summary>
  96. /// <param name="blue">蓝队编号</param>
  97. /// <param name="red">敌方编号 队伍信息</param>
  98. /// <param name="redLeaderUID">对手的队长UID</param>
  99. /// <param name="pvpPlayerUID">对手的PlayerUID</param>
  100. /// <param name="pvpType">对手的类型</param>
  101. public void BattleInitializePVP(List<string> blue, List<GameHeroVo> red, string redLeaderUID,
  102. string pvpPlayerUID = "", string pvpType = "")
  103. {
  104. LogHelper.Log("PVP:战斗环境初始化");
  105. this.mBattleParam.redteam.Clear();
  106. if (red.Count <= 0)
  107. {
  108. LogHelper.LogError("PVP:敌方参与人数为零");
  109. return;
  110. }
  111. this.mBattleParam.mPVP_PlayerUID = pvpPlayerUID;
  112. this.mBattleParam.mPVP_Type = pvpType;
  113. int seat = -1;
  114. List<int> mSort = new List<int>() { 3, 1, 0, 2, 4 };
  115. foreach (GameHeroVo vo in red)
  116. {
  117. seat++;
  118. if (vo == null)
  119. {
  120. continue;
  121. }
  122. HeroAdapter adaptee = new HeroAdapter(vo, mSort[seat], vo.uid == redLeaderUID ? true : false);
  123. this.mBattleParam.redteam.Add(adaptee);
  124. }
  125. BattleInitialize(0, blue, false, null, 0, 0, string.Empty, 2, 0);
  126. }
  127. /// <summary>
  128. /// 战斗环境初始化【PVE】
  129. /// </summary>
  130. /// <param name="level">关卡号</param>
  131. /// <param name="blue">蓝队参赛人员(服务器同步下来的唯一实例iid)</param>
  132. /// <param name="allowaAuto">是否允许自动战斗</param>
  133. /// <param name="buyBuffs">buffID</param>
  134. /// <param name="buyBuffCostGold">购买buff消耗的金币</param>
  135. /// <param name="difficity">难度</param>
  136. /// <param name="friendUID">友情支援serverPlayerID</param>
  137. /// <param name="mode">0=普通模式 1=无穷尽 2=pvp 3=test 4=guide</param>
  138. /// <param name="carbonId">副本ID</param>
  139. public void BattleInitialize(int level, List<string> blue, bool isAuto,
  140. List<string> buyBuffs,
  141. int buyBuffCostGold,
  142. int difficity = 0,
  143. string friendUID = "",
  144. int mode = 0,
  145. int carbonId = 0,
  146. int levelStatus = 0)
  147. {
  148. LogHelper.Log("战斗环境初始化");
  149. this.mBattleParam.BuyBuffCostGold = buyBuffCostGold;
  150. this.mBattleParam.TeamBuffs = buyBuffs;
  151. this.mLevelStatus = levelStatus;
  152. this.mBattleParam.levelID = level;
  153. this.mBattleParam.levelDifficity = difficity;
  154. this.mBattleParam.BattleCOMBOPower = 0;
  155. this.mBattleParam.BattleBlueTeamSkillPower = 0;
  156. this.mBattleParam.BattleRedTeamSkillPower = 0;
  157. this.mBattleParam.levelMode = mode;
  158. this.mBattleParam.carbonId = carbonId;
  159. List<string> preLoadFighterRes = new List<string>();
  160. /***
  161. * 此参数决定在战斗时,己方角色数据从哪里读取!!!!!!
  162. */
  163. BattleSwitch.battleMode = (BattleMode)mode;
  164. #region 角色统计
  165. switch (mode)
  166. {
  167. case 0: //0=普通模式
  168. this.mBattleParam.redteam.Clear();
  169. //this.mGateInfo = ArenasProxy.Instance.GetCombatDataInfoById(level);
  170. this.mGateInfo = sm_gate_combat.GetMoById(level);
  171. /**
  172. * 预加载角色龙骨数据
  173. * 己方已加载完,这里主要是敌方的角色预加载
  174. */
  175. //if (mGateInfo != null)
  176. //{
  177. // List<string> resMonsterRes = this.mGateInfo.AllGateEnemyModelIdList();
  178. // foreach (string sTid in resMonsterRes)
  179. // {
  180. // sm_hero vo = sm_hero.GetMoByID(sTid);
  181. // if (vo != null)
  182. // preLoadFighterRes.Add(vo.dragonBoneMod);
  183. // }
  184. //}
  185. break;
  186. case 1: // 1=无穷尽
  187. this.mBattleParam.redteam.Clear();
  188. //this.mFroeverInfo = ArenasProxy.Instance.GetCombatDataInfoById(level);
  189. this.mFroeverInfo = sm_gate_combat.GetMoById(level);
  190. break;
  191. case 2: //2=pvp
  192. foreach (HeroAdapter adp in this.mBattleParam.redteam)
  193. {
  194. if (adp != null)
  195. preLoadFighterRes.Add(adp.DragonboneName());
  196. }
  197. break;
  198. case 3: //3=test
  199. foreach (HeroAdapter adp in this.mBattleParam.redteam)
  200. {
  201. if (adp != null)
  202. preLoadFighterRes.Add(adp.DragonboneName());
  203. }
  204. foreach (HeroAdapter adp in this.mBattleParam.blueteam)
  205. {
  206. if (adp != null)
  207. preLoadFighterRes.Add(adp.DragonboneName());
  208. }
  209. break;
  210. case 4: //4=guide
  211. this.mBattleParam.redteam.Clear();
  212. //this.mGateInfo = ArenasProxy.Instance.GetCombatDataInfoById(level);
  213. this.mGateInfo = sm_gate_combat.GetMoById(level);
  214. /**
  215. * 预加载角色龙骨数据
  216. * 己方已加载完,这里主要是敌方的角色预加载
  217. */
  218. List<string> resMonsterResGuide = new List<string>(); //this.mGateInfo.AllGateEnemyModelIdList();
  219. sm_gate.GetMoById(level).GetMonsterLevels().ForEach(l => l.GetMonsterIds().ForEach(id => resMonsterResGuide.Add(id.ToString())));
  220. foreach (string sTid in resMonsterResGuide)
  221. {
  222. sm_hero vo = sm_hero.GetMoByID(sTid);
  223. if (vo != null)
  224. preLoadFighterRes.Add(vo.dragonBoneMod);
  225. }
  226. break;
  227. }
  228. #endregion
  229. // 数据清空
  230. this.mBattleParam.levelStatus = 0;
  231. this.mBattleParam.isSecSpeed = false;
  232. this.mBattleParam.levelTotalStatus = 0;
  233. this.mBattleParam.BattleCOMBOPower = 0;
  234. this.mBattleParam.FriendUID = friendUID;
  235. this.mBattleParam.levelSenceBundle = string.Empty;
  236. this.mBattleParam.IsCastLeaderSkill = false;
  237. this.mBattleParam.bossId = string.Empty;
  238. this.mBattleParam.IsBossArrival = false;
  239. /// 准备本次己方战斗人员
  240. LogHelper.Log("外部数据初始化:准备本次己方战斗人员数据");
  241. /// 准备本次战斗人员
  242. this.mBattleParam.reloadBlue = true;
  243. if (mode != 3 && mode != 4) //
  244. {
  245. #region 正常模式
  246. this.mBattleParam.blueteam.Clear();
  247. string strHero = string.Empty;
  248. for (int i = 0; i < blue.Count; ++i)
  249. {
  250. string[] mdata = blue[i].Split(',');
  251. HeroAdapter adaptee = new HeroAdapter(mdata[0], mdata[1], mdata[2] == "1" ? true : false);
  252. if (preLoadFighterRes.Contains(mdata[0]) == false)
  253. {
  254. preLoadFighterRes.Add(adaptee.TID());
  255. }
  256. strHero += adaptee.TID() + ",";
  257. this.mBattleParam.blueteam.Add(adaptee);
  258. }
  259. ///预加载
  260. if (this.mBattleParam.FriendUID.Trim().Length > 0)
  261. {
  262. ///无占位
  263. LogHelper.Log("预加载友情支援数据...");
  264. HeroAdapter friendAda = new HeroAdapter(this.mBattleParam.FriendUID);
  265. this.mBattleParam.friend = friendAda;
  266. }
  267. LogHelper.Log("当前关卡己方类型:" + strHero);
  268. #endregion
  269. }
  270. else
  271. {
  272. #region 测试模式
  273. LogHelper.Log("测试模式:准备本次双方战斗人员数据");
  274. #endregion
  275. }
  276. BattleResources.Dragons = preLoadFighterRes;
  277. this.ChangeStatus(EBattleUpdateStatus.Waiting);
  278. this.Update();
  279. }
  280. }
  281. }