using UnityEngine; using System.Collections; using System.Collections.Generic; namespace YLBattle { public partial class GameBattleManager { /// /// Test版本 /// /// /// /// 是否可释放技能 public void BattleInitializeTest(List blue, List red, bool isCastSkill0 = false, bool isCastSkill1 = false, bool isCastSkill2 = false, bool isCastSkill3 = false, bool isCastSkill4 = false ) { this.mBattleParam.redteam.Clear(); this.mBattleParam.blueteam.Clear(); int seat = -1; //List mSort = new List() { 3, 1, 0, 2, 4 }; foreach (GameHeroVo vo in red) { seat++; if (vo == null) { continue; } HeroAdapter adaptee = new HeroAdapter(vo, seat, false); this.mBattleParam.redteam.Add(adaptee); } seat = -1; foreach (GameHeroVo vo in blue) { seat++; if (vo == null) { continue; } HeroAdapter adaptee = new HeroAdapter(vo, seat, false); this.mBattleParam.blueteam.Add(adaptee); } BattleSwitch.IsOpenAttack = isCastSkill0; BattleSwitch.IsOpenEnemySkill = isCastSkill1; BattleSwitch.IsOpenLeaderSkill = isCastSkill2; BattleSwitch.isOpenCOMBO = isCastSkill3; BattleSwitch.IsConsumePower = isCastSkill4; BattlesSimulatedData.Instance.TestBlue = blue; BattlesSimulatedData.Instance.TestRed = red; BattleInitialize(0, null, false, null, 0, 0, string.Empty, (int)BattleMode.Test, 0); } /// /// Guide引导 /// /// /// /// 是否可释放技能 public void BattleInitializeGuide(int level, List blue, List red) { this.mBattleParam.redteam.Clear(); this.mBattleParam.blueteam.Clear(); int seat = -1; //foreach (HeroGameVo vo in red) //{ // seat++; // if (vo == null) // { // continue; // } // HeroAdapter adaptee = new HeroAdapter(vo, seat, false); // this.mBattleParam.redteam.Add(adaptee); //} seat = -1; foreach (GameHeroVo vo in blue) { seat++; if (vo == null) { continue; } HeroAdapter adaptee = new HeroAdapter(vo, seat, false); this.mBattleParam.blueteam.Add(adaptee); } // List blue2 = new List { "10001'", "10002" }; BattlesSimulatedData.Instance.TestBlue = blue; BattlesSimulatedData.Instance.TestRed = red; BattleInitialize(level, null, false, null, 0, 0, string.Empty, 4, 0); } /// /// 战斗环境初始化【PVE】 /// /// 蓝队编号 /// 敌方编号 队伍信息 /// 对手的队长UID /// 对手的PlayerUID /// 对手的类型 public void BattleInitializePVP(List blue, List red, string redLeaderUID, string pvpPlayerUID = "", string pvpType = "") { LogHelper.Log("PVP:战斗环境初始化"); this.mBattleParam.redteam.Clear(); if (red.Count <= 0) { LogHelper.LogError("PVP:敌方参与人数为零"); return; } this.mBattleParam.mPVP_PlayerUID = pvpPlayerUID; this.mBattleParam.mPVP_Type = pvpType; int seat = -1; List mSort = new List() { 3, 1, 0, 2, 4 }; foreach (GameHeroVo vo in red) { seat++; if (vo == null) { continue; } HeroAdapter adaptee = new HeroAdapter(vo, mSort[seat], vo.uid == redLeaderUID ? true : false); this.mBattleParam.redteam.Add(adaptee); } BattleInitialize(0, blue, false, null, 0, 0, string.Empty, 2, 0); } /// /// 战斗环境初始化【PVE】 /// /// 关卡号 /// 蓝队参赛人员(服务器同步下来的唯一实例iid) /// 是否允许自动战斗 /// buffID /// 购买buff消耗的金币 /// 难度 /// 友情支援serverPlayerID /// 0=普通模式 1=无穷尽 2=pvp 3=test 4=guide /// 副本ID public void BattleInitialize(int level, List blue, bool isAuto, List buyBuffs, int buyBuffCostGold, int difficity = 0, string friendUID = "", int mode = 0, int carbonId = 0, int levelStatus = 0) { LogHelper.Log("战斗环境初始化"); this.mBattleParam.BuyBuffCostGold = buyBuffCostGold; this.mBattleParam.TeamBuffs = buyBuffs; this.mLevelStatus = levelStatus; this.mBattleParam.levelID = level; this.mBattleParam.levelDifficity = difficity; this.mBattleParam.BattleCOMBOPower = 0; this.mBattleParam.BattleBlueTeamSkillPower = 0; this.mBattleParam.BattleRedTeamSkillPower = 0; this.mBattleParam.levelMode = mode; this.mBattleParam.carbonId = carbonId; List preLoadFighterRes = new List(); /*** * 此参数决定在战斗时,己方角色数据从哪里读取!!!!!! */ BattleSwitch.battleMode = (BattleMode)mode; #region 角色统计 switch (mode) { case 0: //0=普通模式 this.mBattleParam.redteam.Clear(); //this.mGateInfo = ArenasProxy.Instance.GetCombatDataInfoById(level); this.mGateInfo = sm_gate_combat.GetMoById(level); /** * 预加载角色龙骨数据 * 己方已加载完,这里主要是敌方的角色预加载 */ //if (mGateInfo != null) //{ // List resMonsterRes = this.mGateInfo.AllGateEnemyModelIdList(); // foreach (string sTid in resMonsterRes) // { // sm_hero vo = sm_hero.GetMoByID(sTid); // if (vo != null) // preLoadFighterRes.Add(vo.dragonBoneMod); // } //} break; case 1: // 1=无穷尽 this.mBattleParam.redteam.Clear(); //this.mFroeverInfo = ArenasProxy.Instance.GetCombatDataInfoById(level); this.mFroeverInfo = sm_gate_combat.GetMoById(level); break; case 2: //2=pvp foreach (HeroAdapter adp in this.mBattleParam.redteam) { if (adp != null) preLoadFighterRes.Add(adp.DragonboneName()); } break; case 3: //3=test foreach (HeroAdapter adp in this.mBattleParam.redteam) { if (adp != null) preLoadFighterRes.Add(adp.DragonboneName()); } foreach (HeroAdapter adp in this.mBattleParam.blueteam) { if (adp != null) preLoadFighterRes.Add(adp.DragonboneName()); } break; case 4: //4=guide this.mBattleParam.redteam.Clear(); //this.mGateInfo = ArenasProxy.Instance.GetCombatDataInfoById(level); this.mGateInfo = sm_gate_combat.GetMoById(level); /** * 预加载角色龙骨数据 * 己方已加载完,这里主要是敌方的角色预加载 */ List resMonsterResGuide = new List(); //this.mGateInfo.AllGateEnemyModelIdList(); sm_gate.GetMoById(level).GetMonsterLevels().ForEach(l => l.GetMonsterIds().ForEach(id => resMonsterResGuide.Add(id.ToString()))); foreach (string sTid in resMonsterResGuide) { sm_hero vo = sm_hero.GetMoByID(sTid); if (vo != null) preLoadFighterRes.Add(vo.dragonBoneMod); } break; } #endregion // 数据清空 this.mBattleParam.levelStatus = 0; this.mBattleParam.isSecSpeed = false; this.mBattleParam.levelTotalStatus = 0; this.mBattleParam.BattleCOMBOPower = 0; this.mBattleParam.FriendUID = friendUID; this.mBattleParam.levelSenceBundle = string.Empty; this.mBattleParam.IsCastLeaderSkill = false; this.mBattleParam.bossId = string.Empty; this.mBattleParam.IsBossArrival = false; /// 准备本次己方战斗人员 LogHelper.Log("外部数据初始化:准备本次己方战斗人员数据"); /// 准备本次战斗人员 this.mBattleParam.reloadBlue = true; if (mode != 3 && mode != 4) // { #region 正常模式 this.mBattleParam.blueteam.Clear(); string strHero = string.Empty; for (int i = 0; i < blue.Count; ++i) { string[] mdata = blue[i].Split(','); HeroAdapter adaptee = new HeroAdapter(mdata[0], mdata[1], mdata[2] == "1" ? true : false); if (preLoadFighterRes.Contains(mdata[0]) == false) { preLoadFighterRes.Add(adaptee.TID()); } strHero += adaptee.TID() + ","; this.mBattleParam.blueteam.Add(adaptee); } ///预加载 if (this.mBattleParam.FriendUID.Trim().Length > 0) { ///无占位 LogHelper.Log("预加载友情支援数据..."); HeroAdapter friendAda = new HeroAdapter(this.mBattleParam.FriendUID); this.mBattleParam.friend = friendAda; } LogHelper.Log("当前关卡己方类型:" + strHero); #endregion } else { #region 测试模式 LogHelper.Log("测试模式:准备本次双方战斗人员数据"); #endregion } BattleResources.Dragons = preLoadFighterRes; this.ChangeStatus(EBattleUpdateStatus.Waiting); this.Update(); } } }