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);
}
}
}
}