public override void Process(CyclopsToggleEngineState enginePacket) { GameObject cyclops = GuidHelper.RequireObjectFrom(enginePacket.Guid); CyclopsEngineChangeState engineState = cyclops.RequireComponentInChildren <CyclopsEngineChangeState>(); CyclopsMotorMode motorMode = cyclops.RequireComponentInChildren <CyclopsMotorMode>(); if (enginePacket.IsOn == engineState.motorMode.engineOn) { if ((enginePacket.IsStarting != (bool)engineState.ReflectionGet("startEngine")) != enginePacket.IsOn) { if (Player.main.currentSub != engineState.subRoot) { engineState.ReflectionSet("startEngine", !enginePacket.IsOn); engineState.ReflectionSet("invalidButton", true); engineState.Invoke("ResetInvalidButton", 2.5f); engineState.subRoot.BroadcastMessage("InvokeChangeEngineState", !enginePacket.IsOn, SendMessageOptions.RequireReceiver); } else { engineState.ReflectionSet("invalidButton", false); using (packetSender.Suppress <CyclopsToggleInternalLighting>()) { engineState.OnClick(); } } } } }
public void ToggleEngineState(NitroxId id, bool isStarting, bool isOn, bool silent = false) { GameObject cyclops = NitroxIdentifier.RequireObjectFrom(id); CyclopsEngineChangeState engineState = cyclops.RequireComponentInChildren <CyclopsEngineChangeState>(); CyclopsMotorMode motorMode = cyclops.RequireComponentInChildren <CyclopsMotorMode>(); if (isOn == engineState.motorMode.engineOn) { if ((isStarting != (bool)engineState.ReflectionGet("startEngine")) != isOn) { if (Player.main.currentSub != engineState.subRoot || silent) { engineState.ReflectionSet("startEngine", !isOn); engineState.ReflectionSet("invalidButton", true); engineState.Invoke("ResetInvalidButton", 2.5f); engineState.subRoot.BroadcastMessage("InvokeChangeEngineState", !isOn, SendMessageOptions.RequireReceiver); } else { engineState.ReflectionSet("invalidButton", false); using (packetSender.Suppress <CyclopsToggleInternalLighting>()) { engineState.OnClick(); } } } } }
// Disallows turning the engine on without power. static bool Prefix(CyclopsEngineChangeState __instance) { if (!__instance.subRoot.powerRelay.IsPowered()) { return(false); } return(true); }
public static void Postfix(CyclopsEngineChangeState __instance) { NitroxId id = NitroxEntity.GetId(__instance.subRoot.gameObject); Resolve <Cyclops>().BroadcastToggleEngineState(id, __instance.motorMode.engineOn, __instance.startEngine); }
public static void Postfix(CyclopsEngineChangeState __instance) { string guid = GuidHelper.GetGuid(__instance.subRoot.gameObject); NitroxServiceLocator.LocateService <Cyclops>().BroadcastToggleEngineState(guid, __instance.motorMode.engineOn, (bool)__instance.ReflectionGet("startEngine")); }
public static void Postfix(CyclopsEngineChangeState __instance) { String guid = GuidHelper.GetGuid(__instance.subRoot.gameObject); Multiplayer.Logic.Cyclops.ToggleEngineState(guid, __instance.motorMode.engineOn, (bool)__instance.ReflectionGet("startEngine")); }
public static void Postfix(CyclopsEngineChangeState __instance) { NitroxId id = NitroxEntity.GetId(__instance.subRoot.gameObject); NitroxServiceLocator.LocateService <Cyclops>().BroadcastToggleEngineState(id, __instance.motorMode.engineOn, (bool)__instance.ReflectionGet("startEngine")); }