Пример #1
0
 bool isInStation(GameObject GO, Station.StationType stationType)
 {
     foreach (var item in Station.stationOutputList[stationType])
     {
         if (item.name == GO.name)
         {
             return(true);
         }
     }
     return(false);
 }
Пример #2
0
        private int GetNbStationOfType(Universe u, Station.StationType type)
        {
            int result = 0;

            foreach (Station s in u.GetStations())
            {
                if (s.Type == type)
                {
                    result++;
                }
            }
            return(result);
        }
Пример #3
0
        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);
                }
            }
        }