Fix booster cast

This commit is contained in:
2025-02-24 10:44:00 +01:00
parent 91e2bf4b61
commit c441d3ad10

View File

@@ -1,14 +1,15 @@
using System; using System;
using System.Collections.Generic;
using BepInEx.Configuration; using BepInEx.Configuration;
using HarmonyLib; using HarmonyLib;
namespace TerraTech { namespace TerraTech {
[HarmonyPatch] [HarmonyPatch]
public class ModuleBoosterManager { public class ModuleBoosterManager {
private static readonly MultipliedObjectManager<Thruster> fanManager = private static readonly MultipliedObjectManager<FanJet> fanManager =
new MultipliedObjectManager<Thruster>(ConfigureFanThruster); new MultipliedObjectManager<FanJet>(ConfigureFanThruster);
private static readonly MultipliedObjectManager<Thruster> jetManager = private static readonly MultipliedObjectManager<BoosterJet> jetManager =
new MultipliedObjectManager<Thruster>(ConfigureJetThruster); new MultipliedObjectManager<BoosterJet>(ConfigureJetThruster);
public static ConfigEntry<float> fanThrustMultiplier; public static ConfigEntry<float> fanThrustMultiplier;
public static ConfigEntry<float> jetThrustMultiplier; public static ConfigEntry<float> jetThrustMultiplier;
@@ -28,11 +29,11 @@ namespace TerraTech {
jetThrustMultiplier.SettingChanged += (sender, args) => DoPatch(); jetThrustMultiplier.SettingChanged += (sender, args) => DoPatch();
} }
private static void ConfigureFanThruster(MultipliedObject<Thruster> obj) { private static void ConfigureFanThruster(MultipliedObject<FanJet> obj) {
obj.AddField(new FieldConfiguration<float, float>("m_Force", fanThrustMultiplier)); obj.AddField(new FieldConfiguration<float, float>("m_Force", fanThrustMultiplier));
} }
private static void ConfigureJetThruster(MultipliedObject<Thruster> obj) { private static void ConfigureJetThruster(MultipliedObject<BoosterJet> obj) {
obj.AddField(new FieldConfiguration<float, float>("m_Force", jetThrustMultiplier)); obj.AddField(new FieldConfiguration<float, float>("m_Force", jetThrustMultiplier));
} }
@@ -40,8 +41,8 @@ namespace TerraTech {
[HarmonyPatch(typeof(ModuleBooster), "OnAttached")] [HarmonyPatch(typeof(ModuleBooster), "OnAttached")]
static void PostfixCreate(ModuleBooster __instance) { static void PostfixCreate(ModuleBooster __instance) {
var trav = Traverse.Create(__instance); var trav = Traverse.Create(__instance);
var fans = trav.Field("fans").GetValue<Thruster[]>(); var fans = trav.Field("fans").GetValue<List<FanJet>>();
var jets = trav.Field("jets").GetValue<Thruster[]>(); var jets = trav.Field("jets").GetValue<List<BoosterJet>>();
foreach (var fan in fans) fanManager.OnObjectAttached(fan); foreach (var fan in fans) fanManager.OnObjectAttached(fan);
foreach (var jet in jets) jetManager.OnObjectAttached(jet); foreach (var jet in jets) jetManager.OnObjectAttached(jet);
@@ -51,8 +52,8 @@ namespace TerraTech {
[HarmonyPatch(typeof(ModuleBooster), "OnDetaching")] [HarmonyPatch(typeof(ModuleBooster), "OnDetaching")]
static void PostfixDestroy(ModuleBooster __instance) { static void PostfixDestroy(ModuleBooster __instance) {
var trav = Traverse.Create(__instance); var trav = Traverse.Create(__instance);
var fans = trav.Field("fans").GetValue<Thruster[]>(); var fans = trav.Field("fans").GetValue<List<FanJet>>();
var jets = trav.Field("jets").GetValue<Thruster[]>(); var jets = trav.Field("jets").GetValue<List<BoosterJet>>();
foreach (var fan in fans) fanManager.OnObjectDetached(fan); foreach (var fan in fans) fanManager.OnObjectDetached(fan);
foreach (var jet in jets) jetManager.OnObjectDetached(jet); foreach (var jet in jets) jetManager.OnObjectDetached(jet);