public static void RotateSailsTo(Sail sail) { if (network == null) { network = ComponentManager <Semih_Network> .Value; } List <Sail> allSails = Sail.AllSails; foreach (Sail current in allSails) { if (sail != current) { float axis = (sail.LocalRotation - current.LocalRotation); if (Semih_Network.IsHost) { AccessTools.Method("Sail:Rotate").Invoke(current, new object[] { axis }); } else { Message message = new Message_Sail_Rotate(Messages.Sail_Rotate, current, axis); network.SendP2P(network.HostID, message, EP2PSend.k_EP2PSendReliable, NetworkChannel.Channel_Game); } } } }
public static void SailsRotate(float axis) { Semih_Network value = ComponentManager <Semih_Network> .Value; List <Sail> allSails = Sail.AllSails; Type[] array = new Type[] { typeof(float) }; object[] parameters = new object[] { axis }; foreach (Sail sail in allSails) { if (Semih_Network.IsHost) { AccessTools.Method("Sail:Rotate", array, null).Invoke(sail, parameters); } else { Message message = new Message_Sail_Rotate(Messages.Sail_Rotate, sail, axis); value.SendP2P(value.HostID, message, Steamworks.EP2PSend.k_EP2PSendReliable, NetworkChannel.Channel_Game); } } }
public static void SailsRotate(float axis) { List <Sail> allSails = Sail.AllSails; foreach (Sail current in allSails) { if (Semih_Network.IsHost) { AccessTools.Method("Sail:Rotate").Invoke(current, new object[] { axis }); } else { Message message = new Message_Sail_Rotate(Messages.Sail_Rotate, current, axis); network.SendP2P(network.HostID, message, EP2PSend.k_EP2PSendReliable, NetworkChannel.Channel_Game); } } }
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); }