// Replace scrap list with individual vehicles when applicable private static void BeforeRefreshItemList_FillWithVehicle(UIModuleManufacturing __instance, ref IEnumerable <IManufacturable> availableItemRecipes, PhoenixGeneralButton ____activeFilterButton, GeoscapeViewContext ____context) { try { if (availableItemRecipes == null || availableItemRecipes.GetType() == typeof(List <IManufacturable>)) { return; } if (!IsScrappingVehicles(__instance, ____activeFilterButton)) { return; } List <IManufacturable> vList = new List <IManufacturable>(); GeoPhoenixFaction faction = ____context.ViewerFaction as GeoPhoenixFaction; TankSites = new Dictionary <GeoTacUnit, GeoSite>(); if (faction.Vehicles.Count() > 1) { foreach (GeoVehicle plane in faction.Vehicles) { if (CanScrap(plane, true)) { Verbo("Can scrap airplane {0}", plane.Name); vList.Add(new GeoPlaneWrapper(plane)); foreach (var chr in plane.Characters) { if (chr.ClassDef.IsVehicle || chr.ClassDef.IsMutog) { TankSites.Add(chr, plane.CurrentSite); } } } } } foreach (GeoPhoenixBase pxbase in faction.Bases) { var units = pxbase.Site.TacUnits; if (!units.Any()) { continue; } foreach (var chr in units) { if (chr.ClassDef.IsMutog) { TankSites.Add(chr, pxbase.Site); } } if (CanScrapVehicles(pxbase)) { Verbo("Can scrap tanks at {0}", pxbase.Site.Name); foreach (var chr in units) { if (chr.ClassDef.IsVehicle) { TankSites.Add(chr, pxbase.Site); } } } } foreach (GeoCharacter tank in faction.GroundVehicles) { if (!TankSites.ContainsKey(tank)) { continue; } Verbo("Can scrap tank {0}", tank.DisplayName); vList.Add(new GeoTankWrapper(tank)); } Info("Can scrap {0} vehicles", vList.Count); availableItemRecipes = from t in vList select t; } catch (Exception ex) { Error(ex); } }
private static bool IsScrappingVehicles(UIModuleManufacturing __instance, PhoenixGeneralButton _activeFilterButton) { return(IsScrapping(__instance) && _activeFilterButton == __instance.VehiclesFilterButton); }
// Enable vehicle scrap tab private static void AfterRefreshFilters_EnableVehicleTab(UIModuleManufacturing __instance, PhoenixGeneralButton ____activeFilterButton) { try { if (__instance.Mode != UIModuleManufacturing.UIMode.Scrap) { return; } __instance.VehiclesFilterButton.SetInteractable(true); __instance.VehiclesFilterButton.GetComponent <UITooltipText>().TipKey = __instance.VehiclesTooltipText; /* // Show / hide class filters as appropiate - disabled because filter state is not restored correctly after toggle * UiType.GetMethod( "SetClassFiltersAvailability", NonPublic | Instance ) * .Invoke( __instance, new object[]{ ____activeFilterButton != __instance.VehiclesFilterButton } ); */ } catch (Exception ex) { Error(ex); } }