123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280 |
- using UnityEngine;
- using System.Collections;
- using System.Collections.Generic;
- namespace YLBattle
- {
- /// <summary>
- ///
- /// </summary>
- public partial class GameBattleManager
- {
- /// <summary>
- /// 单键实例
- /// </summary>
- protected static GameBattleManager instance = null;
- /// <summary>
- /// 战斗管理器
- /// </summary>
- protected BattleManager mBattleManager = new BattleManager();
- /// <summary>
- /// 战斗环境
- /// </summary>
- public BattleParam mBattleParam = new BattleParam();
- /// <summary>
- /// 战斗模式
- /// </summary>
- public BattleDefine.EBattleSceneType battleType = BattleDefine.EBattleSceneType.EBattleType_Default;
- #region 数据适配器
- /// <summary>
- /// 显示适配器
- /// </summary>
- protected IShowAdapter mShowAdapter = new ShowAdapter();
- /// <summary>
- /// 战场模板数据适配器
- /// </summary>
- protected IFieldAdapter mFieldAdapter = new FieldAdapter();
- /// <summary>
- /// 技能模板数据适配器
- /// </summary>
- protected ISkillAdapter mSkillAdapter = new SkillAdapter();
- /// <summary>
- /// 时间辅助类
- /// </summary>
- protected TimeHelper mTimeHelper = new TimeHelper();
- /// <summary>
- /// 随机数生成辅助类
- /// </summary>
- protected RandomHelper mRandomHelper = new RandomHelper();
- /// <summary>
- /// 调试输出适配
- /// </summary>
- protected IDebug debugAdapter = new UnityDebug();
- public Light battleMapLight = null;
- #endregion
- #region 关卡数据
- /// <summary>
- /// 执行场景进度
- /// </summary>
- protected int mLevelStatus = 0;
- /// <summary>
- /// 普通关卡信息
- /// </summary>
- protected sm_gate_combat mGateInfo = null;
- /// <summary>
- /// 无穷尽关卡信息
- /// </summary>
- protected sm_gate_combat mFroeverInfo = null;
- #endregion
- /// <summary>
- /// 战场调度状态
- /// </summary>
- protected EBattleUpdateStatus mBattleStatus = EBattleUpdateStatus.Stop;
- /// <summary>
- /// 战场上一个状态
- /// </summary>
- protected EBattleUpdateStatus mPreBattleStatus = EBattleUpdateStatus.Stop;
- /// <summary>
- /// 获取单键实例
- /// </summary>
- /// <returns>单键实例</returns>
- public static GameBattleManager Instance()
- {
- if (instance == null)
- {
- instance = new GameBattleManager();
- }
- return instance;
- }
- /// <summary>
- /// <summary>
- /// 构造
- /// </summary>
- protected GameBattleManager()
- {
- #region 初始化常用适配器
- this.mBattleParam.mShowAdapter = this.mShowAdapter;
- this.mBattleParam.mFieldAdapter = this.mFieldAdapter;
- this.mBattleParam.mTimeHelper = this.mTimeHelper;
- this.mBattleParam.mRandom = this.mRandomHelper;
- this.mBattleParam.mDebugHelper = this.debugAdapter;
- this.mBattleParam.mSkillAdapter = this.mSkillAdapter;
- #endregion
- #region 外部常量数据初始化
- ///战斗常量配置
- this.mBattleParam.BattleShowTime = GlobalParameter.Instance.BattleShowTime;
- this.mBattleParam.BattleTeamMaxFighter = GlobalParameter.Instance.BattleTeamMaxFighter;
- this.mBattleParam.BlueTeamMaxPower = GlobalParameter.Instance.BlueTeamMaxPower;
- this.mBattleParam.BlueTeamMaxSkillPower = GlobalParameter.Instance.BlueTeamMaxSkillPower;
- this.mBattleParam.RedTeamMaxSkillPower = GlobalParameter.Instance.RedTeamMaxSkillPower;
- this.mBattleParam.BlueCriticalTime = GlobalParameter.Instance.BlueCriticalTime;
- this.mBattleParam.BattleLianJiDamageRate = GlobalParameter.Instance.BattleLianJiDamageRate;
- this.mBattleParam.IncreasePowerByCastSkill = GlobalParameter.Instance.BattleIncreasePowerByCastSkill;
- LogHelper.Log("###暂时定制战斗时间=" + this.mBattleParam.BattleShowTime / 1000);
- LogHelper.Log("###己方最大人数=" + this.mBattleParam.BattleTeamMaxFighter);
- LogHelper.Log("###己方最高能量值=" + this.mBattleParam.BlueTeamMaxPower);
- LogHelper.Log("###己方释放技能团队power增长值=" + this.mBattleParam.IncreasePowerByCastSkill);
- #endregion
- }
- /// <summary>
- /// 更改调度状态
- /// </summary>
- /// <param name="status">目标状态</param>
- public void ChangeStatus(EBattleUpdateStatus status)
- {
- this.mPreBattleStatus = this.mBattleStatus;
- this.mBattleStatus = status;
- }
- /// <summary>
- /// 获取上一次调度状态
- /// </summary>
- /// <returns>状态</returns>
- public EBattleUpdateStatus PreStatus()
- {
- return this.mPreBattleStatus;
- }
- /// <summary>
- /// 【UI=>战斗】状态驱动
- /// </summary>
- public void Update()
- {
- switch (this.mBattleStatus)
- {
- case EBattleUpdateStatus.Continue:
- this.mBattleStatus = this.mBattleManager.Update();
- break;
- case EBattleUpdateStatus.Complete:
- if (true == this.mBattleParam.BattleInnerOper().IsBattleFinish())
- {
- this.ChangeStatus(EBattleUpdateStatus.Stop);
- return;
- }
- // 继续下一个关卡
- this.ChangeStatus(EBattleUpdateStatus.Waiting);
- break;
- case EBattleUpdateStatus.Waiting:
- {
- this.ChangeStatus(EBattleUpdateStatus.DoNothing);
- this.PrepareForBattle();
- }
- break;
- case EBattleUpdateStatus.Stop:
- {
- }
- break;
- case EBattleUpdateStatus.DoNothing:
- break;
- }
- }
- /// <summary>
- /// 开始本次战斗
- /// </summary>
- public void Go(BattleDefine.EBattleSceneType _battleType = BattleDefine.EBattleSceneType.EBattleType_Default)
- {
- LogHelper.Log("进入场景,开始本次战斗");
- battleType = _battleType;
- AudioManager.Instance.ChangeGameBackMusic(AudioManager.BattleBackMusic, 0.1f);
- this.ChangeStatus(EBattleUpdateStatus.Continue);
- // 重制战斗中介者 为 星2战斗提供 战斗上下文
- //BattleMediator.Instance.DataReset(this.mBattleParam);
- this.mBattleManager.BattleStart(this.mBattleParam);
- switch (battleType)
- {
- case BattleDefine.EBattleSceneType.EBattleType_Default:
- RoleManager.Instance.InitHeros();
- ////AIManager.Instance.Init();
- break;
- case BattleDefine.EBattleSceneType.EBattleType_Arena:
- RoleManager.Instance.InitChallengeHeros();
- break;
- case BattleDefine.EBattleSceneType.EBattleType_Guide:
- ////RoleManager.Instance.InitHeros(true);
- break;
- }
- PrepareForBattle();
- FightingManager.Instance.SetUpdateState(true);
- RPGEffectManager.Instance.Init();
- X2Battle.X2BattleManager.Instance.mBulletModel.AddBattleEvent();
- // 获取场景灯光
- GameObject btMap = GameObject.Find("AdonBG");
- if(btMap)
- {
- battleMapLight = btMap.transform.Find("Demo_Scene/Directional light").GetComponent<Light>();
- }
-
- }
- /// <summary>
- /// 设置 当前关卡是否 进入过 0 未进入 1以进入
- /// </summary>
- /// <param name="levelStatus"></param>
- public void SetLevelStatusValue(int levelStatus)
- {
- this.mLevelStatus = levelStatus;
- }
- /// <summary>
- /// 准备战斗信息
- /// </summary>
- public void PrepareForBattle()
- {
- LogHelper.Log("准备战斗数据 关卡ID:" + this.mBattleParam.levelID);
- this.mBattleParam.levelStatus = this.mLevelStatus;
- LogHelper.Log("波次信息");
- // 重制战斗中介者 为 星2战斗提供 战斗上下文
- BattleMediator.Instance.DataReset(this.mBattleParam, 456);
- this.mLevelStatus++;
- }
- }
- }
- /// <summary>
- /// 战斗类型
- /// </summary>
- //public enum E_BattleType
- //{
- // /// <summary>
- // /// 默认 普通闯关战斗
- // /// </summary>
- // Default = 0,
- // /// <summary>
- // /// 挑战
- // /// </summary>
- // Challenge = 1,
- // /// <summary>
- // /// 竞技场
- // /// </summary>
- // Arena = 2,
- // /// <summary>
- // /// 引导
- // /// </summary>
- // Guid = 3,
- //}
|