Exemple #1
0
        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);
        }
Exemple #2
0
        //自动
        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);
 }