예제 #1
0
        //自动
        private HeroActionState AutoAction(List <BattleAction> heroActions)
        {
            //搜索敌人
            //如果存在可以攻击的目标
            //将会选定目标 以及 要移动到的位置(格子)
            TargetSearchResult searchResult = SearchTarget(heroActions);

            switch (searchResult)
            {
            //需要移动
            case TargetSearchResult.NeedMove:
                //先移动
                MoveToTargetGrid(heroActions, targetBattleUnit, targetGrid, toTargetPath.ToArray());
                //移动后判断是否可以攻击
                if (CheckUnderAttackRadius())
                {
                    UseSkill(heroActions, targetBattleUnit, 0);
                }
                break;

            //在攻击范围内
            case TargetSearchResult.InRange:
                UseSkill(heroActions, targetBattleUnit, 0);
                break;

            //战斗结束
            case TargetSearchResult.Inexistence:
                if (battleField.CheckBattleEnd())
                {
                    return(HeroActionState.BattleEnd);
                }
                else
                {
                    return(HeroActionState.Warn);
                }

            default:
                break;
            }

            if (battleField.CheckBattleEnd())
            {
                return(HeroActionState.BattleEnd);
            }
            else
            {
                return(HeroActionState.Normal);
            }
        }
예제 #2
0
        //自动
        private HeroActionState AutoAction(BattleUnitAction battleUnitAction)
        {
            //自动选择目标
            AutoSelectTarget(battleUnitAction);

            //找不到目标单位,这个就很奇怪了...
            if (targetBattleUnit == null && battleUnitAction != null)
            {
                battleUnitAction.warningAction            = BattleUnitWarningAction.Get();
                battleUnitAction.warningAction.logWarning = "No target:" + battleUnitID;
                return(HeroActionState.Warn);
            }

            //需要移动
            if (battleUnitAction != null && toTargetPath.Count > 0)
            {
                MoveToTargetGrid(battleUnitAction, targetBattleUnit, toTargetPath[toTargetPath.Count - 1], toTargetPath.ToArray());
            }

            //自动搓招儿
            AutoUseSkill(battleUnitAction);

            //战斗结束判断
            if (battleField.CheckBattleEnd())
            {
                return(HeroActionState.BattleEnd);
            }
            else
            {
                return(HeroActionState.Normal);
            }
        }