using System.Collections.Generic; using System.Runtime.InteropServices; using Rewired; using UnityEngine; using UnityEngine.SceneManagement; public class InputManager : MonoBehaviour { public struct POINT { public int X; public int Y; } [Tooltip("Rewired Input Manager's player used for handling player's input")] private Player player; public bool IgnoreAllInput = false; public static bool IsMouseLeft; public static bool IsMouseRight; private bool isPaused; private float MouseX = Screen.width / 2; private float MouseY = Screen.height / 2; private float deltaMouseX; private float deltaMouseY; private float slowDownReeling; private float slowDownFloat; private bool reelUpClicked; private bool reelDownClicked; public static Vector2 movementAxis; public static bool isJumping; public static bool isCameraChange; public static bool isUnderwaterCamera; public static bool isUnderwaterCameraZoomUp; public static bool isUnderwaterCameraZoomDown; public static bool isUnderwaterCameraFloatZoom; public static bool LT; public static bool showUI = true; public static bool underwaterCameraMini; public static bool isHeadFlashLight; public static bool quickHelp; public static bool isEagleEye; public static bool isRunning; public static bool isReelReeling; public static bool isReelSpeedUp; public static bool isReelSpeedDown; public static bool isReelSpeedMax; public static bool isReelDragUp; public static bool isReelDragDown; public static bool isCastNear; public static bool isCastFar; public static bool isPullUpRod; public static bool isCastReset; public static bool isDeepthFloatUp; public static bool isDeepthFloatDown; public static bool isShowSlot0; public static bool isShowSlot1; public static bool isShowSlot2; public static bool isShowSlot3; public static bool isShowSlot4; public static bool RB; [DllImport("user32.dll")] private static extern bool SetCursorPos(int X, int Y); [DllImport("user32.dll")] private static extern void mouse_event(int dwFlags, int dx, int dy, int dwData, int dwExtraInfo); [DllImport("user32.dll")] public static extern bool GetCursorPos(out POINT lpPoint); private void Start() { player = ReInput.players.GetPlayer(0); MouseMap mouseMapInstance = ReInput.mapping.GetMouseMapInstance(0, 0); MouseMap mouseMapInstanceSavedOrDefault = ReInput.mapping.GetMouseMapInstanceSavedOrDefault(0, 0, 0); KeyboardMap keyboardMapInstance = ReInput.mapping.GetKeyboardMapInstance(0, 0); KeyboardMap keyboardMapInstanceSavedOrDefault = ReInput.mapping.GetKeyboardMapInstanceSavedOrDefault(0, 0, 0); int num = mouseMapInstance.ButtonMaps.Count - mouseMapInstanceSavedOrDefault.ButtonMaps.Count; for (int i = 0; i < num; i++) { Debug.Log("Added new map: " + mouseMapInstance.ButtonMaps[mouseMapInstance.ButtonMaps.Count - 1 - i] .actionDescriptiveName); mouseMapInstanceSavedOrDefault.ButtonMaps.Add( mouseMapInstance.ButtonMaps[mouseMapInstance.ButtonMaps.Count - 1 - i]); } num = keyboardMapInstance.ButtonMaps.Count - keyboardMapInstanceSavedOrDefault.ButtonMaps.Count; for (int j = 0; j < num; j++) { Debug.Log("Added new map: " + keyboardMapInstance.ButtonMaps[keyboardMapInstance.ButtonMaps.Count - 1 - j] .actionDescriptiveName); keyboardMapInstanceSavedOrDefault.ButtonMaps.Add( keyboardMapInstance.ButtonMaps[keyboardMapInstance.ButtonMaps.Count - 1 - j]); } num = mouseMapInstance.AxisMaps.Count - mouseMapInstanceSavedOrDefault.AxisMaps.Count; for (int k = 0; k < num; k++) { Debug.Log(mouseMapInstance.AxisMaps[mouseMapInstance.AxisMaps.Count - 1 - k].actionDescriptiveName); mouseMapInstanceSavedOrDefault.AxisMaps.Add( mouseMapInstance.ButtonMaps[mouseMapInstance.ButtonMaps.Count - 1 - k]); } ReInput.userDataStore?.Save(); ReInput.userDataStore?.SavePlayerData(0); ReInput.userDataStore?.Load(); } private void recheckMouseDeltaPosition() { GetCursorPos(out var lpPoint); deltaMouseX = Mathf.Abs((float)lpPoint.X - Input.mousePosition.x); deltaMouseY = Mathf.Abs((float)lpPoint.Y + (Input.mousePosition.y - (float)Screen.height)); } public void SetCursorPositionToScreenCenter() { recheckMouseDeltaPosition(); MouseX = Screen.width / 2; MouseY = Screen.height / 2; SetCursorPos((int)(deltaMouseX + (float)(Screen.width / 2)), (int)(deltaMouseY + (float)(Screen.height / 2))); } private void Update() { if (IgnoreAllInput) { return; } if (Input.GetMouseButtonDown(0)) { IsMouseLeft = true; } if (Input.GetMouseButtonUp(0)) { IsMouseLeft = false; } if (Input.GetMouseButtonDown(1)) { IsMouseRight = true; } if (Input.GetMouseButtonUp(1)) { IsMouseRight = false; } // if (player.GetButtonDown("PressRMB")) // { // Debug.Log("PRESSEDDDDD"); // } if (player.GetButtonDown("rodPullUpButton") && CanPullUpRod()) { isPullUpRod = true; } if (player.GetButtonUp("rodPullUpButton")) { isPullUpRod = false; } if (player.GetButtonDown("LT")) { LT = true; } if (player.GetButtonUp("LT")) { LT = false; } if (player.GetButtonDown("RB")) { RB = true; } if (player.GetButtonUp("RB")) { RB = false; } if (player.GetButtonDown("reelSpeedMax")) { isReelSpeedMax = true; // isreelSpeedMaxHold = true; } else if (player.GetButtonUp("reelSpeedMax")) { isReelSpeedMax = false; // isreelSpeedMaxHold = false; } else if (RB) { if (reelUpClicked) { isReelSpeedMax = true; } else { isReelSpeedMax = false; } } // if (!isreelSpeedMaxHold) // { // isReelSpeedMax = false; // } if (player.GetButtonDown("quickHelpKey")) { quickHelp = !quickHelp; } movementAxis = Vector2.zero; // if (!SRDebug.Instance.IsDebugPanelVisible) { if (Application.isFocused) { movementAxis.x = player.GetAxis("moveHorizontal") * Time.deltaTime * 500f; movementAxis.y = player.GetAxis("moveVertical") * Time.deltaTime * 500f; } } if (player.GetButtonDown("reelSpeedUp")) { reelUpClicked = true; } if (player.GetButtonUp("reelSpeedUp")) { isReelSpeedUp = false; reelUpClicked = false; } if (player.GetButtonDown("reelSpeedDown")) { reelDownClicked = true; } if (player.GetButtonUp("reelSpeedDown")) { isReelSpeedDown = false; reelDownClicked = false; } // if (FScriptsHandler.Instance != null && FScriptsHandler.Instance.m_PlayerMain.currentRod != null && // (!LT || FScriptsHandler.Instance.m_PlayerMain.currentRod.rodType != 0) && !RB) // { // if (reelUpClicked) // { // if (slowDownReeling >= 1f) // { // isReelSpeedUp = true; // slowDownReeling = 0f; // } // else // { // isReelSpeedUp = false; // slowDownReeling += Time.deltaTime * 100f; // } // } // // if (reelDownClicked) // { // if (slowDownReeling >= 1f) // { // isReelSpeedDown = true; // slowDownReeling = 0f; // } // else // { // isReelSpeedDown = false; // slowDownReeling += Time.deltaTime * 100f; // } // } // } if (player.GetButtonDown("jumping")) { isJumping = true; } else { isJumping = false; } if (player.GetButtonDown("runKey")) { isRunning = true; } if (player.GetButtonUp("runKey")) { isRunning = false; } if (player.GetButtonDown("cameraTypeViewKey")) { isCameraChange = !isCameraChange; } if (player.GetButtonDown("showGUIKey")) { showUI = !showUI; } if (player.GetButtonDown("eagleEye")) { isEagleEye = true; } if (player.GetButtonUp("eagleEye")) { isEagleEye = false; } if (player.GetButtonDown("underwaterCameraKey")) { isUnderwaterCamera = !isUnderwaterCamera; } if (player.GetButtonDown("underwaterMiniCameraKey")) { underwaterCameraMini = !underwaterCameraMini; } if (player.GetButtonDown("underwaterZoomUpCameraKey")) { isUnderwaterCameraZoomUp = true; } if (player.GetButtonUp("underwaterZoomUpCameraKey")) { isUnderwaterCameraZoomUp = false; } if (player.GetButtonDown("underwaterZoomDownCameraKey")) { isUnderwaterCameraZoomDown = true; } if (player.GetButtonUp("underwaterZoomDownCameraKey")) { isUnderwaterCameraZoomDown = false; } if (player.GetButtonDown("underwaterZoomFloat")) { isUnderwaterCameraFloatZoom = true; } else { isUnderwaterCameraFloatZoom = false; } if (player.GetButtonDown("showSlot0")) { isShowSlot0 = true; Debug.LogError("showSlot0======"); } else { isShowSlot0 = false; } if (player.GetButtonDown("showSlot1")) { isShowSlot1 = true; Debug.LogError("showSlot1======"); } else { isShowSlot1 = false; } if (player.GetButtonDown("showSlot2")) { isShowSlot2 = true; Debug.LogError("showSlot2======"); } else { isShowSlot2 = false; } if (player.GetButtonDown("showSlot3")) { isShowSlot3 = true; } else { isShowSlot3 = false; } if (player.GetButtonDown("showSlot4")) { isShowSlot4 = true; } else { isShowSlot4 = false; } // if (!isCastFar) // { // if (GameManager.Instance.currentLevelPopUp != null) // { // return; // } // // if (player.GetButtonDown("NearCastButton")) // { // isCastNear = true; // } // else if (player.GetButtonUp("NearCastButton") && isCastNear) // { // isCastNear = false; // } // } // // if (!isCastNear) // { // if (GameManager.Instance.currentLevelPopUp != null) // { // return; // } // // if (player.GetButtonDown("FarCastButton")) // { // isCastFar = true; // } // else if (player.GetButtonUp("FarCastButton") && isCastFar) // { // isCastFar = false; // } // } // if (player.GetButtonTimePressed("resetCast") >= 1.0) { isCastReset = true; } else { isCastReset = false; } if (player.GetButtonDown("reelDragUp")) { isReelDragUp = true; } else { isReelDragUp = false; } if (player.GetButtonDown("reelDragDown")) { isReelDragDown = true; } else { isReelDragDown = false; } if (player.GetButtonDown("headFlashLight")) { isHeadFlashLight = !isHeadFlashLight; } if (player.GetButtonDown("floatDeepthUp")) { isDeepthFloatUp = true; } else { isDeepthFloatUp = false; } if (player.GetButtonDown("floatDeepthDown")) { isDeepthFloatDown = true; } else { isDeepthFloatDown = false; } if (player.GetButtonDown("Reeling")) { isReelReeling = true; } if (player.GetButtonUp("Reeling")) { isReelReeling = false; } if (LT && !RB) { if (reelUpClicked) { if (slowDownFloat >= 1f) { isDeepthFloatUp = true; slowDownFloat = 0f; } else { isDeepthFloatUp = false; slowDownFloat += Time.deltaTime * 10f; } } if (reelDownClicked) { if (slowDownFloat >= 1f) { isDeepthFloatDown = true; slowDownFloat = 0f; } else { isDeepthFloatDown = false; slowDownFloat += Time.deltaTime * 10f; } } } } private bool CanPullUpRod() { // if (FScriptsHandler.Instance == null) // { // return false; // } // // if (FScriptsHandler.Instance.m_PlayerMain == null) // { // return false; // } // // if (FScriptsHandler.Instance.m_PlayerMain.currentRod == null) // { // return false; // } // // if (FScriptsHandler.Instance.m_PlayerMain.currentRod.fishingLine == null) // { // return false; // } // // if (FScriptsHandler.Instance.m_PlayerMain.currentRod.fishingLine.ropeToHookDistance <= 1f) // { // if (FScriptsHandler.Instance.m_PlayerMain.currentRod.currentFish != null || // FScriptsHandler.Instance.m_PlayerMain.currentRod.takeFish != null) // { // return true; // } // // return false; // } return true; } public static void ResetMouseButtonsTriggers() { isCastNear = false; isCastFar = false; isReelReeling = false; } private void OnApplicationFocus(bool hasFocus) { isPaused = !hasFocus; } private void OnApplicationPause(bool pauseStatus) { isPaused = pauseStatus; } }