using UnityEngine; using System; using System.Collections; using System.Collections.Generic; namespace YLBattle { /// /// 战斗对象管理 /// public partial class LogicFighterManager : ILogicFighterOper { /// /// 上下文环境信息 /// private BattleParam mEnv = null; /// /// 本次战斗所有人员,不会删减,保留原始数据 /// private Dictionary mFighters = new Dictionary(); /// /// 已死亡人员列表, 尸体消失后会移除 /// private List mDeathFighterss = new List(); /// /// 友情帮组的fighter [seat,fighterOjb] /// private Dictionary mFriendFighters = new Dictionary(); /// /// 史上最简单的ID计数器 /// private int mIdCalculate = 0; /// /// 实例id生成器 /// private int mIdCreater = 0; /// /// 初始化 /// /// 上下文环境信息 public void Initialize(BattleParam env) { this.mEnv = env; this.mDeathFighterss.Clear(); ///清空数据 if (this.Env().reloadBlue) { this.mFighters.Clear(); this.mFriendFighters.Clear(); } else { List removeLogicFighter = new List(); foreach (KeyValuePair kv in this.mFighters) { if (kv.Value.Team() == EBattleTeam.REDTEAM) { removeLogicFighter.Add(kv.Key); } } for (int i = 0; i < removeLogicFighter.Count; ++i) { this.mFighters.Remove(removeLogicFighter[i]); } } LogHelper.Log("准备本次参与的双方角色"); ///初始化战斗对象 int id = 0; LogicFighter fighter = null; if (this.mEnv.RealodBule()) { List mSetedSeat = new List(); for (int i = 0; i < this.Env().BlueTeam().Count; ++i) { id++; fighter = new LogicFighter(); fighter.SetData(id.ToString(), this.Env(), this.Env().BlueTeam()[i], EBattleTeam.BLUETEAM, this.Env().BlueTeam()[i].Seat); this.mFighters.Add(fighter.ID(), fighter); // 2019 战斗系统 修改 //this.mEnv.ShowAdapter().CreatLogicFighter(id.ToString(), EBattleTeam.BLUETEAM, this.Env().levelMode, this.Env().BlueTeam()[i]); ///记录已经站坑的位置 mSetedSeat.Add(this.Env().BlueTeam()[i].Seat); } ///无援军 if (this.Env().friend != null) { ///援军位置查询~ if (mSetedSeat.Count < BattleConst.BattleBlueSeatMax) { int emptySeat = -1; for (int sindex = 0; sindex < this.mEnv.BattleTeamMaxFighter; sindex++) { if (mSetedSeat.Contains(sindex) == false) { emptySeat = sindex; break; } } if (emptySeat != -1) { this.SetFriendHelp(emptySeat); } } } } else { foreach (KeyValuePair kv in this.mFighters) { fighter = kv.Value; bool isFriend = false; if (this.mFriendFighters.ContainsKey(fighter.Seat())) { LogicFighter friend = this.mFriendFighters[fighter.Seat()]; if (friend.ID() == fighter.ID()) { fighter = friend; isFriend = true; } else { continue; } } // 2019 战斗系统 修改 //this.mEnv.ShowAdapter().CreatLogicFighter(fighter.ID(), EBattleTeam.BLUETEAM, this.Env().levelMode, kv.Value.Adapter(), isFriend); } } ///敌方 for (int j = 0; j < this.Env().RedTeam().Count; ++j) { id = this.mEnv.BattleTeamMaxFighter + j + 1; fighter = new LogicFighter(); fighter.SetData(id.ToString(), this.Env(), this.Env().RedTeam()[j], EBattleTeam.REDTEAM, j); this.mFighters.Add(fighter.ID(), fighter); // 2019 战斗系统 修改 //this.mEnv.ShowAdapter().CreatLogicFighter(id.ToString(), EBattleTeam.REDTEAM, this.Env().levelMode, this.Env().RedTeam()[j]); } } /// /// 返回战场上下文环境信息 /// /// 上下文环境信息 public BattleParam Env() { return this.mEnv; } /// /// 周期调度 /// /// 逻辑帧时间 public void OnUpdate(long now) { // 2019 战斗系统 修改 return; // 战斗对象帧周期调度 foreach (KeyValuePair kv in this.mFighters) { kv.Value.GetState().OnUpdateState(now); } // 死亡对象调度 for (int i = 0; i < this.mDeathFighterss.Count; ++i) { this.mDeathFighterss[i].GetState().OnUpdateState(now); } } } }