public void Visit(MoveMission mission) { if (this.game.States.Stars.Contains(mission.Destination)) { this.remainingMissions.AddLast(mission); } }
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; } }
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); }
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)); }
void IMissionVisitor.Visit(MoveMission mission) { this.destination = mission.Destination.Position; }
void IMissionVisitor.Visit(MoveMission mission) { //no operation }