Beispiel #1
0
        public static ScriptModules New(
            Random random,
            GameDatabase db,
            AssetDatabase assetdb,
            GameSession game,
            NamesPool namesPool,
            GameSetup gameSetup)
        {
            ScriptModules scriptModules = new ScriptModules();

            scriptModules.VonNeumann      = VonNeumann.InitializeEncounter(db, assetdb);
            scriptModules.Swarmers        = Swarmers.InitializeEncounter(db, assetdb);
            scriptModules.Gardeners       = Gardeners.InitializeEncounter(db, assetdb);
            scriptModules.AsteroidMonitor = AsteroidMonitor.InitializeEncounter(db, assetdb);
            scriptModules.MorrigiRelic    = MorrigiRelic.InitializeEncounter(db, assetdb);
            scriptModules.Slaver          = Slaver.InitializeEncounter(db, assetdb);
            scriptModules.Pirates         = Pirates.InitializeEncounter(db, assetdb);
            scriptModules.Spectre         = Spectre.InitializeEncounter(db, assetdb);
            scriptModules.GhostShip       = GhostShip.InitializeEncounter(db, assetdb);
            scriptModules.MeteorShower    = MeteorShower.InitializeEncounter(db, assetdb);
            scriptModules.SystemKiller    = SystemKiller.InitializeEncounter(db, assetdb);
            scriptModules.Locust          = Locust.InitializeEncounter(db, assetdb);
            scriptModules.Comet           = Comet.InitializeEncounter(db, assetdb);
            if (db.HasEndOfFleshExpansion())
            {
                scriptModules.NeutronStar = NeutronStar.InitializeEncounter(db, assetdb);
                scriptModules.SuperNova   = SuperNova.InitializeEncounter();
            }
            scriptModules.AddEasterEggs(random, db, assetdb, game, namesPool, gameSetup);
            return(scriptModules);
        }
Beispiel #2
0
    public void SetQuestion()
    {
        //izaberi na koje dugme ce se ispisati tačan odgovor
        idx_for_correct_button = Random.Range(0, 3);

        //izaberi poznatu licnosti i namesti novu sliku
        int celeb_idx = TakeRandomFromImagePool(ImagePool);

        image_slot.sprite = celebrity_images [celeb_idx];

        //ispisi tacan odgovor na odgovarajuce dugme
        Text bt_text = button [idx_for_correct_button].GetComponentInChildren <Text> ();

        bt_text.text = celebrity_images [celeb_idx].name.Substring(3);


        //napravi celeb instance
        string type = celebrity_images [celeb_idx].name.Substring(0, 2);

        CreateCeleb(type);

        //oduzmi izabranu licnost iz names pool-a da ne bi upalo na dva dugmeta isto ime
        NamesPool.Remove(celebrity_images [celeb_idx].name.Substring(3));


        //ispisi netacne odgovore
        for (int i = 0; i < button.Length; i++)
        {
            if (i != idx_for_correct_button)
            {
                button [i].GetComponentInChildren <Text> ().text = TakeRandomFromNamesPool(NamesPool);
            }
        }
    }
Beispiel #3
0
 internal void AssignEmptySystemNames(Random random, NamesPool namesPool)
 {
     foreach (Kerberos.Sots.StarSystem starSystem in this.Objects.OfType <Kerberos.Sots.StarSystem>())
     {
         if (string.IsNullOrWhiteSpace(starSystem.DisplayName) || starSystem.DisplayName.ToLower() == "random system")
         {
             starSystem.DisplayName = namesPool.GetSystemName();
         }
         List <IStellarEntity> list1 = starSystem.GetPlanets().ToList <IStellarEntity>();
         list1.Sort(new Comparison <IStellarEntity>(LegacyStarMap.CompareByOrbitNumber));
         int num1 = 0;
         foreach (IStellarEntity planet in list1)
         {
             ++num1;
             if (LegacyStarMap.IsRandomOrbitName(planet.Params))
             {
                 planet.Params.Name = string.Format("{0} {1}", (object)starSystem.DisplayName, (object)num1);
             }
             List <IStellarEntity> list2 = starSystem.GetMoons(planet).ToList <IStellarEntity>();
             list2.Sort(new Comparison <IStellarEntity>(LegacyStarMap.CompareByOrbitNumber));
             int num2 = 0;
             foreach (IStellarEntity stellarEntity in list2.Where <IStellarEntity>((Func <IStellarEntity, bool>)(x => LegacyStarMap.IsRandomOrbitName(x.Params))))
             {
                 stellarEntity.Params.Name = string.Format("{0}{1}", (object)planet.Params.Name, (object)(char)(65 + num2));
                 ++num2;
             }
         }
         List <IStellarEntity> list3 = starSystem.GetAsteroidBelts().ToList <IStellarEntity>();
         list3.Sort(new Comparison <IStellarEntity>(LegacyStarMap.CompareByOrbitNumber));
         int num3 = 0;
         foreach (IStellarEntity stellarEntity in list3)
         {
             ++num3;
             if (LegacyStarMap.IsRandomOrbitName(stellarEntity.Params))
             {
                 stellarEntity.Params.Name = string.Format("{0} " + App.Localize("@UI_BELT_NAME_MOD") + " {1}", (object)starSystem.DisplayName, (object)num3);
             }
         }
     }
 }
Beispiel #4
0
        public void AddInstance(GameDatabase gamedb, AssetDatabase assetdb, NamesPool namesPool)
        {
            if (this.NumInstances >= VonNeumann.MaxVonNeumanns)
            {
                return;
            }
            int val1 = this._outlyingStars.Count <KeyValuePair <StarSystemInfo, Vector3> >();

            if (val1 == 0)
            {
                return;
            }
            Random safeRandom = App.GetSafeRandom();
            int    val2       = 5;
            float  num1       = 5f;
            KeyValuePair <StarSystemInfo, Vector3> outlyingStar = this._outlyingStars[safeRandom.Next(Math.Min(val1, val2))];

            this._outlyingStars.Remove(outlyingStar);
            Vector3 origin = outlyingStar.Key.Origin + Vector3.Normalize(outlyingStar.Value) * num1;

            App.Log.Trace(string.Format("Found von neumann homeworld target - Picked System = {0}   Target Coords = {1}", (object)outlyingStar.Key.Name, (object)origin), "game");
            StellarClass stellarClass = StarHelper.ChooseStellarClass(safeRandom);

            this.HomeWorldSystemId = gamedb.InsertStarSystem(new int?(), namesPool.GetSystemName(), new int?(), stellarClass.ToString(), origin, false, true, new int?());
            gamedb.GetStarSystemInfo(this.HomeWorldSystemId);
            int         num2          = 5;
            float       starOrbitStep = StarSystemVars.Instance.StarOrbitStep;
            float       num3          = StarHelper.CalcRadius(stellarClass.Size) + (float)num2 * ((float)num2 * 0.1f * starOrbitStep);
            float       x             = Ellipse.CalcSemiMinorAxis(num3, 0.0f);
            OrbitalPath path          = new OrbitalPath();

            path.Scale             = new Vector2(x, num3);
            path.InitialAngle      = 0.0f;
            this.HomeWorldPlanetId = gamedb.InsertPlanet(new int?(), this.HomeWorldSystemId, path, "VonNeumonia", "normal", new int?(), 0.0f, 0, 0, 5f);
            PlanetInfo planetInfo = gamedb.GetPlanetInfo(this.HomeWorldPlanetId);

            path              = new OrbitalPath();
            path.Scale        = new Vector2(15f, 15f);
            path.Rotation     = new Vector3(0.0f, 0.0f, 0.0f);
            path.DeltaAngle   = 10f;
            path.InitialAngle = 10f;
            VonNeumannInfo vi = new VonNeumannInfo()
            {
                SystemId             = this.HomeWorldSystemId,
                OrbitalId            = this.HomeWorldPlanetId,
                Resources            = assetdb.GlobalVonNeumannData.StartingResources,
                ConstructionProgress = 0
            };
            float radius = StarSystemVars.Instance.SizeToRadius(planetInfo.Size);

            vi.FleetId = new int?(gamedb.InsertFleet(this.PlayerId, 0, vi.SystemId, vi.SystemId, "Von Neumann NeoBerserker", FleetType.FL_NORMAL));
            float  num4    = radius + 2000f;
            float  num5    = 1000f;
            Matrix matrix1 = gamedb.GetOrbitalTransform(this.HomeWorldPlanetId);

            matrix1 = Matrix.CreateWorld(matrix1.Position, Vector3.Normalize(matrix1.Position), Vector3.UnitY);
            Matrix matrix2 = matrix1;

            matrix2.Position = matrix2.Position + matrix2.Forward * num4 - matrix2.Right * num5;
            for (int index = 0; index < 3; ++index)
            {
                int shipID = gamedb.InsertShip(vi.FleetId.Value, VonNeumann.StaticShipDesigns[VonNeumann.VonNeumannShipDesigns.NeoBerserker].DesignId, null, (ShipParams)0, new int?(), 0);
                gamedb.UpdateShipSystemPosition(shipID, new Matrix?(matrix2));
                matrix2.Position += matrix2.Right * num5;
            }
            Random random     = new Random();
            float  radians1   = (float)((random.CoinToss(0.5) ? -1.0 : 1.0) * 0.785398185253143);
            float  radians2   = random.NextInclusive(0.0f, 6.283185f);
            Matrix rotationY1 = Matrix.CreateRotationY(radians1);
            Matrix rotationY2 = Matrix.CreateRotationY(radians2);
            Matrix world      = Matrix.CreateWorld(rotationY1.Forward * (matrix1.Position.Length * 0.75f), rotationY2.Forward, Vector3.UnitY);

            VonNeumann.VonNeumannShipDesigns index1 = (VonNeumann.VonNeumannShipDesigns)random.NextInclusive(21, 23);
            int shipID1 = gamedb.InsertShip(vi.FleetId.Value, VonNeumann.StaticShipDesigns[index1].DesignId, null, (ShipParams)0, new int?(), 0);

            gamedb.UpdateShipSystemPosition(shipID1, new Matrix?(world));
            world.Position -= world.Right * 1000f;
            int shipID2 = gamedb.InsertShip(vi.FleetId.Value, VonNeumann.StaticShipDesigns[VonNeumann.VonNeumannShipDesigns.Moon].DesignId, null, (ShipParams)0, new int?(), 0);

            gamedb.UpdateShipSystemPosition(shipID2, new Matrix?(world));
            world = Matrix.CreateWorld(world.Position + world.Right * 1000f * 2f, -world.Forward, Vector3.UnitY);
            int shipID3 = gamedb.InsertShip(vi.FleetId.Value, VonNeumann.StaticShipDesigns[VonNeumann.VonNeumannShipDesigns.Moon].DesignId, null, (ShipParams)0, new int?(), 0);

            gamedb.UpdateShipSystemPosition(shipID3, new Matrix?(world));
            gamedb.InsertVonNeumannInfo(vi);
            ++this.NumInstances;
        }
Beispiel #5
0
        private void AddEasterEggs(
            Random random,
            GameDatabase gamedb,
            AssetDatabase assetdb,
            GameSession game,
            NamesPool namesPool,
            GameSetup gameSetup)
        {
            List <StarSystemInfo> list1 = gamedb.GetStarSystemInfos().ToList <StarSystemInfo>();

            foreach (StarSystemInfo starSystemInfo in new List <StarSystemInfo>((IEnumerable <StarSystemInfo>)list1))
            {
                List <OrbitalObjectInfo> list2 = gamedb.GetStarSystemOrbitalObjectInfos(starSystemInfo.ID).ToList <OrbitalObjectInfo>();
                if (list2.Count <OrbitalObjectInfo>() == 0)
                {
                    list1.Remove(starSystemInfo);
                }
                bool flag = false;
                foreach (OrbitalObjectInfo orbitalObjectInfo in list2)
                {
                    if (gamedb.GetColonyInfoForPlanet(orbitalObjectInfo.ID) != null)
                    {
                        flag = true;
                        break;
                    }
                }
                if (flag)
                {
                    list1.Remove(starSystemInfo);
                }
            }
            using (List <StarSystemInfo> .Enumerator enumerator = list1.GetEnumerator())
            {
label_43:
                while (enumerator.MoveNext())
                {
                    StarSystemInfo current = enumerator.Current;
                    foreach (OrbitalObjectInfo orbit in gamedb.GetStarSystemOrbitalObjectInfos(current.ID).ToList <OrbitalObjectInfo>())
                    {
                        PlanetInfo planetInfo = gamedb.GetPlanetInfo(orbit.ID);
                        if (planetInfo != null && !(planetInfo.Type == "gaseous") && (gamedb.GetLargeAsteroidInfo(orbit.ID) == null && gamedb.GetAsteroidBeltInfo(orbit.ID) == null) && random.CoinToss((double)assetdb.RandomEncOddsPerOrbital * ((double)gameSetup._randomEncounterFrequency / 100.0)))
                        {
                            int maxValue = game.GetAvailableEEOdds().Sum <KeyValuePair <EasterEgg, int> >((Func <KeyValuePair <EasterEgg, int>, int>)(x => x.Value));
                            if (maxValue == 0)
                            {
                                return;
                            }
                            int       num1      = random.Next(maxValue);
                            int       num2      = 0;
                            EasterEgg easterEgg = EasterEgg.EE_SWARM;
                            foreach (KeyValuePair <EasterEgg, int> easterEggOdd in assetdb.EasterEggOdds)
                            {
                                num2 += easterEggOdd.Value;
                                if (num2 > num1)
                                {
                                    easterEgg = easterEggOdd.Key;
                                    break;
                                }
                            }
                            App.Log.Warn(string.Format("Spawning {0} at {1}", (object)easterEgg.ToString(), (object)current.ID), nameof(game));
                            switch (easterEgg)
                            {
                            case EasterEgg.EE_SWARM:
                                if (this.Swarmers != null)
                                {
                                    this.Swarmers.AddInstance(gamedb, assetdb, current.ID, orbit.ID);
                                    goto label_43;
                                }
                                else
                                {
                                    goto label_43;
                                }

                            case EasterEgg.EE_ASTEROID_MONITOR:
                                if (this.AsteroidMonitor != null)
                                {
                                    this.AsteroidMonitor.AddInstance(gamedb, assetdb, current.ID, orbit.ID);
                                    goto label_43;
                                }
                                else
                                {
                                    goto label_43;
                                }

                            case EasterEgg.EE_PIRATE_BASE:
                                if (this.Pirates != null)
                                {
                                    this.Pirates.AddInstance(gamedb, assetdb, game, current.ID, orbit.ID);
                                    goto label_43;
                                }
                                else
                                {
                                    goto label_43;
                                }

                            case EasterEgg.EE_VON_NEUMANN:
                                if (this.VonNeumann != null)
                                {
                                    this.VonNeumann.AddInstance(gamedb, assetdb, namesPool);
                                    goto label_43;
                                }
                                else
                                {
                                    goto label_43;
                                }

                            case EasterEgg.EE_GARDENERS:
                                if (this.Gardeners != null)
                                {
                                    this.Gardeners.AddInstance(gamedb, assetdb, current.ID);
                                    goto label_43;
                                }
                                else
                                {
                                    goto label_43;
                                }

                            case EasterEgg.EE_INDEPENDENT:
                                ScriptModules.InsertIndependentSystem(random, current, orbit, gamedb, assetdb);
                                goto label_43;

                            case EasterEgg.EE_MORRIGI_RELIC:
                                if (this.MorrigiRelic != null)
                                {
                                    this.MorrigiRelic.AddInstance(gamedb, assetdb, current.ID, orbit.ID);
                                    goto label_43;
                                }
                                else
                                {
                                    goto label_43;
                                }

                            default:
                                goto label_43;
                            }
                        }
                    }
                }
            }
        }