Exemple #1
0
        public static List <EncounterAction> ActionsForUnitReform(EncounterState state, Entity parent, int formationNumber, Unit unit)
        {
            var actions = new List <EncounterAction>();

            var parentPos = parent.GetComponent <PositionComponent>().EncounterPosition;
            var playerPos = state.Player.GetComponent <PositionComponent>().EncounterPosition;

            var targetPosition = AIUtils._DecideFormationPosition(formationNumber, playerPos, unit);

            if (parentPos != targetPosition)
            {
                // TODO: We may want to make pathfinding stateful/cache it or something, to save on turn times
                var path = Pathfinder.AStarWithNewGrid(parentPos, targetPosition, state);
                if (path != null)
                {
                    actions.Add(new MoveAction(parent.EntityId, path[0]));
                }
                else
                {
                    actions.Add(new WaitAction(parent.EntityId));
                }
            }
            else
            {
                actions.Add(new WaitAction(parent.EntityId));
            }

            return(actions);
        }