public void Visit(MoveMission mission)
 {
     if (this.game.States.Stars.Contains(mission.Destination))
     {
         this.remainingMissions.AddLast(mission);
     }
 }
Example #2
0
        void IMissionVisitor.Visit(MoveMission mission)
        {
            var    playerProc = game.Derivates.Players.Of[fleet.Owner];
            double baseSpeed  = fleet.Ships.Select(x => x.Design).
                                Aggregate(double.MaxValue, (s, x) => Math.Min(playerProc.DesignStats[x].GalaxySpeed, s));

            var speed = baseSpeed;

            if (mission.UsedWormhole != null)
            {
                speed += 0.5;                 //TODO(later) consider making moddable
            }
            this.movementDirection = mission.Destination.Position - fleet.Position;
            var distance = this.movementDirection.Magnitude();

            if (distance <= speed * (1 - time))
            {
                this.newPosition = mission.Destination.Position;

                fleet.Owner.Intelligence.StarFullyVisited(game.States.Stars.At[mission.Destination.Position], game.Turn);
                this.time += distance / speed;

                this.movementSteps.Add(new FleetMovement(
                                           this.fleet,
                                           localFleet(),
                                           this.time,
                                           this.time,
                                           this.movementDirection
                                           ));
            }
            else
            {
                var direction = (mission.Destination.Position - fleet.Position);
                direction.Normalize();

                this.newPosition = fleet.Position + direction * speed;
                unfinishedMissions.AddLast(mission);

                this.movementSteps.Add(new FleetMovement(
                                           this.fleet,
                                           localFleet(),
                                           this.time,
                                           1,
                                           this.movementDirection
                                           ));
                this.time = 1;
            }
        }
        void IMissionVisitor.Visit(MoveMission mission)
        {
            var    playerProc = game.Derivates.Players.Of[fleet.Owner];
            double baseSpeed  = fleet.Ships.Select(x => x.Design).
                                Aggregate(double.MaxValue, (s, x) => Math.Min(playerProc.DesignStats[x].GalaxySpeed, s));

            var speed = mission.UsedWormhole != null?
                        game.Statics.ShipFormulas.WormholeSpeed.Evaluate(new Var("speed", baseSpeed).Get) :
                            baseSpeed;

            this.movementDirection = mission.Destination.Position - fleet.Position;
            var distance = this.movementDirection.Length;

            if (distance <= speed * (1 - time))
            {
                this.newPosition = mission.Destination.Position;

                fleet.Owner.Intelligence.StarFullyVisited(game.States.Stars.At[mission.Destination.Position], game.Turn);
                this.time += distance / speed;

                this.movementSteps.Add(new FleetMovement(
                                           this.fleet,
                                           localFleet(),
                                           this.time,
                                           this.time,
                                           this.movementDirection
                                           ));
            }
            else
            {
                var direction = (mission.Destination.Position - fleet.Position).Unit;

                this.newPosition = fleet.Position + direction * speed;
                unfinishedMissions.AddLast(mission);

                this.movementSteps.Add(new FleetMovement(
                                           this.fleet,
                                           localFleet(),
                                           this.time,
                                           1,
                                           this.movementDirection
                                           ));
                this.time = 1;
            }
        }
Example #4
0
        void IMissionVisitor.Visit(MoveMission mission)
        {
            var speed = mission.UsedWormhole != null ? this.laneSpeed : this.voidSpeed;

            this.movementDirection = mission.Destination.Position - fleet.Position;
            var distance = this.movementDirection.Length;

            if (distance <= speed * (1 - time))
            {
                this.newPosition = mission.Destination.Position;

                fleet.Owner.Intelligence.StarFullyVisited(game.States.Stars.At[mission.Destination.Position], game.Turn);
                this.time += distance / speed;

                this.movementSteps.Add(new FleetMovement(
                                           this.fleet,
                                           localFleet(),
                                           this.time,
                                           this.time,
                                           this.movementDirection
                                           ));
            }
            else
            {
                var direction = (mission.Destination.Position - fleet.Position).Unit;

                this.newPosition = fleet.Position + direction * speed;
                unfinishedMissions.AddLast(mission);

                this.movementSteps.Add(new FleetMovement(
                                           this.fleet,
                                           localFleet(),
                                           this.time,
                                           1,
                                           this.movementDirection
                                           ));
                this.time = 1;
            }
        }
 public void Visit(MoveMission mission)
 {
     this.remainingMissions.AddLast(mission);
 }
Example #6
0
 public void Visit(MoveMission mission)
 {
     waypoints.Add(new WaypointInfo(mission.Destination.Position, mission.UsedWormhole != null));
 }
 public void Visit(MoveMission mission)
 {
     //TODO(v0.8) hide waypoints for foreing fleets
     waypoints.Add(new WaypointInfo(mission.Destination, mission.UsedWormhole));
 }
Example #8
0
 void IMissionVisitor.Visit(MoveMission mission)
 {
     this.destination = mission.Destination.Position;
 }
 void IMissionVisitor.Visit(MoveMission mission)
 {
     //no operation
 }