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; action.attribute.currentBP = battleUnitAttribute.BP; battleField.AppendBattleAction(action); }
//自动 private HeroActionState AutoAction() { BattleBehaviourSystem.BattleDecision decision = battleBehaviourSystem.Think(); if (decision == null) { BattleUnitAttributeUpdate action = BattleUnitActionEvent.CreateEvent <BattleUnitAttributeUpdate>(BattleUnitActionType.AttributeUpdate, this); action.attribute = new BattleUnitSyncAttribute(); action.attribute.hpChanged = 0; action.attribute.currentHP = battleUnitAttribute.hp; action.attribute.energyChanged = 0; action.attribute.currentEnergy = battleUnitAttribute.energy; action.attribute.currentBP = battleUnitAttribute.BP; battleField.AppendBattleAction(action); return(HeroActionState.Normal); } //判断是否切换目标 if (decision.targetBattleUnit != null && !decision.targetBattleUnit.Equals(targetBattleUnit)) { BattleUnitChangeTargetAction action = BattleUnitActionEvent.CreateEvent <BattleUnitChangeTargetAction>(BattleUnitActionType.ChangeTarget, this); action.lastTargetUnit = targetBattleUnit; action.newTargetUnit = decision.targetBattleUnit; battleField.AppendBattleAction(action); targetBattleUnit = decision.targetBattleUnit; } //需要移动 if (decision.movePath != null && decision.movePath.Length > 0) { MoveToTargetGrid(targetBattleUnit, decision.movePath[decision.movePath.Length - 1], decision.movePath); } //自动搓招儿 AutoUseSkill(decision); return(HeroActionState.Normal); }
//更新数值 private IEnumerator PlayAttributeUpdateAction(BattleUnitAttributeUpdate action) { RefreshAttribute(action.attribute); yield return(EGameConstL.WaitForDotOneSecond); }