/** * Initialize the Player techs with the tech store */ public void init(Player player, TechStore techStore) { engines = new List <TechEngine>(); scanners = new List <TechHullComponent>(); shields = new List <TechHullComponent>(); armor = new List <TechHullComponent>(); torpedos = new List <TechHullComponent>(); beamWeapons = new List <TechHullComponent>(); hulls = new List <TechHull>(); starbases = new List <TechHull>(); planetaryScanners = new List <TechPlanetaryScanner>(); defenses = new List <TechDefence>(); techsForCategory = new Dictionary <TechCategory, List <Tech> >(); hullComponents = new List <TechHullComponent>(); bestEngine = addPlayerTechs(player, techStore.getAllEngines(), engines); bestScanner = addPlayerTechs(player, techStore.getAllScanners(), scanners); bestShield = addPlayerTechs(player, techStore.getAllShields(), shields); bestArmor = addPlayerTechs(player, techStore.getAllArmor(), armor); bestTorpedo = addPlayerTechs(player, techStore.getAllTorpedos(), torpedos); bestBeamWeapon = addPlayerTechs(player, techStore.getAllBeamWeapons(), beamWeapons); bestHull = addPlayerTechs(player, techStore.getAllHulls(), hulls); bestStarbase = addPlayerTechs(player, techStore.getAllStarbases(), starbases); bestPlanetaryScanner = addPlayerTechs(player, techStore.getAllPlanetaryScanners(), planetaryScanners); bestDefense = addPlayerTechs(player, techStore.getAllDefenses(), defenses); foreach (TechCategory category in Enum.GetValues(typeof(TechCategory))) { techsForCategory.Add(category, new List <Tech>()); } foreach (Tech tech in techStore.getAll()) { if (player.hasTech(tech)) { List <Tech> t = techsForCategory[tech.getCategory()]; t.Add(tech); if (tech is TechHullComponent) { hullComponents.Add((TechHullComponent)tech); } } } foreach (TechCategory category in Enum.GetValues(typeof(TechCategory))) { techsForCategory[category] = techsForCategory[category].OrderBy(t => t.getRanking()).ToList <Tech>(); } hullComponents = hullComponents.OrderBy(t => t.getRanking()).ToList <TechHullComponent>(); }
/** * Perform scanning for a player */ private void scanPlayer(Player player) { TechPlanetaryScanner planetaryScanner = player.getTechs().getBestPlanetaryScanner(); int planetScanRange = (int)Mathf.Pow(planetaryScanner.getScanRange(), 2); int planetScanRangePen = (int)Mathf.Pow(planetaryScanner.getScanRangePen(), 2); List <Fleet> fleets = new List <Fleet>(); List <Planet> planets = new List <Planet>(); List <Scanner> scanners = new List <Scanner>(); foreach (Fleet fleet in game.getFleets()) { if (fleet.getOwner().getID() == player.getID()) { fleet.discover(player, true); if (fleet.canScan()) { scanners.Add(new Scanner(fleet, (int)Mathf.Pow(fleet.getAggregate().getScanRange(), 2), (int)Mathf.Pow(fleet.getAggregate() .getScanRangePen(), 2))); } } else { fleets.Add(fleet); } } foreach (Planet planet in game.getPlanets()) { if (planet.getOwner() != null && planet.getOwner().getID() == player.getID()) { player.discover(game, planet); if (planet.isScanner()) { scanners.Add(new Scanner(planet, planetScanRange, planetScanRangePen)); } } else { planets.Add(planet); } } foreach (Scanner scanner in scanners) { int index = 0; while (index < planets.Count) { Planet planetToScan = planets[index]; if (scanner.getMapObject().dist(planetToScan) <= scanner.getScanRangePen()) { player.discover(game, planetToScan); foreach (Fleet fleet in planetToScan.getOrbitingFleets()) { Debug.Log("Fleet: " + fleet.getName()); Debug.Log("Fleet Owner: " + fleet.getOwner().getID()); if (fleet.getOwner().getID() != player.getID()) { fleet.discover(player, true); fleets.Remove(fleet); } } planets.RemoveAt(index); index--; } index++; } index = 0; while (index < fleets.Count) { Fleet fleetToScan = fleets[index]; if (scanner.getMapObject().dist(fleetToScan) <= scanner.getScanRangePen()) { fleetToScan.discover(player, true); fleets.RemoveAt(index); index--; } index++; } index = 0; while (index < fleets.Count) { Fleet fleetToScan = fleets[index]; if (scanner.getMapObject().dist(fleetToScan) <= scanner.getScanRange()) { fleetToScan.discover(player, false); fleets.RemoveAt(index); index--; } index++; } } }
public void setBestPlanetaryScanner(TechPlanetaryScanner bestPlanetaryScanner) { this.bestPlanetaryScanner = bestPlanetaryScanner; }