Example #1
0
 public static void SyncFleetAndPlanetListWidget(
     GameSession game,
     string panelName,
     int systemId,
     bool show = true)
 {
     if (systemId == 0)
     {
         game.UI.SetVisible(panelName, false);
     }
     else
     {
         bool               flag1 = game.GameDatabase.IsSurveyed(game.LocalPlayer.ID, systemId);
         List <FleetInfo>   list1 = game.GameDatabase.GetFleetInfoBySystemID(systemId, FleetType.FL_NORMAL | FleetType.FL_RESERVE | FleetType.FL_GATE | FleetType.FL_ACCELERATOR).ToList <FleetInfo>();
         List <StationInfo> list2 = game.GameDatabase.GetStationForSystemAndPlayer(systemId, game.LocalPlayer.ID).ToList <StationInfo>();
         bool               flag2 = true;
         if (!game.SystemHasPlayerColony(systemId, game.LocalPlayer.ID) && !StarMap.IsInRange(game.GameDatabase, game.LocalPlayer.ID, game.GameDatabase.GetStarSystemInfo(systemId), (Dictionary <int, List <ShipInfo> >)null))
         {
             flag2 = false;
         }
         List <int> list3 = game.GameDatabase.GetStarSystemPlanets(systemId).ToList <int>();
         if (list1.Count == 0 && list2.Count == 0 && !flag1 || !flag2 && !flag1)
         {
             game.UI.SetVisible(panelName, false);
         }
         else
         {
             bool flag3 = FleetUI.ShowFleetListDefault;
             bool flag4 = (list1.Count <FleetInfo>() != 0 && flag2 || list2.Count != 0) && show;
             bool flag5 = list3.Count <int>() != 0 && flag1 && show;
             if (flag3 && !flag4)
             {
                 flag3 = false;
             }
             else if (!flag3 && !flag5)
             {
                 flag3 = true;
             }
             game.UI.SetEnabled("planetsTab", flag5);
             game.UI.SetVisible("partSystemPlanets", flag5 && !flag3);
             game.UI.SetChecked("planetsTab", flag5 && !flag3);
             game.UI.SetEnabled("fleetsTab", flag4);
             game.UI.SetChecked("fleetsTab", flag4 && flag3);
             game.UI.SetVisible("partSystemFleets", flag4 && flag3);
             game.UI.SetVisible(panelName, show);
             FleetUI.SyncPlanetListControl(game, "partSystemPlanets", systemId, (IEnumerable <int>)list3);
         }
     }
 }
Example #2
0
        public void UpdateTurn(GameSession game, int id)
        {
            Random      safeRandom = App.GetSafeRandom();
            ShipInfo    shipInfo   = (ShipInfo)null;
            SwarmerInfo si         = game.GameDatabase.GetSwarmerInfo(id);

            if (si == null)
            {
                game.GameDatabase.RemoveEncounter(id);
            }
            else
            {
                if (si.QueenFleetId.HasValue)
                {
                    FleetInfo fleetInfo = game.GameDatabase.GetFleetInfo(si.QueenFleetId.Value);
                    if (fleetInfo == null)
                    {
                        si.QueenFleetId   = new int?();
                        si.SpawnHiveDelay = 1;
                    }
                    else if (fleetInfo.SystemID != 0 && fleetInfo.SystemID != si.SystemId)
                    {
                        if (si.SpawnHiveDelay <= 0)
                        {
                            int id1 = game.GameDatabase.GetStarSystemOrbitalObjectInfos(fleetInfo.SystemID).ToList <OrbitalObjectInfo>().First <OrbitalObjectInfo>((Func <OrbitalObjectInfo, bool>)(x => game.GameDatabase.GetAsteroidBeltInfo(x.ID) != null)).ID;
                            this.AddInstance(game.GameDatabase, game.AssetDatabase, fleetInfo.SystemID, id1);
                            game.GameDatabase.RemoveFleet(fleetInfo.ID);
                            si.QueenFleetId   = new int?();
                            si.SpawnHiveDelay = 1;
                            foreach (int playerid in game.GameDatabase.GetStandardPlayerIDs().ToList <int>())
                            {
                                if (StarMap.IsInRange(game.GameDatabase, playerid, fleetInfo.SystemID))
                                {
                                    game.GameDatabase.InsertTurnEvent(new TurnEvent()
                                    {
                                        EventType    = TurnEventType.EV_SWARM_INFESTATION,
                                        EventMessage = TurnEventMessage.EM_SWARM_INFESTATION,
                                        PlayerID     = playerid,
                                        SystemID     = fleetInfo.SystemID,
                                        TurnNumber   = game.GameDatabase.GetTurnCount()
                                    });
                                }
                            }
                        }
                        else
                        {
                            --si.SpawnHiveDelay;
                        }
                    }
                }
                if (si.HiveFleetId.HasValue)
                {
                    if (game.GameDatabase.GetFleetInfo(si.HiveFleetId.Value) == null)
                    {
                        si.HiveFleetId = new int?();
                    }
                    else
                    {
                        shipInfo = game.GameDatabase.GetShipInfoByFleetID(si.HiveFleetId.Value, true).ToList <ShipInfo>().FirstOrDefault <ShipInfo>((Func <ShipInfo, bool>)(x => x.DesignInfo.ID == this._larvalQueenDesignId));
                        int num = si.GrowthStage - game.AssetDatabase.GlobalSwarmerData.GrowthRateLarvaSpawn;
                        if (num > 0 && !si.QueenFleetId.HasValue && (shipInfo == null && safeRandom.CoinToss(Math.Max(0, num * 10))))
                        {
                            game.GameDatabase.InsertShip(si.HiveFleetId.Value, this._larvalQueenDesignId, "Swarm Larval Queen", (ShipParams)0, new int?(), 0);
                            si.GrowthStage = 0;
                        }
                    }
                }
                if (si.GrowthStage > game.AssetDatabase.GlobalSwarmerData.GrowthRateQueenSpawn && shipInfo != null)
                {
                    List <StarSystemInfo> list1 = game.GameDatabase.GetStarSystemInfos().ToList <StarSystemInfo>();
                    list1.RemoveAll((Predicate <StarSystemInfo>)(x => !game.GameDatabase.GetStarSystemOrbitalObjectInfos(x.ID).Any <OrbitalObjectInfo>((Func <OrbitalObjectInfo, bool>)(y => game.GameDatabase.GetAsteroidBeltInfo(y.ID) != null))));
                    foreach (SwarmerInfo swarmerInfo in game.GameDatabase.GetSwarmerInfos().ToList <SwarmerInfo>())
                    {
                        SwarmerInfo swarmer     = swarmerInfo;
                        int         targetID    = 0;
                        int         fleetSystem = 0;
                        if (swarmer.QueenFleetId.HasValue)
                        {
                            MissionInfo missionByFleetId = game.GameDatabase.GetMissionByFleetID(swarmer.QueenFleetId.Value);
                            if (missionByFleetId != null)
                            {
                                targetID = missionByFleetId.TargetSystemID;
                            }
                            FleetInfo fleetInfo = game.GameDatabase.GetFleetInfo(swarmer.QueenFleetId.Value);
                            if (fleetInfo != null)
                            {
                                fleetSystem = fleetInfo.SystemID;
                            }
                        }
                        list1.RemoveAll((Predicate <StarSystemInfo>)(x =>
                        {
                            if (x.ID != swarmer.SystemId && x.ID != targetID)
                            {
                                return(x.ID == fleetSystem);
                            }
                            return(true);
                        }));
                    }
                    List <StarSystemInfo> list2 = list1.OrderBy <StarSystemInfo, float>((Func <StarSystemInfo, float>)(x => (game.GameDatabase.GetStarSystemOrigin(si.SystemId) - x.Origin).Length)).ToList <StarSystemInfo>();
                    if (list2.Count > 0)
                    {
                        StarSystemInfo starSystemInfo = list2[safeRandom.Next(0, Math.Min(Math.Max(0, list2.Count - 1), 3))];
                        si.QueenFleetId = new int?(game.GameDatabase.InsertFleet(this.PlayerId, 0, si.SystemId, si.SystemId, "Swarm Queen", FleetType.FL_NORMAL));
                        game.GameDatabase.RemoveShip(shipInfo.ID);
                        game.GameDatabase.InsertShip(si.QueenFleetId.Value, this._swarmQueenDesignId, "Swarm Queen", (ShipParams)0, new int?(), 0);
                        int missionID = game.GameDatabase.InsertMission(si.QueenFleetId.Value, MissionType.STRIKE, starSystemInfo.ID, 0, 0, 0, true, new int?());
                        game.GameDatabase.InsertWaypoint(missionID, WaypointType.TravelTo, new int?(starSystemInfo.ID));
                    }
                    si.GrowthStage = 0;
                }
                if (si.HiveFleetId.HasValue && !si.QueenFleetId.HasValue)
                {
                    ++si.GrowthStage;
                }
                if (!si.HiveFleetId.HasValue && !si.QueenFleetId.HasValue)
                {
                    game.GameDatabase.RemoveEncounter(si.Id);
                }
                else
                {
                    game.GameDatabase.UpdateSwarmerInfo(si);
                }
            }
        }
Example #3
0
        internal static void Sync(App game, int systemId, string mapPanelId, bool isClickable)
        {
            bool flag = StarMap.IsInRange(game.Game.GameDatabase, game.LocalPlayer.ID, game.GameDatabase.GetStarSystemInfo(systemId), (Dictionary <int, List <ShipInfo> >)null);

            StarSystemMapUI.ResetMap(game, mapPanelId);
            if (systemId == 0)
            {
                return;
            }
            float        time         = 0.0f;
            GameDatabase gameDatabase = game.GameDatabase;
            IEnumerable <OrbitalObjectInfo> orbitalObjectInfos = gameDatabase.GetStarSystemOrbitalObjectInfos(systemId);
            StarSystemInfo starSystemInfo = gameDatabase.GetStarSystemInfo(systemId);
            StellarClass   stellarClass   = StellarClass.Parse(starSystemInfo.StellarClass);

            if (starSystemInfo.IsDeepSpace)
            {
                return;
            }
            float num1 = StarHelper.CalcRadius(StellarSize.Ia);
            float num2 = StarHelper.CalcRadius(StellarSize.VII);
            float num3 = ScalarExtensions.Lerp(0.67f, 3f, (float)(((double)StarHelper.CalcRadius(stellarClass.Size) - (double)num2) / ((double)num1 - (double)num2)));

            StarSystemMapUI.IconParams iconParams1 = StarSystemMapUI.IconParams.Default;
            iconParams1.ObjectID  = StarSystemDetailsUI.StarItemID;
            iconParams1.Text      = starSystemInfo.Name;
            iconParams1.Icon      = "sysmap_star";
            iconParams1.X         = 0.0f;
            iconParams1.Y         = 0.0f;
            iconParams1.Scale     = num3;
            iconParams1.Color     = StarHelper.CalcIconColor(stellarClass);
            iconParams1.Clickable = isClickable;
            StarSystemMapUI.AddMapIcon(game, mapPanelId, iconParams1);
            foreach (AsteroidBeltInfo asteroidBeltInfo in gameDatabase.GetStarSystemAsteroidBeltInfos(systemId))
            {
                AsteroidBeltInfo           asteroidBelt      = asteroidBeltInfo;
                OrbitalObjectInfo          orbitalObjectInfo = orbitalObjectInfos.First <OrbitalObjectInfo>((Func <OrbitalObjectInfo, bool>)(x => x.ID == asteroidBelt.ID));
                StarSystemMapUI.IconParams iconParams2       = new StarSystemMapUI.IconParams();
                iconParams2.SetPos(game, orbitalObjectInfos, time, orbitalObjectInfo.ID);
                iconParams2.ObjectID  = orbitalObjectInfo.ID;
                iconParams2.Icon      = "sysmap_roiddust";
                iconParams2.Scale     = 0.85f;
                iconParams2.Color     = Vector4.One;
                iconParams2.Text      = orbitalObjectInfo.Name;
                iconParams2.Clickable = false;
                StarSystemMapUI.AddMapIcon(game, mapPanelId, iconParams2);
            }
            PlanetInfo[] systemPlanetInfos = gameDatabase.GetStarSystemPlanetInfos(systemId);
            foreach (OrbitalObjectInfo orbitalObjectInfo in orbitalObjectInfos.Where <OrbitalObjectInfo>((Func <OrbitalObjectInfo, bool>)(x => !x.ParentID.HasValue)))
            {
                OrbitalObjectInfo orbital    = orbitalObjectInfo;
                PlanetInfo        planetInfo = ((IEnumerable <PlanetInfo>)systemPlanetInfos).FirstOrDefault <PlanetInfo>((Func <PlanetInfo, bool>)(x => x.ID == orbital.ID));
                if (planetInfo != null)
                {
                    string str = StarSystemMapUI.SelectIcon(planetInfo, orbitalObjectInfos, (IEnumerable <PlanetInfo>)systemPlanetInfos);
                    if (string.IsNullOrEmpty(str))
                    {
                        App.Log.Trace(string.Format("Planet {0} does not have an icon to represent it in the mini system map.", (object)orbital.Name), "gui");
                    }
                    else
                    {
                        AIColonyIntel colonyIntelForPlanet = game.GameDatabase.GetColonyIntelForPlanet(game.LocalPlayer.ID, planetInfo.ID);
                        if (colonyIntelForPlanet != null && flag)
                        {
                            Vector3 primaryColor = game.GameDatabase.GetPlayerInfo(colonyIntelForPlanet.OwningPlayerID).PrimaryColor;
                            Vector4 vector4      = new Vector4(primaryColor.X, primaryColor.Y, primaryColor.Z, 1f);
                            StarSystemMapUI.IconParams iconParams2 = StarSystemMapUI.IconParams.Default;
                            iconParams2.SetPos(game, orbitalObjectInfos, time, planetInfo.ID);
                            iconParams2.ObjectID  = 0;
                            iconParams2.Icon      = "sysmap_ownerring";
                            iconParams2.Scale     = 0.85f;
                            iconParams2.Color     = vector4;
                            iconParams2.Text      = string.Empty;
                            iconParams2.Clickable = false;
                            StarSystemMapUI.AddMapIcon(game, mapPanelId, iconParams2);
                        }
                        StarSystemMapUI.IconParams iconParams3 = new StarSystemMapUI.IconParams();
                        iconParams3.SetPos(game, orbitalObjectInfos, time, planetInfo.ID);
                        iconParams3.ObjectID  = planetInfo.ID;
                        iconParams3.Icon      = str;
                        iconParams3.Scale     = 0.85f;
                        iconParams3.Color     = Vector4.One;
                        iconParams3.Text      = orbital.Name;
                        iconParams3.Clickable = isClickable;
                        StarSystemMapUI.AddMapIcon(game, mapPanelId, iconParams3);
                    }
                }
            }
        }
Example #4
0
        private void SyncSystemSelect()
        {
            this._app.UI.SetText("lblHeader", string.Format(App.Localize(RequestTypeDialog.RequestTypeLocMap[this._type]), (object)this._app.AssetDatabase.GetDiplomaticRequestPointCost(this._type)));
            this._app.UI.SetEnabled("btnFinishRequest", true);
            List <StarSystemInfo> list1 = this._app.GameDatabase.GetStarSystemInfos().ToList <StarSystemInfo>();
            List <int>            colonizedSystemIds;

            switch (this._type)
            {
            case RequestType.SystemInfoRequest:
                List <StarSystemInfo> list2 = list1.ToList <StarSystemInfo>();
                foreach (StarSystemInfo starSystemInfo in list2)
                {
                    if (starSystemInfo.IsVisible)
                    {
                        this._app.UI.AddItem("lstItems", string.Empty, starSystemInfo.ID, string.Empty);
                        string itemGlobalId = this._app.UI.GetItemGlobalID("lstItems", string.Empty, starSystemInfo.ID, string.Empty);
                        this._app.UI.SetText(this._app.UI.Path(itemGlobalId, "lblHeader"), starSystemInfo.Name);
                        this._app.UI.SetText(this._app.UI.Path(itemGlobalId, "lblValue"), "");
                        this._starmap.PostSetProp("ProvincePoolEffect", (object)true, (object)this._starmap.Systems.Reverse[starSystemInfo.ID]);
                    }
                }
                if (list2.Count > 0)
                {
                    this._app.UI.SetSelection("lstItems", list2.First <StarSystemInfo>().ID);
                    break;
                }
                this._app.UI.SetEnabled("btnFinishRequest", false);
                break;

            case RequestType.MilitaryAssistanceRequest:
                List <StarSystemInfo> list3 = list1.Where <StarSystemInfo>((Func <StarSystemInfo, bool>)(x => this._app.GameDatabase.IsSurveyed(this._app.LocalPlayer.ID, x.ID))).ToList <StarSystemInfo>();
                foreach (StarSystemInfo starSystemInfo in list3)
                {
                    if (starSystemInfo.IsVisible)
                    {
                        this._app.UI.AddItem("lstItems", string.Empty, starSystemInfo.ID, string.Empty);
                        string itemGlobalId = this._app.UI.GetItemGlobalID("lstItems", string.Empty, starSystemInfo.ID, string.Empty);
                        this._app.UI.SetText(this._app.UI.Path(itemGlobalId, "lblHeader"), starSystemInfo.Name);
                        this._app.UI.SetText(this._app.UI.Path(itemGlobalId, "lblValue"), "");
                        this._starmap.PostSetProp("ProvincePoolEffect", (object)true, (object)this._starmap.Systems.Reverse[starSystemInfo.ID]);
                    }
                }
                if (list3.Count > 0)
                {
                    this._app.UI.SetSelection("lstItems", list3.First <StarSystemInfo>().ID);
                    break;
                }
                this._app.UI.SetEnabled("btnFinishRequest", false);
                break;

            case RequestType.GatePermissionRequest:
                colonizedSystemIds = this._app.GameDatabase.GetPlayerColonySystemIDs(this._otherPlayer).ToList <int>();
                List <StarSystemInfo> list4 = list1.Where <StarSystemInfo>((Func <StarSystemInfo, bool>)(x =>
                {
                    if (colonizedSystemIds.Contains(x.ID))
                    {
                        return(StarMap.IsInRange(this._app.Game.GameDatabase, this._app.LocalPlayer.ID, x, (Dictionary <int, List <ShipInfo> >)null));
                    }
                    return(false);
                })).ToList <StarSystemInfo>();
                foreach (StarSystemInfo starSystemInfo in list4)
                {
                    if (starSystemInfo.IsVisible)
                    {
                        this._app.UI.AddItem("lstItems", string.Empty, starSystemInfo.ID, string.Empty);
                        string itemGlobalId = this._app.UI.GetItemGlobalID("lstItems", string.Empty, starSystemInfo.ID, string.Empty);
                        this._app.UI.SetText(this._app.UI.Path(itemGlobalId, "lblHeader"), starSystemInfo.Name);
                        this._app.UI.SetText(this._app.UI.Path(itemGlobalId, "lblValue"), "");
                        this._starmap.PostSetProp("ProvincePoolEffect", (object)true, (object)this._starmap.Systems.Reverse[starSystemInfo.ID]);
                    }
                }
                if (list4.Count > 0)
                {
                    this._app.UI.SetSelection("lstItems", list4.First <StarSystemInfo>().ID);
                    break;
                }
                this._app.UI.SetEnabled("btnFinishRequest", false);
                break;

            case RequestType.EstablishEnclaveRequest:
                colonizedSystemIds = this._app.GameDatabase.GetPlayerColonySystemIDs(this._otherPlayer).ToList <int>();
                List <StarSystemInfo> list5 = list1.Where <StarSystemInfo>((Func <StarSystemInfo, bool>)(x =>
                {
                    if (colonizedSystemIds.Contains(x.ID))
                    {
                        return(StarMap.IsInRange(this._app.Game.GameDatabase, this._app.LocalPlayer.ID, x, (Dictionary <int, List <ShipInfo> >)null));
                    }
                    return(false);
                })).ToList <StarSystemInfo>();
                foreach (StarSystemInfo starSystemInfo in list5)
                {
                    if (starSystemInfo.IsVisible)
                    {
                        this._app.UI.AddItem("lstItems", string.Empty, starSystemInfo.ID, string.Empty);
                        string itemGlobalId = this._app.UI.GetItemGlobalID("lstItems", string.Empty, starSystemInfo.ID, string.Empty);
                        this._app.UI.SetText(this._app.UI.Path(itemGlobalId, "lblHeader"), starSystemInfo.Name);
                        this._app.UI.SetText(this._app.UI.Path(itemGlobalId, "lblValue"), "");
                        this._starmap.PostSetProp("ProvincePoolEffect", (object)true, (object)this._starmap.Systems.Reverse[starSystemInfo.ID]);
                    }
                }
                if (list5.Count > 0)
                {
                    this._app.UI.SetSelection("lstItems", list5.First <StarSystemInfo>().ID);
                    break;
                }
                this._app.UI.SetEnabled("btnFinishRequest", false);
                break;
            }
        }
Example #5
0
        public void UpdateTurn(GameSession game, int id)
        {
            SystemKillerInfo si        = game.GameDatabase.GetSystemKillerInfo(id);
            FleetInfo        fleetInfo = si.FleetId.HasValue ? game.GameDatabase.GetFleetInfo(si.FleetId.Value) : (FleetInfo)null;

            if (fleetInfo == null)
            {
                game.GameDatabase.RemoveEncounter(si.Id);
            }
            else
            {
                MissionInfo    missionByFleetId = game.GameDatabase.GetMissionByFleetID(fleetInfo.ID);
                StarSystemInfo systemInfo       = game.GameDatabase.GetStarSystemInfo(fleetInfo.SystemID);
                if (game.GameDatabase.GetMoveOrderInfoByFleetID(fleetInfo.ID) != null)
                {
                    return;
                }
                List <OrbitalObjectInfo> list = game.GameDatabase.GetStarSystemOrbitalObjectInfos(fleetInfo.SystemID).ToList <OrbitalObjectInfo>();
                list.RemoveAll((Predicate <OrbitalObjectInfo>)(x =>
                {
                    if (game.GameDatabase.GetAsteroidBeltInfo(x.ID) == null && game.GameDatabase.GetLargeAsteroidInfo(x.ID) == null)
                    {
                        return(game.GameDatabase.GetStationInfo(x.ID) != null);
                    }
                    return(true);
                }));
                if (list.Any <OrbitalObjectInfo>())
                {
                    if (game.isHostilesAtSystem(this.PlayerId, fleetInfo.SystemID))
                    {
                        return;
                    }
                    OrbitalObjectInfo orbitalObjectInfo = list.OrderBy <OrbitalObjectInfo, float>((Func <OrbitalObjectInfo, float>)(x => x.OrbitalPath.Scale.Length)).First <OrbitalObjectInfo>();
                    game.GameDatabase.InsertTurnEvent(new TurnEvent()
                    {
                        EventType    = TurnEventType.EV_PLANET_DESTROYED,
                        EventMessage = TurnEventMessage.EM_PLANET_DESTROYED,
                        PlayerID     = this.PlayerId,
                        SystemID     = orbitalObjectInfo.StarSystemID,
                        OrbitalID    = orbitalObjectInfo.ID,
                        TurnNumber   = game.GameDatabase.GetTurnCount(),
                        ShowsDialog  = false
                    });
                    game.GameDatabase.DestroyOrbitalObject(game, orbitalObjectInfo.ID);
                }
                else
                {
                    if (missionByFleetId != null)
                    {
                        game.GameDatabase.RemoveMission(missionByFleetId.ID);
                    }
                    List <StarSystemInfo> closestStars = EncounterTools.GetClosestStars(game.GameDatabase, fleetInfo.SystemID);
                    double         maxCos         = Math.Cos(Math.PI / 3.0);
                    StarSystemInfo starSystemInfo = closestStars.FirstOrDefault <StarSystemInfo>((Func <StarSystemInfo, bool>)(x => (double)Vector3.Dot(Vector3.Normalize(si.Target - systemInfo.Origin), Vector3.Normalize(x.Origin - systemInfo.Origin)) > maxCos));
                    if (starSystemInfo == (StarSystemInfo)null)
                    {
                        foreach (int standardPlayerId in game.GameDatabase.GetStandardPlayerIDs())
                        {
                            if (StarMap.IsInRange(game.GameDatabase, standardPlayerId, game.GameDatabase.GetFleetLocation(fleetInfo.ID, false).Coords, 1f, (Dictionary <int, List <ShipInfo> >)null))
                            {
                                game.GameDatabase.InsertTurnEvent(new TurnEvent()
                                {
                                    EventType    = TurnEventType.EV_SYS_KILLER_LEAVING,
                                    EventMessage = TurnEventMessage.EM_SYS_KILLER_LEAVING,
                                    PlayerID     = this.PlayerID,
                                    TurnNumber   = game.GameDatabase.GetTurnCount()
                                });
                            }
                        }
                        game.GameDatabase.RemoveFleet(fleetInfo.ID);
                        game.GameDatabase.RemoveEncounter(si.Id);
                    }
                    else
                    {
                        int missionID = game.GameDatabase.InsertMission(fleetInfo.ID, MissionType.STRIKE, starSystemInfo.ID, 0, 0, 0, false, new int?());
                        game.GameDatabase.InsertWaypoint(missionID, WaypointType.TravelTo, new int?(starSystemInfo.ID));
                        game.GameDatabase.InsertMoveOrder(fleetInfo.ID, 0, game.GameDatabase.GetStarSystemOrigin(fleetInfo.SystemID), starSystemInfo.ID, Vector3.Zero);
                        game.GameDatabase.UpdateFleetLocation(fleetInfo.ID, 0, new int?());
                    }
                    if (systemInfo != (StarSystemInfo)null)
                    {
                        game.GameDatabase.DestroyStarSystem(game, systemInfo.ID);
                    }
                    if (!(game.App.CurrentState is StarMapState))
                    {
                        return;
                    }
                    ((StarMapState)game.App.CurrentState).ClearSelectedObject();
                    ((StarMapState)game.App.CurrentState).RefreshStarmap(StarMapState.StarMapRefreshType.REFRESH_ALL);
                }
            }
        }
Example #6
0
        public void UpdateTurn(GameSession game, int id)
        {
            NeutronStarInfo nsi       = game.GameDatabase.GetNeutronStarInfo(id);
            FleetInfo       fleetInfo = nsi != null?game.GameDatabase.GetFleetInfo(nsi.FleetId) : (FleetInfo)null;

            if (fleetInfo == null)
            {
                game.GameDatabase.RemoveEncounter(id);
            }
            else
            {
                MissionInfo missionByFleetId = game.GameDatabase.GetMissionByFleetID(fleetInfo.ID);
                if (game.GameDatabase.GetMoveOrderInfoByFleetID(fleetInfo.ID) != null)
                {
                    FleetLocation fl = game.GameDatabase.GetFleetLocation(fleetInfo.ID, false);
                    if (!nsi.DeepSpaceSystemId.HasValue || game.GameDatabase.GetStarSystemInfos().Any <StarSystemInfo>((Func <StarSystemInfo, bool>)(x =>
                    {
                        if (x.ID != nsi.DeepSpaceSystemId.Value)
                        {
                            return((double)(game.GameDatabase.GetStarSystemOrigin(x.ID) - fl.Coords).LengthSquared < 9.99999974737875E-05);
                        }
                        return(false);
                    })))
                    {
                        return;
                    }
                    game.GameDatabase.UpdateStarSystemOrigin(nsi.DeepSpaceSystemId.Value, fl.Coords);
                }
                else
                {
                    if (missionByFleetId != null)
                    {
                        game.GameDatabase.RemoveMission(missionByFleetId.ID);
                    }
                    StarSystemInfo starSystemInfo = game.GameDatabase.GetStarSystemInfo(fleetInfo.SystemID);
                    foreach (int standardPlayerId in game.GameDatabase.GetStandardPlayerIDs())
                    {
                        if (StarMap.IsInRange(game.GameDatabase, standardPlayerId, game.GameDatabase.GetFleetLocation(fleetInfo.ID, false).Coords, 1f, (Dictionary <int, List <ShipInfo> >)null))
                        {
                            game.GameDatabase.InsertTurnEvent(new TurnEvent()
                            {
                                EventType    = TurnEventType.EV_NEUTRON_STAR_DESTROYED_SYSTEM,
                                EventMessage = TurnEventMessage.EM_NEUTRON_STAR_DESTROYED_SYSTEM,
                                SystemID     = starSystemInfo.ID,
                                PlayerID     = this.PlayerID,
                                TurnNumber   = game.GameDatabase.GetTurnCount()
                            });
                        }
                    }
                    if (nsi.DeepSpaceSystemId.HasValue)
                    {
                        game.GameDatabase.RemoveFleet(fleetInfo.ID);
                        game.GameDatabase.RemoveEncounter(id);
                        game.GameDatabase.DestroyStarSystem(game, nsi.DeepSpaceSystemId.Value);
                    }
                    if (fleetInfo.SystemID != 0)
                    {
                        game.GameDatabase.DestroyStarSystem(game, starSystemInfo.ID);
                    }
                    if (!(game.App.CurrentState is StarMapState))
                    {
                        return;
                    }
                    ((StarMapState)game.App.CurrentState).ClearSelectedObject();
                    ((StarMapState)game.App.CurrentState).RefreshStarmap(StarMapState.StarMapRefreshType.REFRESH_ALL);
                }
            }
        }
        private void SyncSystemSelect()
        {
            this._app.UI.SetText("lblHeader", string.Format(App.Localize(DemandTypeDialog.DemandTypeLocMap[this._type]), (object)this._app.AssetDatabase.GetDiplomaticDemandPointCost(this._type)));
            this._app.UI.SetEnabled("btnFinishRequest", true);
            List <StarSystemInfo> StarSystems = this._app.GameDatabase.GetStarSystemInfos().ToList <StarSystemInfo>();

            switch (this._type)
            {
            case DemandType.SystemInfoDemand:
                List <StarSystemInfo> list1 = StarSystems.ToList <StarSystemInfo>();
                foreach (StarSystemInfo starSystemInfo in list1)
                {
                    if (starSystemInfo.IsVisible)
                    {
                        this._app.UI.AddItem("lstItems", string.Empty, starSystemInfo.ID, string.Empty);
                        string itemGlobalId = this._app.UI.GetItemGlobalID("lstItems", string.Empty, starSystemInfo.ID, string.Empty);
                        this._app.UI.SetText(this._app.UI.Path(itemGlobalId, "lblHeader"), starSystemInfo.Name);
                        this._app.UI.SetText(this._app.UI.Path(itemGlobalId, "lblValue"), "");
                        this._starmap.PostSetProp("ProvincePoolEffect", (object)true, (object)this._starmap.Systems.Reverse[starSystemInfo.ID]);
                    }
                }
                if (list1.Count > 0)
                {
                    this._app.UI.SetSelection("lstItems", list1.First <StarSystemInfo>().ID);
                    break;
                }
                this._app.UI.SetEnabled("btnFinishRequest", false);
                break;

            case DemandType.WorldDemand:
                List <int>            colonizedSystemIds = this._app.GameDatabase.GetPlayerColonySystemIDs(this._otherPlayer).ToList <int>();
                List <StarSystemInfo> list2 = StarSystems.Where <StarSystemInfo>((Func <StarSystemInfo, bool>)(x =>
                {
                    if (colonizedSystemIds.Contains(x.ID))
                    {
                        return(StarMap.IsInRange(this._app.Game.GameDatabase, this._app.LocalPlayer.ID, x, (Dictionary <int, List <ShipInfo> >)null));
                    }
                    return(false);
                })).ToList <StarSystemInfo>();
                foreach (StarSystemInfo starSystemInfo in list2)
                {
                    if (starSystemInfo.IsVisible)
                    {
                        this._app.UI.AddItem("lstItems", string.Empty, starSystemInfo.ID, string.Empty);
                        string itemGlobalId = this._app.UI.GetItemGlobalID("lstItems", string.Empty, starSystemInfo.ID, string.Empty);
                        this._app.UI.SetText(this._app.UI.Path(itemGlobalId, "lblHeader"), starSystemInfo.Name);
                        this._app.UI.SetText(this._app.UI.Path(itemGlobalId, "lblValue"), "");
                        this._starmap.PostSetProp("ProvincePoolEffect", (object)true, (object)this._starmap.Systems.Reverse[starSystemInfo.ID]);
                    }
                }
                if (list2.Count > 0)
                {
                    this._app.UI.SetSelection("lstItems", list2.First <StarSystemInfo>().ID);
                    break;
                }
                this._app.UI.SetEnabled("btnFinishRequest", false);
                break;

            case DemandType.ProvinceDemand:
                List <ProvinceInfo> list3 = this._app.GameDatabase.GetProvinceInfos().ToList <ProvinceInfo>().Where <ProvinceInfo>((Func <ProvinceInfo, bool>)(x =>
                {
                    if (x.PlayerID == this._otherPlayer)
                    {
                        return(StarMap.IsInRange(this._app.Game.GameDatabase, this._app.LocalPlayer.ID, StarSystems.First <StarSystemInfo>((Func <StarSystemInfo, bool>)(y => y.ID == x.CapitalSystemID)), (Dictionary <int, List <ShipInfo> >)null));
                    }
                    return(false);
                })).ToList <ProvinceInfo>();
                foreach (ProvinceInfo provinceInfo in list3)
                {
                    this._app.UI.AddItem("lstItems", string.Empty, provinceInfo.ID, string.Empty);
                    string itemGlobalId = this._app.UI.GetItemGlobalID("lstItems", string.Empty, provinceInfo.ID, string.Empty);
                    this._app.UI.SetText(this._app.UI.Path(itemGlobalId, "lblHeader"), provinceInfo.Name);
                    this._app.UI.SetText(this._app.UI.Path(itemGlobalId, "lblValue"), "");
                    this._starmap.PostSetProp("ProvincePoolEffect", (object)true, (object)this._starmap.Systems.Reverse[provinceInfo.CapitalSystemID]);
                }
                if (list3.Count > 0)
                {
                    this._app.UI.SetSelection("lstItems", list3.First <ProvinceInfo>().ID);
                    break;
                }
                this._app.UI.SetEnabled("btnFinishRequest", false);
                break;
            }
        }
		private void UpdateCombatList()
		{
			if (!this._app.Game.GetPendingCombats().Any<PendingCombat>((Func<PendingCombat, bool>)(x => this._listedcombats.Any<PendingCombat>((Func<PendingCombat, bool>)(j => j.ConflictID == x.ConflictID)))))
			{
				this._listedcombats.Clear();
				foreach (SystemWidget systemWidget in this._systemWidgets)
					systemWidget.Terminate();
				this._systemWidgets.Clear();
				this._app.UI.ClearItems(this._app.UI.Path(this.ID, "contentList"));
			}
			foreach (PendingCombat pendingCombat in this._app.Game.GetPendingCombats())
			{
				PendingCombat cmb = pendingCombat;
				bool flag1 = this._app.Game.CombatData.GetCombat(this._app.GameDatabase, cmb.ConflictID, cmb.SystemID, this._app.GameDatabase.GetTurnCount()) != null;
				string itemGlobalId1;
				if (this._listedcombats.Any<PendingCombat>((Func<PendingCombat, bool>)(x => x.ConflictID == cmb.ConflictID)))
				{
					if (this._listedcombats.FirstOrDefault<PendingCombat>((Func<PendingCombat, bool>)(x => x.ConflictID == cmb.ConflictID)).complete != flag1)
					{
						this._listedcombats.FirstOrDefault<PendingCombat>((Func<PendingCombat, bool>)(x => x.ConflictID == cmb.ConflictID)).complete = flag1;
						itemGlobalId1 = this._app.UI.GetItemGlobalID(this._app.UI.Path(this.ID, "contentList"), "", cmb.ConflictID, "");
						this._listedcombats.Remove(this._listedcombats.FirstOrDefault<PendingCombat>((Func<PendingCombat, bool>)(x => x.ConflictID == cmb.ConflictID)));
					}
					else
						continue;
				}
				else
				{
					this._app.UI.AddItem(this._app.UI.Path(this.ID, "contentList"), "", cmb.ConflictID, "");
					itemGlobalId1 = this._app.UI.GetItemGlobalID(this._app.UI.Path(this.ID, "contentList"), "", cmb.ConflictID, "");
					this._app.GameDatabase.GetStarSystemInfo(cmb.SystemID);
					this._listedcombats.Add(cmb);
					this._app.UI.ClearItems(this._app.UI.Path(itemGlobalId1, "combatPlayers"));
					bool flag2 = StarMap.IsInRange(this._app.GameDatabase, this._app.LocalPlayer.ID, cmb.SystemID);
					foreach (int num in cmb.PlayersInCombat)
					{
						this._app.UI.AddItem(this._app.UI.Path(itemGlobalId1, "combatPlayers"), "", num, "");
						string itemGlobalId2 = this._app.UI.GetItemGlobalID(this._app.UI.Path(itemGlobalId1, "combatPlayers"), "", num, "");
						this._app.UI.SetPropertyString(this._app.UI.Path(itemGlobalId2, "smallAvatar"), "sprite", Path.GetFileNameWithoutExtension(this._app.GameDatabase.GetPlayerInfo(num).AvatarAssetPath));
						if (flag2 && Path.GetFileNameWithoutExtension(this._app.GameDatabase.GetPlayerInfo(num).AvatarAssetPath) != string.Empty)
						{
							this._app.UI.SetVisible(this._app.UI.Path(itemGlobalId2, "smallAvatar"), true);
							this._app.UI.SetVisible(this._app.UI.Path(itemGlobalId2, "UnknownText"), false);
						}
						else
						{
							this._app.UI.SetVisible(this._app.UI.Path(itemGlobalId2, "smallAvatar"), false);
							this._app.UI.SetVisible(this._app.UI.Path(itemGlobalId2, "UnknownText"), true);
						}
						CombatState.SetPlayerCardOutlineColor(this._app, this._app.UI.Path(itemGlobalId2, "bgPlayerColor"), flag2 ? this._app.GameDatabase.GetPlayerInfo(num).PrimaryColor : new Vector3(0.0f, 0.0f, 0.0f));
					}
					this._app.UI.ClearItems(this._app.UI.Path(itemGlobalId1, "remainingPlayers"));
					foreach (int num in cmb.NPCPlayersInCombat)
					{
						this._app.UI.AddItem(this._app.UI.Path(itemGlobalId1, "remainingPlayers"), "", num, "");
						string itemGlobalId2 = this._app.UI.GetItemGlobalID(this._app.UI.Path(itemGlobalId1, "remainingPlayers"), "", num, "");
						this._app.UI.SetPropertyString(this._app.UI.Path(itemGlobalId2, "smallAvatar"), "sprite", Path.GetFileNameWithoutExtension(this._app.GameDatabase.GetPlayerInfo(num).AvatarAssetPath));
						if (flag2 && Path.GetFileNameWithoutExtension(this._app.GameDatabase.GetPlayerInfo(num).AvatarAssetPath) != string.Empty)
						{
							this._app.UI.SetVisible(this._app.UI.Path(itemGlobalId2, "smallAvatar"), true);
							this._app.UI.SetVisible(this._app.UI.Path(itemGlobalId2, "UnknownText"), false);
						}
						else
						{
							this._app.UI.SetVisible(this._app.UI.Path(itemGlobalId2, "smallAvatar"), false);
							this._app.UI.SetVisible(this._app.UI.Path(itemGlobalId2, "UnknownText"), true);
						}
						CombatState.SetPlayerCardOutlineColor(this._app, this._app.UI.Path(itemGlobalId2, "bgPlayerColor"), flag2 ? this._app.GameDatabase.GetPlayerInfo(num).PrimaryColor : new Vector3(0.0f, 0.0f, 0.0f));
					}
					this.SyncSystemOwnershipEffect(this._app.UI.Path(itemGlobalId1, "systemTitleCard"), cmb.SystemID, !flag2);
				}
				this._app.UI.SetVisible(this._app.UI.Path(itemGlobalId1, "pendingBG"), (!flag1 ? 1 : 0) != 0);
				this._app.UI.SetVisible(this._app.UI.Path(itemGlobalId1, "completeBG"), (flag1 ? 1 : 0) != 0);
				bool isMultiplayer = this._app.GameSetup.IsMultiplayer;
				this._app.UI.SetVisible(this._app.UI.Path(itemGlobalId1, "simWidget"), false);
				string text = "PENDING";
				if (this._app.CurrentState == this._app.GetGameState<CommonCombatState>() || this._app.CurrentState == this._app.GetGameState<SimCombatState>())
				{
					CommonCombatState currentState = (CommonCombatState)this._app.CurrentState;
					if (currentState != null && currentState.GetCombatID() == cmb.ConflictID)
					{
						if (currentState.PlayersInCombat.Any<Player>((Func<Player, bool>)(x => x.ID == this._app.LocalPlayer.ID)))
							text = "RESOLVING";
						this._app.UI.SetVisible(this._app.UI.Path(itemGlobalId1, "simWidget"), true);
					}
				}
				if (isMultiplayer)
					text = "RESOLVING";
				if (flag1)
					text = "RESOLVED";
				this._app.UI.SetText(this._app.UI.Path(itemGlobalId1, "reolvetext"), text);
				this._app.UI.SetText(this._app.UI.Path(this.ID, "combatsremaininglbl"), this._listedcombats.Where<PendingCombat>((Func<PendingCombat, bool>)(x => !x.complete)).Count<PendingCombat>().ToString() + (this._listedcombats.Where<PendingCombat>((Func<PendingCombat, bool>)(x => !x.complete)).Count<PendingCombat>() != 1 ? " Combats" : " Combat") + " Pending");
			}
		}