bool isInStation(GameObject GO, Station.StationType stationType) { foreach (var item in Station.stationOutputList[stationType]) { if (item.name == GO.name) { return(true); } } return(false); }
private int GetNbStationOfType(Universe u, Station.StationType type) { int result = 0; foreach (Station s in u.GetStations()) { if (s.Type == type) { result++; } } return(result); }
private void HardCordedBuildUniverse() { _stations = new Dictionary <int, Station>(); _corporations = new Dictionary <int, Corporation>(); Systems = new Dictionary <int, StarSystem>(); Portals = new List <Portal>(); Ships = new List <Ship>(); //creaction de la corp NPC Corporation npcCorp = new Corporation(-1); _corporations.Add(-1, npcCorp); //creation des systemes for (int i = 0; i < _nbSystemPerMap; i++) { StarSystem sys = new StarSystem(i, this, GetRandomSystemPosition()); sys.Name = "System " + (i + 1); Systems.Add(i, sys); //creation d'une cite OSTTools.Vector3 stationPos = new OSTTools.Vector3(1.0, 1.0, 1.0); Station s = new Station(Station.StationType.City, Systems[i], stationPos, _stations.Count + 1); s.Name = "city " + i; _stations.Add(s.ID, s); Systems[i].Stations.Add(s); } //creation des stations mines for (int i = 0; i < _nbMine; i++) { StarSystem sys = Systems[_random.Next(_nbSystemPerMap)]; Station s = new Station(Station.StationType.Mine, sys, GetRandomStationPosition(), _stations.Count + 1); s.Name = "mine " + i; _stations.Add(s.ID, s); sys.Stations.Add(s); } for (int i = 0; i < _nbIceField; i++) { StarSystem sys = Systems[_random.Next(_nbSystemPerMap)]; Station s = new Station(Station.StationType.IceField, sys, GetRandomStationPosition(), _stations.Count + 1); s.Name = "ice field " + i; _stations.Add(s.ID, s); sys.Stations.Add(s); } Array allTypes = Enum.GetValues(typeof(Station.StationType)); while (_stations.Count < _nbStation) { StarSystem sys = Systems[_random.Next(_nbSystemPerMap)]; Station.StationType type = (Station.StationType)allTypes.GetValue(_random.Next(allTypes.Length - 3) + 3); Station s = new Station(type, sys, GetRandomStationPosition(), _stations.Count + 1); s.Name = type.ToString() + " " + (_stations.Count + 1); _stations.Add(s.ID, s); sys.Stations.Add(s); } //creation des links entre systeme for (int i = 0; i < _nbSystemPerMap; i++) { for (int j = i + 1; j < _nbSystemPerMap; j++) { Station from = Systems[i].Stations[_random.Next(Systems[i].Stations.Count)]; Station to = Systems[j].Stations[_random.Next(Systems[j].Stations.Count)]; Portal p = new Portal(from, to, Portal.PortalType.StarToStar); from.AddGate(p); to.AddGate(p); Portals.Add(p); } //creer les liens internes List <Station> connected = new List <Station>(); foreach (Station s in Systems[i].Stations) { Station closest = null; double bestDist = 0.0; foreach (Station s2 in connected) { if (s2 != s) { double dist = (s2.Position.X - s.Position.X) * (s2.Position.X - s.Position.X) + (s2.Position.Y - s.Position.Y) * (s2.Position.Y - s.Position.Y) + (s2.Position.Z - s.Position.Z) * (s2.Position.Z - s.Position.Z); if (closest == null || dist < bestDist) { bestDist = dist; closest = s2; } } } if (closest != null) { Portal p = new Portal(s, closest, Portal.PortalType.StationToStation); s.AddGate(p); closest.AddGate(p); Portals.Add(p); } connected.Add(s); } } }