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); } } }
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); } } }
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); } } } }
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; } }
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); } } }
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"); } }