using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using YLBattle;
namespace YLBattle
{
///
/// 战斗管理
///
public partial class BattleManager : IBattleGlobalOper
{
///
/// 战斗上下文环境信息
///
protected BattleParam mBattleParam = null;
///
/// 当前战场
///
protected BattleField mFieldModule = new BattleField();
///
/// 战斗对象管理器
///
protected LogicFighterManager mLogicFightersModel = new LogicFighterManager();
///
/// (技能)子弹管理器
///
protected X2Battle.BulletManager mBulletModel = new X2Battle.BulletManager();
///
/// buff管理器
///
protected BuffManager mBuffModel = new BuffManager();
///
/// 战斗事件处理器
///
protected FieldEventDispatcher mEventDisp = new FieldEventDispatcher();
///
/// 返回上下文环境信息
///
/// 上下文环境信息
public BattleParam Env()
{
return this.mBattleParam;
}
///
/// 开始一场战斗
///
/// 战斗参数
public void BattleStart(BattleParam param)
{
///战场模块数据间的交互
this.mBattleParam = param;
this.mBattleParam.mBattleGlobalOper = this;
this.mBattleParam.mBattleInnerOper = this.mFieldModule;
this.mBattleParam.mLogicFighterOper = this.mLogicFightersModel;
this.mBattleParam.mBulletManagerOpr = this.mBulletModel;
this.mBattleParam.mBuffManagerOpr = this.mBuffModel;
this.mBattleParam.mEventDisp = this.mEventDisp;
this.mBattleParam.ShowAdapter().Initialize(this,
this.Env().BattleSceneBundle(),
this.Env().BattleSceneBgBundle(),
this.Env().levelMode);
// 交互模块的初始化
this.mFieldModule.Initialize(this.mBattleParam);
this.mLogicFightersModel.Initialize(this.mBattleParam);
this.mBulletModel.Initialize(this.mBattleParam);
this.mEventDisp.Initialize(this.mBattleParam);
this.mBuffModel.Initialize(this.mBattleParam);
this.mBattleParam.TimeCenter().Start();
if(GameDateManager.Instance.isMultiRoom)
{
// 网络回调
MultiBattleProxy.Instance.On_PeopleList = GetPeoplistSC;
MultiBattleProxy.Instance.On_BroadCast = NetBattleBroadCastSC;
MultiBattleProxy.Instance.On_UpdatePosition = NetBattlePostionSC;
MultiBattleProxy.Instance.On_BTStatus = NetBattleStatusSC;
// 刷新战斗成员列表
MultiBattleProxy.Instance.GetPeopleList();
}
}
public void GetPeoplistSC(MultiDup.SC_BT_PeopleList pList)
{
foreach(var p in pList.PlayerUids)
{
if(p == UserProxy.Instance.player.uid)
{
continue;
}
RoleManager.Instance.CreateFriendPlayers(p, () => { });
}
}
public void NetBattleBroadCastSC(MultiDup.SC_BT_BroadCast broadMsg)
{
}
public void NetBattlePostionSC(MultiDup.SC_BT_Position positionMsg)
{
RoleManager.Instance.SetFriendPosition(positionMsg.SenderUid, positionMsg.X, positionMsg.Y, positionMsg.Z);
}
public void NetBattleStatusSC(MultiDup.SC_BT_Status statusMsg)
{
RoleManager.Instance.SetFiendStatus(statusMsg.SenderUid, statusMsg.PropertyName, statusMsg.Value);
}
///
/// 帧调度
///
/// 调度结果
public EBattleUpdateStatus Update()
{
if (this.Env().IsPause == true)
{
return EBattleUpdateStatus.Continue;
}
///// 计时器调度
//this.mBattleParam.TimeCenter().Update();
///// 时间
//long now = this.Env().TimeCenter().Now();
///// 事件调度
//this.mEventDisp.OnUpdateFieldEvent(now);
///// 对象调度
//this.mLogicFightersModel.OnUpdate(now);
///// 技能调度
//this.mBulletModel.OnUpdateBullet(now);
///// buff调度
//this.mBuffModel.OnUpdateBuffs(now);
///// 战场策略调度
//if (this.mFieldModule.CurrentPoilcy().IsComplete())
//{
// if (this.mFieldModule.CurrentPoilcy().Type() == EBattleStaus.EBATTLE_STATUS_FIGHTING)
// {
// LogHelper.Log(" 清空战场残留,比如Buff");
// mBuffModel.ClearAllBuff();
// }
// this.mFieldModule.ChangeFieldPolicy(this.mFieldModule.CurrentPoilcy().Next(), this.mFieldModule.CurrentPoilcy().Result());
//}
return this.mFieldModule.OnUpdate(0);
}
}
}