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