public PlanetHolder(Planet planet, Fleets fleetList) { thisPlanet = planet; thisPlanetFleets = fleetList; TurnsCount = PlanetWars.GetFarestFleetDistance(thisPlanetFleets); ownerSwitches = new List<PlanetOwnerSwitch>(); }
// Constructs a PlanetWars object instance, given a string containing a // description of a game state. public PlanetWars(string gameStatestring) { planets = new List<Planet>(); fleets = new Fleets(); ParseGameState(gameStatestring); //planets.Sort(new Comparer(this).Coordinates); Planets allPlanets = Planets(); Router.Init(allPlanets); planetHolders = new PlanetHolders(allPlanets.Count); foreach (Planet planet in allPlanets) { PlanetHolder planetHolder = new PlanetHolder(planet, FleetsGoingToPlanet(Fleets(), planet)); planetHolders.Add(planetHolder); } //FillMyPlanetsFrontLevel(); }
private static void CalcFleetsOnPlanet(Planet planetInFuture, Fleets thisTurnFleets) { // First is ownerID, second is number of ships List<Pair<int, int>> ships = new List<Pair<int, int>>(); if (thisTurnFleets.Count <= 0) return; const int owners = 2; for (int id = 1; id <= owners; ++id) { Fleets ownerFleets = PlanetWars.FleetsWithGivenOwner(thisTurnFleets, id); Pair<int, int> ownerShips = new Pair<int, int>(id, 0); // Add up fleets with the same owner foreach (Fleet ownerFleet in ownerFleets) { ownerShips.Second += ownerFleet.NumShips(); } // Add the ships from the planet to the corresponding fleet if (planetInFuture.Owner() == id) { ownerShips.Second += planetInFuture.NumShips(); } ships.Add(ownerShips); } // If the planet was neutral, it has it's own fleet if (planetInFuture.Owner() == 0) { ships.Add(new Pair<int, int>(0, planetInFuture.NumShips())); } BattleForPlanet(planetInFuture, ships); }
internal static int GetFarestFleetDistance(Fleets fleetList) { return GetLimitFleetDistance(fleetList, 1); }
internal static int GetClosestFleetDistance(Fleets fleetList) { return GetLimitFleetDistance(fleetList, -1); }
public int GetFleetsShipNumFarerThan(Fleets fleetList, int treshold) { return GetFleetsShipNumWithCondition(fleetList, treshold, 1); }
public int GetFleetsShipNum(Fleets fleetList) { return GetFleetsShipNumCloserThan(fleetList, 0); }
public Fleets FleetsGoingToPlanet(Fleets fleetList, Planet planet) { Fleets attackingFleets = new Fleets(); foreach (Fleet fleet in fleetList) { if (fleet.DestinationPlanet() == planet.PlanetID()) { attackingFleets.Add(fleet); } } return attackingFleets; }
public static Fleets FleetsWithGivenOwner(Fleets fleetList, int ownerID) { if (ownerID == -1) { return fleetList; } Fleets selectedFleets = new Fleets(); foreach (Fleet fleet in fleetList) { if (fleet.Owner() == ownerID) { selectedFleets.Add(fleet); } } return selectedFleets; }
public Fleets GetThisTurnFleets(int turn, IEnumerable<Fleet> thisPlanetFleets) { Fleets thisTurnFleets = new Fleets(); foreach (Fleet fleet in thisPlanetFleets) { if (fleet.TurnsRemaining() == turn) { thisTurnFleets.Add(fleet); } } return thisTurnFleets; }
// Return a list of all the fleets owned by enemy players. public Fleets EnemyFleets() { Fleets r = new Fleets(); foreach (Fleet f in fleets) { if (f.Owner() != 1) r.Add(f); } return r; }
// Return a list of all the fleets. public Fleets Fleets() { Fleets r = new Fleets(); foreach (Fleet f in fleets) r.Add(f); return r; }
public Fleets GetFleetsCloserThan(Fleets fleetList, int treshold) { Fleets closerFleets = new Fleets(); foreach (Fleet fleet in fleetList) { if (fleet.TurnsRemaining() <= treshold) closerFleets.Add(fleet); } return closerFleets; }