123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185 |
- using UnityEngine;
- using System;
- using System.Collections;
- using System.Collections.Generic;
- namespace YLBattle
- {
- /// <summary>
- /// 战斗对象管理
- /// </summary>
- public partial class LogicFighterManager : ILogicFighterOper
- {
- /// <summary>
- /// 上下文环境信息
- /// </summary>
- private BattleParam mEnv = null;
- /// <summary>
- /// 本次战斗所有人员,不会删减,保留原始数据
- /// </summary>
- private Dictionary<string, LogicFighter> mFighters = new Dictionary<string, LogicFighter>();
- /// <summary>
- /// 已死亡人员列表, 尸体消失后会移除
- /// </summary>
- private List<LogicFighter> mDeathFighterss = new List<LogicFighter>();
- /// <summary>
- /// 友情帮组的fighter [seat,fighterOjb]
- /// </summary>
- private Dictionary<int, LogicFighter> mFriendFighters = new Dictionary<int, LogicFighter>();
- /// <summary>
- /// 史上最简单的ID计数器
- /// </summary>
- private int mIdCalculate = 0;
- /// <summary>
- /// 实例id生成器
- /// </summary>
- private int mIdCreater = 0;
- /// <summary>
- /// 初始化
- /// </summary>
- /// <param name="env">上下文环境信息</param>
- public void Initialize(BattleParam env)
- {
- this.mEnv = env;
- this.mDeathFighterss.Clear();
- ///清空数据
- if (this.Env().reloadBlue)
- {
- this.mFighters.Clear();
- this.mFriendFighters.Clear();
- }
- else
- {
- List<string> removeLogicFighter = new List<string>();
- foreach (KeyValuePair<string, LogicFighter> 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<int> mSetedSeat = new List<int>();
- 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<string, LogicFighter> 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]);
- }
- }
- /// <summary>
- /// 返回战场上下文环境信息
- /// </summary>
- /// <returns>上下文环境信息</returns>
- public BattleParam Env()
- {
- return this.mEnv;
- }
- /// <summary>
- /// 周期调度
- /// </summary>
- /// <param name="now">逻辑帧时间</param>
- public void OnUpdate(long now)
- {
- // 2019 战斗系统 修改
- return;
- // 战斗对象帧周期调度
- foreach (KeyValuePair<string, LogicFighter> kv in this.mFighters)
- {
- kv.Value.GetState().OnUpdateState(now);
- }
- // 死亡对象调度
- for (int i = 0; i < this.mDeathFighterss.Count; ++i)
- {
- this.mDeathFighterss[i].GetState().OnUpdateState(now);
- }
- }
- }
- }
|