public float GetWetMass() { float num = 0f; foreach (GameObject item in AttachableBuilding.GetAttachedNetwork(commandModule.GetComponent <AttachableBuilding>())) { RocketModule component = item.GetComponent <RocketModule>(); if ((Object)component != (Object)null) { FuelTank component2 = component.GetComponent <FuelTank>(); OxidizerTank component3 = component.GetComponent <OxidizerTank>(); SolidBooster component4 = component.GetComponent <SolidBooster>(); if ((Object)component2 != (Object)null) { num += component2.MassStored(); } if ((Object)component3 != (Object)null) { num += component3.MassStored(); } if ((Object)component4 != (Object)null) { num += component4.fuelStorage.MassStored(); } } } return(num); }
public override void DoPostConfigureComplete(GameObject go) { SolidBooster solidBooster = go.AddOrGet <SolidBooster>(); solidBooster.mainEngine = false; solidBooster.efficiency = ROCKETRY.ENGINE_EFFICIENCY.BOOSTER; solidBooster.fuelTag = ElementLoader.FindElementByHash(SimHashes.Iron).tag; Storage storage = go.AddOrGet <Storage>(); storage.SetDefaultStoredItemModifiers(Storage.StandardSealedStorage); storage.capacityKg = 800f; solidBooster.fuelStorage = storage; ManualDeliveryKG manualDeliveryKG = go.AddComponent <ManualDeliveryKG>(); manualDeliveryKG.SetStorage(storage); manualDeliveryKG.requestedItemTag = solidBooster.fuelTag; manualDeliveryKG.refillMass = storage.capacityKg / 2f; manualDeliveryKG.capacity = storage.capacityKg / 2f; manualDeliveryKG.choreTypeIDHash = Db.Get().ChoreTypes.MachineFetch.IdHash; ManualDeliveryKG manualDeliveryKG2 = go.AddComponent <ManualDeliveryKG>(); manualDeliveryKG2.SetStorage(storage); manualDeliveryKG2.requestedItemTag = ElementLoader.FindElementByHash(SimHashes.OxyRock).tag; manualDeliveryKG2.refillMass = storage.capacityKg / 2f; manualDeliveryKG2.capacity = storage.capacityKg / 2f; manualDeliveryKG2.choreTypeIDHash = Db.Get().ChoreTypes.MachineFetch.IdHash; RocketModule rocketModule = go.AddOrGet <RocketModule>(); rocketModule.SetBGKAnim(Assets.GetAnim("rocket_solid_booster_bg_kanim")); EntityTemplates.ExtendBuildingToRocketModule(go); }
} // skip original method static void Postfix(StarmapScreen __instance) { var ranges = SolidBoosterStats.Ranges; List <string> rangeDivisors = new List <string>(); foreach (var range in ranges) { rangeDivisors.Add(StarmapScreenOverhaul.FormatDistance(range, "")); } __instance.Get(out BreakdownList rocketDetailsFuel, nameof(rocketDetailsFuel)); BreakdownList list = rocketDetailsFuel; __instance.Get(out CommandModule currentCommandModule, nameof(currentCommandModule)); RocketStatsOverhaul stats = (RocketStatsOverhaul)currentCommandModule.rocketStats; list.SetTitle(StarmapScreenOverhaul.Caption.TotalBoosterThrust); list.SetIcon(__instance.rocketDetailsFuelIcon); list.gameObject.name = nameof(rocketDetailsFuel); list.ClearRows(); string moduleName = ""; int boosterCount = 0; foreach (GameObject gameObject in stats.BuildingNetworkEnumerable()) { SolidBooster component = gameObject.GetComponent <SolidBooster>(); if (component != null) { moduleName = gameObject.gameObject.GetProperName(); boosterCount++; } } float boosterKmRemaining = stats.GetBoosterThrust(); for (int i = 0; i < boosterCount; ++i) { if (boosterKmRemaining <= GetRange(ranges, i)) { list.AddRow().ShowData(moduleName, StarmapScreenOverhaul.FormatDistance(boosterKmRemaining, "+", "") + "/" + rangeDivisors[i]); boosterKmRemaining -= boosterKmRemaining; } else { list.AddRow().ShowData(moduleName, StarmapScreenOverhaul.FormatDistance(GetRange(ranges, i), "+", "") + "/" + rangeDivisors[i]); boosterKmRemaining -= GetRange(ranges, i); } } AddImportant(list, StarmapScreenOverhaul.Caption.TotalBoosterThrust, stats.GetBoosterThrust()); }
public float GetBoosterThrust() { float num = 0f; foreach (GameObject item in AttachableBuilding.GetAttachedNetwork(commandModule.GetComponent <AttachableBuilding>())) { SolidBooster component = item.GetComponent <SolidBooster>(); if ((Object)component != (Object)null) { float amountAvailable = component.fuelStorage.GetAmountAvailable(ElementLoader.FindElementByHash(SimHashes.OxyRock).tag); float amountAvailable2 = component.fuelStorage.GetAmountAvailable(ElementLoader.FindElementByHash(SimHashes.Iron).tag); num += component.efficiency * Mathf.Min(amountAvailable, amountAvailable2); } } return(num); }
public float GetTotalOxidizer(bool includeBoosters = false) { float num = 0f; foreach (GameObject item in AttachableBuilding.GetAttachedNetwork(commandModule.GetComponent <AttachableBuilding>())) { OxidizerTank component = item.GetComponent <OxidizerTank>(); if ((Object)component != (Object)null) { num += component.GetTotalOxidizerAvailable(); } if (includeBoosters) { SolidBooster component2 = item.GetComponent <SolidBooster>(); if ((Object)component2 != (Object)null) { num += component2.fuelStorage.GetAmountAvailable(GameTags.OxyRock); } } } return(num); }
/// <summary> /// Returns how much do boosters contribute to rocket distance in km. /// </summary> public new float GetBoosterThrust() { float fuel = 0; float oxidizer = 0; foreach (GameObject gameObject in BuildingNetworkEnumerable()) { SolidBooster component = gameObject.GetComponent <SolidBooster>(); if (component != null) { fuel += component.fuelStorage.GetAmountAvailable(ElementLoader.FindElementByHash(SimHashes.OxyRock).tag); oxidizer += component.fuelStorage.GetAmountAvailable(ElementLoader.FindElementByHash(SimHashes.Iron).tag); } } fuel /= SolidBoosterStats.MaxFuelStorage; oxidizer /= SolidBoosterStats.MaxOxyStorage; float numEffectiveBoosters = Mathf.Min(fuel, oxidizer); float thrust = GetBoosterContribution(numEffectiveBoosters); return(thrust); }
public float GetTotalFuel(bool includeBoosters = false) { float num = 0f; foreach (GameObject item in AttachableBuilding.GetAttachedNetwork(commandModule.GetComponent <AttachableBuilding>())) { FuelTank component = item.GetComponent <FuelTank>(); Tag engineFuelTag = GetEngineFuelTag(); if ((Object)component != (Object)null) { num += component.GetAmountAvailable(engineFuelTag); } if (includeBoosters) { SolidBooster component2 = item.GetComponent <SolidBooster>(); if ((Object)component2 != (Object)null) { num += component2.fuelStorage.GetAmountAvailable(component2.fuelTag); } } } return(num); }