private static bool Override_DestroySite(GeoSite __instance) { try { if (DefenseMission == null) { return(true); } var attacker = DefenseMission.GetEnemyFaction(); Verbo("{0} loss to {1}.", __instance.Name, attacker.GetPPName()); if (!CauseZoneDamage(attacker)) { return(true); } GeoHavenZone zone = DefenseMission.AttackedZone; zone.AddDamage(zone.Health.IntValue); zone.AddProduction(0); var haven = zone.Haven; Info("Fall of {0} converted to {1} destruction.", __instance.Name, zone.Def.ViewElementDef.DisplayName1.LocalizeEnglish()); if (haven != null) { if ((zone.Def.ProvidesRecruitment || zone.Def.ProvidesEliteRecruitment) && haven.AvailableRecruit != null) { haven.RemoveRecruit(); } } haven.ZonesStats.UpdateZonesStats(); __instance.RefreshVisuals(); return(false); } catch (Exception ex) { return(Error(ex)); } }
public void MouseDown(object sender, GeoOperatorMouseEventArgs e) { if (e.Button == MouseButtons.Left) { List<GeoSite> rnList; List<GeoCell> cellList; double x = m_Helper.ScreenToPlanetOfX(e.X); double y = m_Helper.ScreenToPlanetOfY(e.Y); double longitude = 0.0; double latitude = 0.0; GeoBLPoint point = m_Helper.ScreenToLat(e.X, e.Y); if (point != null) { longitude = point.L; latitude = point.B; } GeoRelayNodeEventArgs addRelayNodeArgs = new GeoRelayNodeEventArgs(); //Edited by liangwenli 20110304 GeoSite item = new GeoSite(x, y, longitude, latitude); addRelayNodeArgs.RelayNodeList.Add(item); this.m_NetEvent.GeoAddRelayMsg(addRelayNodeArgs, out rnList, out cellList); //this.m_NetEvent.GeoAddSiteMsg(addRelayNodeArgs, out rnList, out cellList); if ((rnList != null) && (rnList.Count > 0)) { this.m_NetEntityData.AddRelay(rnList, cellList); this.m_NetEntityData.RaiseDataChangedEvent(sender, e); } e.Handled = true; } }
private static void AfterEnterSlot_UpdateName(UIModuleManufacturing __instance, IManufacturableUIElement item) { if (!(item is GeoManufactureItem mItem)) { return; } if (!(mItem.Manufacturable is GeoUnitWrapper geoUnit)) { return; } __instance.Tooltip.InfoPanel.ItemNameTextComp.text = geoUnit.GetName(); GeoSite site = null; if (geoUnit is GeoPlaneWrapper plane) { site = plane.Vehicle.CurrentSite; } else if (geoUnit is GeoTankWrapper tank) { site = TankSites?[tank.GroundVehicle]; } if (site != null) { var region = site.GetComponent <GeoPhoenixBase>()?.LocationDescription.Localize(); if (!string.IsNullOrWhiteSpace(region)) { region = ", " + region; } __instance.Tooltip.InfoPanel.ItemDescriptionTextComp.text += "\n" + site.Name + region; } }
public static GeoSite GetGeoNESite(IASite site) { GeoSite site2 = new GeoSite(site.X, site.Y, site.Longitude, site.Latitude); site2.Active = site.Active; site2.ID = site.ID; site2.Name = site.Name; site2.Label = site.Label; site2.Visible = site.Visible; return site2; }
private static bool CanScrap(GeoVehicle plane, bool checkVehicleBay) { GeoSite site = plane.CurrentSite; if (plane.Travelling || site == null || site.Type != GeoSiteType.PhoenixBase) { return(false); } if (!(site.GetComponent <GeoPhoenixBase>() is GeoPhoenixBase pxBase)) { return(false); } return(!checkVehicleBay || CanScrapVehicles(pxBase)); }
private static void AfterSetMenuItems_CalcTime(GeoSite site, List <SiteContextualMenuItem> ____menuItems) { foreach (var menu in ____menuItems) { try { var vehicle = menu.Ability?.GeoActor as GeoVehicle; if (menu.Ability is MoveVehicleAbility move && move.GeoActor is GeoVehicle flier) { menu.ItemText.text += HoursToText(FlightHours(site, flier)); } else if (menu.Ability is ExploreSiteAbility explore) { var hours = GetVehicleTimeLeft(vehicle, (float)site.ExplorationTime.TimeSpan.TotalHours); menu.ItemText.text += HoursToText(hours); } // ScanAbility, LaunchMissionAbility, HavenTradeAbility, HavenDetailsAbility } catch (Exception ex) { Error(ex); }
private void OnLoadAustralianSitesCompleted(object sender, CsvDataCompletedEventArgs e) { if (e.Error != null) { DebugManager.LogError(e.Error); return; } var geoSites = new List <GeoSite>(); try { foreach (var line in e.Result) { var vals = line.Split(','); if (vals.Length >= 3) { var name = vals[0]; var latitude = double.Parse(vals[1]); var longitude = double.Parse(vals[2]); var place = new GeoSite { Name = name, Longitude = longitude, Latitude = latitude }; geoSites.Add(place); } } //var dataSourceView = new GeoSiteDataViewSource {Source = geoSites, DataSource = geoSites}; //this.DataSources.Update(AustralianSitesKey, dataSourceView); //this.AustralianSites = dataSourceView; this.DataSources.Update(AustralianSitesKey, new GeoSiteDataViewSource { Source = geoSites, DataSource = geoSites }); this.AustralianSites = this.DataSources[AustralianSitesKey] as GeoSiteDataViewSource; LoadingTimer.StopTask("LoadAustralianSites"); } catch (Exception ex) { DebugManager.LogError(ex); } }
private static void AfterSiteMission_AmendLog(GeoSite site, GeoMission mission, List <GeoscapeLogEntry> ____entries) { try { if (!(mission is GeoHavenDefenseMission defense) || DefenseMission == null) { return; } var attacker = DefenseMission.GetEnemyFaction(); if (!CauseZoneDamage(attacker)) { return; } LocalizedTextBind zoneName = defense.AttackedZone?.Def?.ViewElementDef?.DisplayName1; if (zoneName == null || ____entries == null || ____entries.Count < 1) { return; } GeoscapeLogEntry entry = ____entries[____entries.Count - 1]; Verbo("Converting {0} invasion message to zone invasion.", attacker.GetPPName()); entry.Parameters[0] = new LocalizedTextBind(site.SiteName.Localize() + " " + TitleCase(zoneName.Localize()), true); } catch (Exception ex) { Error(ex); } }
// Do the scrap after user confirmation private static void OnScrapConfirmation(UIModuleManufacturing me, MessageBoxCallbackResult answer, IManufacturable item, GeoscapeViewContext context) { try { if (answer.DialogResult != MessageBoxResult.Yes) { return; } GeoFaction faction = context.ViewerFaction; GeoLevelController geoLevel = context.Level; if (item is GeoUnitWrapper) { if (item is GeoPlaneWrapper plane) { Info("Scraping airplane {0}", plane.GetName()); GeoVehicle vehicle = plane.Vehicle; GeoSite site = vehicle.CurrentSite; foreach (GeoCharacter chr in vehicle.Characters.ToList()) { Info("Moving {0} to {1}", chr.DisplayName, site.Name); vehicle.RemoveCharacter(chr); site.AddCharacter(chr); } faction.ScrapItem(plane); vehicle.Travelling = true; // Unset vehicle.CurrentSite and triggers site.VehicleLeft vehicle.Destroy(); } else if (item is GeoTankWrapper tank) { Info("Scraping tank {0}", tank.GetName()); faction.ScrapItem(tank); faction.RemoveCharacter(tank.GroundVehicle); geoLevel.DestroyTacUnit(tank.GroundVehicle); } } Info("Scrap done, refreshing list"); typeof(UIModuleManufacturing).GetMethod("DoFilter", NonPublic | Instance).Invoke(me, new object[] { null, null }); } catch (Exception ex) { Error(ex); } }
private static void AfterDestroySite_RaiseAlertness(GeoSite __instance) { try { var haven = DefenseMission?.Haven; var owner = haven?.Site?.Owner; if (haven == null || IsAlienOrPP(owner)) { return; } if (Config.Attack_Raise_Faction_Alertness && owner != null) { Info("{0} has loss. Raising alertness of {1}", haven.Site.Name, owner.GetPPName()); foreach (var e in owner.Havens) { typeof(GeoHaven).GetMethod("IncreaseAlertness", NonPublic | Instance).Invoke(e, null); } } else if (haven.Site?.State == GeoSiteState.Functioning) { typeof(GeoHaven).GetMethod("IncreaseAlertness", NonPublic | Instance).Invoke(haven, null); Info("{0} has loss. It is now on {1}", haven.Site.Name, haven.AlertLevel); } } catch (Exception ex) { Error(ex); } }
public Site GetSite(GeoSite site) { return ServiceHelper.Lookup<IGeoNEDeal>(this.m_AppContext).GetSiteById(site.ID); }
private static void AfterSetHaven_ShowResourceStock(UIModuleSelectionInfoBox __instance, GeoSite ____site) { try { var res = ____site.GetComponent <GeoHaven>()?.GetResourceTrading(); var text = __instance.LeaderMottoText; if (res?.Count > 0 && text != null) { var conf = Mod.Config.Haven_Icons; text.text = string.Concat(res.Select(e => string.Format(e.ResourceStock >= e.HavenOfferQuantity ? conf.In_Stock_Line : conf.Out_Of_Stock_Line, e.HavenReceiveQuantity, ResName(e.HavenWants), e.HavenOfferQuantity, ResName(e.HavenOffers), e.ResourceStock) )).Trim(); text.fontStyle = FontStyle.Normal; } else { text.fontStyle = FontStyle.Italic; } } catch (Exception ex) { Error(ex); } }
private static void AfterSetHaven_ShowRecruitClass(UIModuleSelectionInfoBox __instance, GeoSite ____site, bool showRecruits) { try { if (!showRecruits) { return; } var recruit = ____site.GetComponent <GeoHaven>()?.AvailableRecruit; if (recruit == null) { return; } if (OriginalRecruitText == null) { OriginalRecruitText = __instance.RecruitAvailableText.text; } __instance.RecruitAvailableText.text = OriginalRecruitText + " (" + GetClassName(recruit) + ')'; } catch (Exception ex) { Error(ex); } }
private static void AfterHavenInfo_HideStickman(GeoSiteVisualsController __instance, GeoSite site) { try { var icon = __instance.RecruitAvailableIcon.gameObject; if (!icon.activeSelf) { return; } icon.SetActive(false); //Api( "zy.ui.dump", __instance.gameObject ); } catch (Exception ex) { Error(ex); } }
private static bool Override_Attack(GeoFaction __instance, GeoVehicle vehicle, GeoSite site, GeoLevelController ____level) { try { Verbo("{0} wants to attack {1}.", vehicle.Name, site.Name); if (ShouldStopFight(____level, vehicle?.Owner)) { Info("{0} attack prevented at {2}.", __instance.Name.Localize(), vehicle.Name, site.Name); return(false); } lastAttacker = vehicle.Owner; return(true); } catch (Exception ex) { return(Error(ex)); } }
public static GeoSite GetGeoNESite(RelayNode rn) { GeoSite site2 = new GeoSite(rn.X, rn.Y, rn.Longitude, rn.Latitude); site2.Active = rn.Active; site2.ID = rn.ID; site2.Name = rn.Name; site2.Label = rn.Label; site2.Visible = rn.Visible; site2.IsRelay = true; site2.ParentCell = Huawei.UNet.NE.Interface.LTECell.GetGeoNECell(rn.Parent.Parent); return site2; }