public override bool Deserialize(Message_NetworkBehaviour _msg, CSteamID _remoteID) { if (!mi_loaded) { return(base.Deserialize(_msg, _remoteID)); } Messages type = _msg.Type; if (_msg.Type != Messages.Battery_OnOff) { return(base.Deserialize(_msg, _remoteID)); } Message_Battery_OnOff msg = _msg as Message_Battery_OnOff; if (msg == null) { return(base.Deserialize(_msg, _remoteID)); } switch ((ELanternRequestType)msg.batteryUsesLeft) //we use the usesleft value as our command type carrier { case ELanternRequestType.RELEASE_AUTO: UserControlsState = false; CheckLightState(true); return(true); case ELanternRequestType.REQUEST_STATE: //a client block requested this blocks state, send it back if (Semih_Network.IsHost) { if (!UserControlsState) { return(true); } mi_network.SendP2P( _remoteID, new Message_Battery_OnOff(Messages.Battery_OnOff, mi_network.NetworkIDManager, mi_network.LocalSteamID, this.ObjectIndex, (int)ELanternRequestType.TOGGLE, IsOn), EP2PSend.k_EP2PSendReliable, NetworkChannel.Channel_Game); } return(true); case ELanternRequestType.TOGGLE: UserControlsState = true; SetLightOn((_msg as Message_Battery_OnOff)?.on ?? true); return(true); } return(true); }
public static void SailsOpen() { Semih_Network value = ComponentManager <Semih_Network> .Value; List <Sail> allSails = Sail.AllSails; for (int i = 0; i < allSails.Count; i++) { Sail sail = allSails[i]; Message_NetworkBehaviour message_NetworkBehaviour = new Message_NetworkBehaviour((!sail.open) ? Messages.Sail_Open : Messages.Sail_Close, sail); if (Semih_Network.IsHost) { sail.Open(); value.RPC(message_NetworkBehaviour, Target.All, Steamworks.EP2PSend.k_EP2PSendReliableWithBuffering, 0); } else { value.SendP2P(value.HostID, message_NetworkBehaviour, Steamworks.EP2PSend.k_EP2PSendReliableWithBuffering, 0); } } }
public static void SailsClose() { if (network == null) { network = ComponentManager <Semih_Network> .Value; } List <Sail> allSails = Sail.AllSails; for (int i = 0; i < allSails.Count; i++) { Sail sail = allSails[i]; Message_NetworkBehaviour message = new Message_NetworkBehaviour(Messages.Sail_Close, sail); if (Semih_Network.IsHost) { AccessTools.Method("Sail:Close", null, null).Invoke(sail, null); network.RPC(message, Target.Other, EP2PSend.k_EP2PSendReliable, NetworkChannel.Channel_Game); continue; } network.SendP2P(network.HostID, message, EP2PSend.k_EP2PSendReliable, NetworkChannel.Channel_Game); } }
public static void SailsClose() { Semih_Network value = ComponentManager <Semih_Network> .Value; List <Sail> allSails = Sail.AllSails; object[] parameters = new object[0]; for (int i = 0; i < allSails.Count; i++) { Sail sail = allSails[i]; Message_NetworkBehaviour message_NetworkBehaviour = new Message_NetworkBehaviour((!sail.open) ? Messages.Sail_Open : Messages.Sail_Close, sail); if (Semih_Network.IsHost) { AccessTools.Method("Sail:Close", null, null).Invoke(sail, parameters); value.RPC(message_NetworkBehaviour, Target.All, Steamworks.EP2PSend.k_EP2PSendReliableWithBuffering, 0); } else { value.SendP2P(value.HostID, message_NetworkBehaviour, Steamworks.EP2PSend.k_EP2PSendReliableWithBuffering, 0); } } }
private static bool Prefix ( Sail __instance, ref bool ___blockPlaced, ref Network_Player ___localPlayer, ref CanvasHelper ___canvas, ref bool ___isRotating, ref GameObject ___paintCollider, ref Semih_Network ___network ) { if (!___blockPlaced) { return(false); } if (___canvas == null || ___canvas.displayTextManager == null || ___localPlayer == null) { return(false); } if (Helper.LocalPlayerIsWithinDistance(__instance.transform.position, Player.UseDistance) && CanvasHelper.ActiveMenu == MenuType.None) { bool mod = MyInput.GetButton("Sprint"); if (!__instance.open) { if (mod) { ___canvas.displayTextManager.ShowText("Open Sails", MyInput.Keybinds["Interact"].MainKey, 1, "Rotate Sails", MyInput.Keybinds["Rotate"].MainKey, 2); } else { ___canvas.displayTextManager.ShowText("Hold for more options", MyInput.Keybinds["Sprint"].MainKey, 1, "Open", MyInput.Keybinds["Interact"].MainKey, 2, 0, true); ___canvas.displayTextManager.ShowText("Rotate", MyInput.Keybinds["Rotate"].MainKey, 3, 0, false); } } else { if (mod) { ___canvas.displayTextManager.ShowText("Close Sails", MyInput.Keybinds["Interact"].MainKey, 1, "Rotate Sails", MyInput.Keybinds["Rotate"].MainKey, 2); } else { ___canvas.displayTextManager.ShowText("Hold for more options", MyInput.Keybinds["Sprint"].MainKey, 1, "Close", MyInput.Keybinds["Interact"].MainKey, 2, 0, true); ___canvas.displayTextManager.ShowText("Rotate", MyInput.Keybinds["Rotate"].MainKey, 3, 0, false); } } if (MyInput.GetButtonDown("Interact")) { Message_NetworkBehaviour message = new Message_NetworkBehaviour(__instance.open ? Messages.Sail_Close : Messages.Sail_Open, __instance); if (Semih_Network.IsHost) { if (__instance.open) { if (mod) { MoreSailsMoreSpeed.SailsClose(); } else { AccessTools.Method("Sail:Close").Invoke(__instance, null); } } else { if (mod) { MoreSailsMoreSpeed.SailsOpen(); } else { AccessTools.Method("Sail:Open").Invoke(__instance, null); } } ___network.RPC(message, Target.Other, EP2PSend.k_EP2PSendReliable, NetworkChannel.Channel_Game); } else { ___network.SendP2P(___network.HostID, message, EP2PSend.k_EP2PSendReliable, NetworkChannel.Channel_Game); } } if (MyInput.GetButton("Rotate")) { ___localPlayer.PlayerScript.SetMouseLookScripts(false); ___isRotating = true; } else if (MyInput.GetButtonUp("Rotate")) { if (mod) { MoreSailsMoreSpeed.RotateSailsTo(__instance); } ___localPlayer.PlayerScript.SetMouseLookScripts(true); ___isRotating = false; } if (MyInput.GetButtonUp("Sprint") && ___isRotating) { MoreSailsMoreSpeed.RotateSailsTo(__instance); ___localPlayer.PlayerScript.SetMouseLookScripts(true); ___isRotating = false; return(false); } bool button = MyInput.GetButton("Rotate"); if (button) { float axis = Input.GetAxis("Mouse X"); if (Semih_Network.IsHost) { AccessTools.Method("Sail:Rotate").Invoke(__instance, new object[] { axis }); } else { Message_Sail_Rotate message2 = new Message_Sail_Rotate(Messages.Sail_Rotate, __instance, axis); ___network.SendP2P(___network.HostID, message2, EP2PSend.k_EP2PSendReliable, NetworkChannel.Channel_Game); } } ___paintCollider.SetActiveSafe(!button); return(false); } if (___isRotating) { ___isRotating = false; ___localPlayer.PlayerScript.SetMouseLookScripts(true); } ___canvas.displayTextManager.HideDisplayTexts(); return(false); }