Пример #1
0
        public void AddInstance(GameDatabase gamedb, AssetDatabase assetdb, int?targetSystem = null)
        {
            Random safeRandom = App.GetSafeRandom();
            List <KeyValuePair <StarSystemInfo, Vector3> > outlyingStars = EncounterTools.GetOutlyingStars(gamedb);
            StarSystemInfo starSystemInfo;

            if (targetSystem.HasValue)
            {
                starSystemInfo = gamedb.GetStarSystemInfo(targetSystem.Value);
            }
            else
            {
                int count = outlyingStars.Count / 3;
                if (count <= 0)
                {
                    return;
                }
                List <KeyValuePair <StarSystemInfo, Vector3> > range = outlyingStars.GetRange(0, count);
                starSystemInfo = safeRandom.Choose <KeyValuePair <StarSystemInfo, Vector3> >((IList <KeyValuePair <StarSystemInfo, Vector3> >)range).Key;
            }
            gamedb.InsertIncomingGM(starSystemInfo.ID, EasterEgg.GM_SYSTEM_KILLER, gamedb.GetTurnCount() + 1);
            foreach (PlayerInfo playerInfo in gamedb.GetStandardPlayerInfos().ToList <PlayerInfo>())
            {
                if (gamedb.GetStratModifier <int>(StratModifiers.GrandMenaceWarningTime, playerInfo.ID) > 0)
                {
                    gamedb.InsertTurnEvent(new TurnEvent()
                    {
                        EventType    = TurnEventType.EV_INCOMING_SYSTEMKILLER,
                        EventMessage = TurnEventMessage.EM_INCOMING_SYSTEMKILLER,
                        PlayerID     = playerInfo.ID,
                        TurnNumber   = gamedb.GetTurnCount()
                    });
                }
            }
        }
Пример #2
0
        public void AddInstance(GameDatabase gamedb, AssetDatabase assetdb, int?targetSystem = null)
        {
            Random safeRandom = App.GetSafeRandom();
            int    id;

            if (!targetSystem.HasValue)
            {
                List <KeyValuePair <StarSystemInfo, Vector3> > list  = EncounterTools.GetOutlyingStars(gamedb).ToList <KeyValuePair <StarSystemInfo, Vector3> >();
                List <KeyValuePair <StarSystemInfo, Vector3> > range = list.GetRange(0, (int)Math.Ceiling((double)list.Count / 3.0));
                if (range.Count == 0)
                {
                    return;
                }
                id = safeRandom.Choose <KeyValuePair <StarSystemInfo, Vector3> >((IList <KeyValuePair <StarSystemInfo, Vector3> >)range).Key.ID;
            }
            else
            {
                id = targetSystem.Value;
            }
            gamedb.InsertIncomingGM(id, EasterEgg.GM_LOCUST_SWARM, gamedb.GetTurnCount() + 1);
            foreach (PlayerInfo playerInfo in gamedb.GetStandardPlayerInfos().ToList <PlayerInfo>())
            {
                if (gamedb.GetStratModifier <int>(StratModifiers.GrandMenaceWarningTime, playerInfo.ID) > 0)
                {
                    gamedb.InsertTurnEvent(new TurnEvent()
                    {
                        EventType    = TurnEventType.EV_INCOMING_LOCUST,
                        EventMessage = TurnEventMessage.EM_INCOMING_LOCUST,
                        PlayerID     = playerInfo.ID,
                        TurnNumber   = gamedb.GetTurnCount()
                    });
                }
            }
        }
Пример #3
0
        public static VonNeumann InitializeEncounter(
            GameDatabase gamedb,
            AssetDatabase assetdb)
        {
            VonNeumann vonNeumann = new VonNeumann();

            vonNeumann.PlayerId = gamedb.InsertPlayer("Von Neumann", "vonneumann", new int?(), assetdb.RandomEncounterPrimaryColor, new Vector3(0.0f), "", "\\base\\factions\\vonneumann\\avatars\\Vonneumann_Avatar.tga", 0.0, 0, false, false, false, 0, AIDifficulty.Normal);
            foreach (KeyValuePair <VonNeumann.VonNeumannShipDesigns, VonNeumann.VonNeumannDesignInfo> keyValuePair in VonNeumann.StaticShipDesigns.ToList <KeyValuePair <VonNeumann.VonNeumannShipDesigns, VonNeumann.VonNeumannDesignInfo> >())
            {
                DesignInfo design = new DesignInfo(vonNeumann.PlayerId, keyValuePair.Key.ToString(), new string[1]
                {
                    string.Format("factions\\{0}\\sections\\{1}", (object)"vonneumann", (object)keyValuePair.Value.AssetName)
                });
                DesignLab.SummarizeDesign(assetdb, gamedb, design);
                VonNeumann.StaticShipDesigns[keyValuePair.Key] = new VonNeumann.VonNeumannDesignInfo()
                {
                    DesignId  = gamedb.InsertDesignByDesignInfo(design),
                    AssetName = keyValuePair.Value.AssetName
                };
            }
            vonNeumann._outlyingStars = EncounterTools.GetOutlyingStars(gamedb);
            return(vonNeumann);
        }