コード例 #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();
                        }
                    }
                }
            }
        }
コード例 #2
0
ファイル: Cyclops.cs プロジェクト: willchris2/Nitrox
        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();
                        }
                    }
                }
            }
        }
コード例 #3
0
 // Disallows turning the engine on without power.
 static bool Prefix(CyclopsEngineChangeState __instance)
 {
     if (!__instance.subRoot.powerRelay.IsPowered())
     {
         return(false);
     }
     return(true);
 }
コード例 #4
0
        public static void Postfix(CyclopsEngineChangeState __instance)
        {
            NitroxId id = NitroxEntity.GetId(__instance.subRoot.gameObject);

            Resolve <Cyclops>().BroadcastToggleEngineState(id, __instance.motorMode.engineOn, __instance.startEngine);
        }
コード例 #5
0
        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"));
        }
コード例 #6
0
        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"));
        }
コード例 #7
0
        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"));
        }