Skip to content

Commit ee05e36

Browse files
committed
VGE: type FieldRef generics for oxygen gizmo sync
FieldRef<object, ThingComp> and FieldRef<object, Gizmo_Slider> let callsites drop the (ThingComp) and (Gizmo_Slider) casts. Only the field generic needs to be compile-time known; the runtime Type arg passed to FieldRefAccess stays dynamic. Review feedback from rwmt#577.
1 parent 5a97f7f commit ee05e36

1 file changed

Lines changed: 6 additions & 6 deletions

File tree

Source/Mods/VanillaGravshipExpanded.cs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -34,9 +34,9 @@ class VanillaGravshipExpanded
3434

3535
// Gizmo_OxygenProvider
3636
private static Type oxygenGizmoType;
37-
private static AccessTools.FieldRef<object, object> oxygenProviderFromGizmo;
37+
private static AccessTools.FieldRef<object, ThingComp> oxygenProviderFromGizmo;
3838
private static ISyncField oxygenTargetValuePctField;
39-
private static AccessTools.FieldRef<object, object> oxygenGizmoFromComp;
39+
private static AccessTools.FieldRef<object, Gizmo_Slider> oxygenGizmoFromComp;
4040

4141
// Building_VacBarrier_Recolorable color sync
4242
private static Type vacBarrierRecolorableType;
@@ -372,8 +372,8 @@ private static void LatePatch()
372372
MP.RegisterSyncMethod(AccessTools.PropertySetter(compType, "AutomaticRechargeEnabled"));
373373

374374
oxygenGizmoType = AccessTools.TypeByName("VanillaGravshipExpanded.Gizmo_OxygenProvider");
375-
oxygenProviderFromGizmo = AccessTools.FieldRefAccess<object>(oxygenGizmoType, "oxygenProvider");
376-
oxygenGizmoFromComp = AccessTools.FieldRefAccess<object>(compType, "oxygenConfigurationGizmo");
375+
oxygenProviderFromGizmo = AccessTools.FieldRefAccess<ThingComp>(oxygenGizmoType, "oxygenProvider");
376+
oxygenGizmoFromComp = AccessTools.FieldRefAccess<Gizmo_Slider>(compType, "oxygenConfigurationGizmo");
377377

378378
oxygenTargetValuePctField = MP.RegisterSyncField(oxygenGizmoType, "targetValuePct").SetBufferChanges();
379379
AccessTools.Field(oxygenTargetValuePctField.GetType(), "targetType")
@@ -794,12 +794,12 @@ private static void SyncOxygenGizmo(SyncWorker sync, ref Gizmo_Slider gizmo)
794794
{
795795
if (sync.isWriting)
796796
{
797-
sync.Write((ThingComp)oxygenProviderFromGizmo(gizmo));
797+
sync.Write(oxygenProviderFromGizmo(gizmo));
798798
}
799799
else
800800
{
801801
var comp = sync.Read<ThingComp>();
802-
gizmo = (Gizmo_Slider)oxygenGizmoFromComp(comp);
802+
gizmo = oxygenGizmoFromComp(comp);
803803
}
804804
}
805805

0 commit comments

Comments
 (0)