Exemplo n.º 1
0
        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);
        }
Exemplo n.º 3
0
        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();
                        }
                    }
                }
            }
        }
Exemplo n.º 4
0
        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);
            }
        }
Exemplo n.º 5
0
 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);
 }
Exemplo n.º 6
0
 internal static void Postfix(CyclopsMotorMode __instance, CyclopsMotorMode.CyclopsMotorModes newMode)
 {
     __instance.gameObject.GetComponent <CyclopsOverDrive>().onCyclopsMotorModeChanged.Trigger(newMode);
 }
Exemplo n.º 7
0
 internal static void Postfix(CyclopsMotorMode __instance)
 {
     __instance.gameObject.AddIfNeedComponent <CyclopsOverDrive>();
 }