private JDictionary <Planet, int> Destinations(JGraph <string> map, JDictionary <string, Planet> planets, bool includeHostile, bool onlyHostile) { JDictionary <Planet, int> planetDestinations = new JDictionary <Planet, int>(); Planet start; if (Orbiting != null) { start = Orbiting; } else if (NextStop != null) { start = NextStop; } else { return(planetDestinations); } JDictionary <string, int> destinations; if (map.TryReachableVertices(start.ID, out destinations, p => Military.Faction.Relationships[planets[p].Faction.ID] != Relationship.Enemy, includeHostile)) { destinations.Remove(start.ID); foreach (string s in destinations.Keys) { Relationship relationship = Military.Faction.Relationships[planets[s].Faction.ID]; if (!onlyHostile || (onlyHostile && relationship == Relationship.Enemy)) { planetDestinations.Add(planets[s], destinations[s] / (int)(hourlyDistance / Speed)); } } } return(planetDestinations); }
public bool SetDestination(Planet destination, JGraph <string> map, JDictionary <string, Planet> planets) { List <string> path; if (Orbiting != null && map.TryPathTo(Orbiting.ID, destination.ID, out path, p => { return(Military.Faction.Relationships[planets[p].Faction.ID] != Relationship.Enemy); }, true)) { Destination = destination; NextStop = planets[path[1]]; return(true); } return(false); }
// Testing Coverage: 9/11 public Database() { Bodies = new JDictionary <string, Body>(); Characters = new JDictionary <string, Character>(); Fleets = new JDictionary <string, Fleet>(); Militaries = new JDictionary <string, Military>(); Governments = new JDictionary <string, Government>(); Planets = new JDictionary <string, Planet>(); Map = new JGraph <string>(); Player = new Player(); Date = new Date(); }
public bool Move(JGraph <string> map, JDictionary <string, Planet> planets) { if (isStationary) { return(false); } Position = Position.MoveTowards(NextStop.Position, 20); if (Position == NextStop.Position) { Orbiting = NextStop; if (NextStop == Destination) { NextStop = Destination = null; return(true); } SetDestination(Destination, map, planets); return(false); } else { Orbiting = null; return(false); } }
public JDictionary <Planet, int> HostileDestinations(JGraph <string> map, JDictionary <string, Planet> planets) { return(Destinations(map, planets, true, true)); }
public JDictionary <Planet, int> SafeDestinations(JGraph <string> map, JDictionary <string, Planet> planets) { return(Destinations(map, planets, false, false)); }