Beispiel #1
0
        /// <summary>
        /// Traces a grid vertex step back to the source.
        /// </summary>
        /// <param name="vert">The final vertex.</param>
        /// <returns>The number of steps taken to reach the start.</returns>
        public int TraceSteps(GridVertex vert)
        {
            int steps = 0;

            while (!vert.Equals(Unit.Coords))
            {
                steps++;
                AffectedPaths.TryGetValue(vert, out vert);
            }
            return(steps);
        }
Beispiel #2
0
        /// <summary>
        /// Executes and then deselects the action. This usually happens when right clicking after an action has been selected.
        /// </summary>
        public override void Execute()
        {
            SubtractEnergy();
            Game       game   = Unit.Engine3D.Source as Game;
            GridVertex target = game.CursorController.Target;

            if (AffectedVertices.Contains(target))
            {
                List <GridVertex> steps = new List <GridVertex>();
                while (!target.Equals(Unit.Coords))
                {
                    steps.Add(target);
                    AffectedPaths.TryGetValue(target, out target);
                }
                Unit.MoveSteps = steps.Reverse <GridVertex>().ToList().GetEnumerator();
                Unit.MoveSteps.MoveNext();
                Unit.IsMoving = true;
                game.UnitController.Entity.RemoveProperty <BasicMeshRenderableProperty>();
                game.UnitController.SelectedAction = null;
            }
        }