//进入战场 public void EnterBattleField(BattleField battleField, GridUnit bornGrid) { if (battleField != null && bornGrid != null) { this.battleField = battleField; //设置敌方队伍 enemyTeam = battleField.GetBattleTeam(this, false); //重置属性 battleUnitAttribute.RandomAttributes(); battleUnitAttribute.Reset(); //重置bbsys battleBehaviourSystem.ResetSystem(); EnterGrid(bornGrid); BattleUnitAction battleUnitAction = BattleUnitAction.Create(this); battleUnitAction.enterBattleFieldAction = BattleUnitEnterBattleFieldAction.Get(); battleUnitAction.enterBattleFieldAction.bornGrid = bornGrid; battleUnitAction.enterBattleFieldAction.attribute = new BattleUnitSyncAttribute(); battleUnitAction.enterBattleFieldAction.attribute.hpChanged = 0; battleUnitAction.enterBattleFieldAction.attribute.currentHP = battleUnitAttribute.hp; battleUnitAction.enterBattleFieldAction.attribute.energyChanged = 0; battleUnitAction.enterBattleFieldAction.attribute.currentEnergy = 0; //创建进入战场的消息 battleField.AppendBattleAction(battleUnitAction); //初始化战斗行为系统 battleBehaviourSystem.Init(this, battleField); } }
private void RecoverEnergy() { //数值改变 battleUnitAttribute.energy += EGameConstL.EnergyRecoverPerRound; battleUnitAttribute.energy = battleUnitAttribute.energy > battleUnitAttribute.maxEnergy ? battleUnitAttribute.maxEnergy : battleUnitAttribute.energy; //创建一个Action BattleUnitAttributeUpdate action = BattleUnitActionEvent.CreateEvent <BattleUnitAttributeUpdate>(BattleUnitActionType.AttributeUpdate, this); action.attribute = new BattleUnitSyncAttribute(); action.attribute.hpChanged = 0; action.attribute.currentHP = battleUnitAttribute.hp; action.attribute.energyChanged = EGameConstL.EnergyRecoverPerRound; action.attribute.currentEnergy = battleUnitAttribute.energy; battleField.AppendBattleAction(action); }
//进入战场 public void EnterBattleField(BattleField battleField, GridUnit bornGrid) { if (battleField != null && bornGrid != null) { this.battleField = battleField; //设置敌方队伍 enemyTeam = battleField.GetBattleTeam(this, false); //重置属性 battleUnitAttribute.RandomAttributes(); battleUnitAttribute.Reset(); //创建背包 if (package == null) { package = BattleUnitPackage.CreateInstance(this, 2); } package.Clear(); //进入战场 BattleUnitEnterBattleFieldAction enterBattleFieldAction = BattleUnitActionEvent.CreateEvent <BattleUnitEnterBattleFieldAction>(BattleUnitActionType.EnterBattleField, this); enterBattleFieldAction.battleField = battleField; enterBattleFieldAction.bornGrid = bornGrid; enterBattleFieldAction.attribute = new BattleUnitSyncAttribute(); enterBattleFieldAction.attribute.hpChanged = 0; enterBattleFieldAction.attribute.currentHP = battleUnitAttribute.hp; enterBattleFieldAction.attribute.energyChanged = 0; enterBattleFieldAction.attribute.currentEnergy = 0; battleField.AppendBattleAction(enterBattleFieldAction); //进入格子 EnterGrid(bornGrid); //初始化战斗行为系统 if (battleBehaviourSystem != null) { battleBehaviourSystem.Init(this, battleField); } //重置bbsys if (battleBehaviourSystem != null) { battleBehaviourSystem.ResetSystem(); } } }
/// <summary> /// 战斗单位动作的顺序是,移动->攻击 /// </summary> /// <param name="heroActions"></param> /// <returns></returns> public HeroActionState BattleAction() { BattleUnitAction battleUnitAction = BattleUnitAction.Create(this); battleField.AppendBattleAction(battleUnitAction); //恢复能量 RecoverEnergy(battleUnitAction); //冷静 battleBehaviourSystem.RageLevelCooldown(); //手动 if (battleUnitAttribute.manualOperation) { return(ManualAction(battleUnitAction)); } //自动 else { return(AutoAction(battleUnitAction)); } }