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 override void Process(CyclopsChangeEngineMode motorPacket) { GameObject cyclops = GuidHelper.RequireObjectFrom(motorPacket.Guid); CyclopsMotorMode motorMode = cyclops.RequireComponentInChildren <CyclopsMotorMode>(); motorMode.BroadcastMessage("SetCyclopsMotorMode", motorPacket.Mode, SendMessageOptions.RequireReceiver); }
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(); } } } } }
public void ChangeEngineMode(NitroxId id, CyclopsMotorMode.CyclopsMotorModes mode) { GameObject cyclops = NitroxIdentifier.RequireObjectFrom(id); CyclopsMotorMode motorMode = cyclops.RequireComponentInChildren <CyclopsMotorMode>(); if (motorMode.cyclopsMotorMode != mode) { motorMode.BroadcastMessage("SetCyclopsMotorMode", mode, SendMessageOptions.RequireReceiver); } }
public static bool Prefix(CyclopsMotorMode __instance) { //SN disable the engine if the player leave the cyclops. So this must be avoided. __instance.ReflectionSet("engineOnOldState", __instance.engineOn); return(false); }
internal static void Postfix(CyclopsMotorMode __instance, CyclopsMotorMode.CyclopsMotorModes newMode) { __instance.gameObject.GetComponent <CyclopsOverDrive>().onCyclopsMotorModeChanged.Trigger(newMode); }
internal static void Postfix(CyclopsMotorMode __instance) { __instance.gameObject.AddIfNeedComponent <CyclopsOverDrive>(); }