using System; using System.Runtime.InteropServices; // using Rewired; using UnityEngine; using UnityEngine.InputSystem; namespace NBF { public class InputManager : MonoBehaviour { public static InputManager Instance { get; private set; } public static bool IsOp1; public static bool IsOp2; public static event Action OnOp1Action; public static event Action OnOp2Action; public static event Action OnUseAction; public static event Action OnUse2Action; public static event Action OnSelectItemAction; public static event Action OnSelectBaitAction; public static event Action OnSelectFoodAction; /// /// 快速选择数值 /// public static event Action OnQuickIndexAction; /// /// 使用手电筒 /// public static event Action OnUseTorchAction; /// /// 使用抄网 /// public static event Action OnUseBrailAction; /// /// 使用望远镜 /// public static event Action OnUseTelescopeAction; /// /// 添加浮漂 /// public static event Action OnAddBobAction; /// /// 减少浮漂 /// public static event Action OnSubBobAction; /// /// 返回背包 /// public static event Action OnToBagAction; /// /// 帮助 /// public static event Action OnHelpAction; /// /// 聊天 /// public static event Action OnChatAction; /// /// 物品信息 /// public static event Action OnInfoAction; /// /// 技能 /// public static event Action OnSkillAction; /// /// 打开背包 /// public static event Action OnOpenBagAction; /// /// 打开鱼护 /// public static event Action OnKeepnetAction; /// /// 打开制造 /// public static event Action OnMakeAction; /// /// 打开地图 /// public static event Action OnMapAction; /// /// 奔跑 /// public static event Action OnRunAction; /// /// 触发交互游戏对象 /// public static event Action OnInteractiveObjectAction; public static PlayerInputControl PlayerInputControl { get; private set; } private void Awake() { Instance = this; DontDestroyOnLoad(gameObject); } public static Vector2 GetMovementInput() { return PlayerInputControl.Normal.Move?.ReadValue() ?? Vector2.zero; } public static Vector2 GetLookInput() { return PlayerInputControl.Normal.Look?.ReadValue() ?? Vector2.zero; } private void Start() { PlayerInputControl = new PlayerInputControl(); PlayerInputControl.Enable(); PlayerInputControl.Normal.Enable(); AddEvent(); } private void OnDestroy() { RemoveEvent(); } private void AddEvent() { PlayerInputControl.Normal.Run.performed += OnRun; PlayerInputControl.Normal.Run.canceled += OnRun; PlayerInputControl.Normal.Op1.performed += OnOp1; PlayerInputControl.Normal.Op1.canceled += OnOp1; PlayerInputControl.Normal.Op2.performed += OnOp2; PlayerInputControl.Normal.Op2.canceled += OnOp2; PlayerInputControl.Normal.Use.performed += OnUse; PlayerInputControl.Normal.Use.canceled += OnUse; PlayerInputControl.Normal.Use2.performed += OnUse2; PlayerInputControl.Normal.Use2.canceled += OnUse2; PlayerInputControl.Normal.SelectItem.performed += OnSelectItem; PlayerInputControl.Normal.SelectItem.canceled += OnSelectItem; PlayerInputControl.Normal.SelectFood.performed += OnSelectFood; PlayerInputControl.Normal.SelectFood.canceled += OnSelectFood; PlayerInputControl.Normal.SelectBait.performed += OnSelectBait; PlayerInputControl.Normal.SelectBait.canceled += OnSelectBait; PlayerInputControl.Normal.UseTorch.performed += OnUseTorch; PlayerInputControl.Normal.UseTorch.canceled += OnUseTorch; PlayerInputControl.Normal.UseTelescope.performed += OnUseTelescope; PlayerInputControl.Normal.UseTelescope.canceled += OnUseTelescope; PlayerInputControl.Normal.UseBrail.performed += OnUseBrail; PlayerInputControl.Normal.UseBrail.canceled += OnUseBrail; PlayerInputControl.Normal.AddBob.performed += OnAddBob; PlayerInputControl.Normal.AddBob.canceled += OnAddBob; PlayerInputControl.Normal.SubBob.performed += OnSubBob; PlayerInputControl.Normal.SubBob.canceled += OnSubBob; PlayerInputControl.Normal.ToBag.performed += OnToBag; PlayerInputControl.Normal.ToBag.canceled += OnToBag; PlayerInputControl.Normal.Help.performed += OnHelp; PlayerInputControl.Normal.Help.canceled += OnHelp; PlayerInputControl.Normal.Chat.performed += OnChat; PlayerInputControl.Normal.Chat.canceled += OnChat; PlayerInputControl.Normal.Info.performed += OnInfo; PlayerInputControl.Normal.Info.canceled += OnInfo; PlayerInputControl.Normal.Skill.performed += OnSkill; PlayerInputControl.Normal.Skill.canceled += OnSkill; PlayerInputControl.Normal.OpenBag.performed += OnOpenBag; PlayerInputControl.Normal.OpenBag.canceled += OnOpenBag; PlayerInputControl.Normal.Keepnet.performed += OnKeepnet; PlayerInputControl.Normal.Keepnet.canceled += OnKeepnet; PlayerInputControl.Normal.Make.performed += OnMake; PlayerInputControl.Normal.Make.canceled += OnMake; PlayerInputControl.Normal.Map.performed += OnMap; PlayerInputControl.Normal.Map.canceled += OnMap; PlayerInputControl.Normal.Quick1.performed += OnQuick1; PlayerInputControl.Normal.Quick2.performed += OnQuick2; PlayerInputControl.Normal.Quick3.performed += OnQuick3; PlayerInputControl.Normal.Quick4.performed += OnQuick4; PlayerInputControl.Normal.Quick5.performed += OnQuick5; PlayerInputControl.Normal.Quick6.performed += OnQuick6; PlayerInputControl.Normal.Quick7.performed += OnQuick7; PlayerInputControl.Normal.Quick8.performed += OnQuick8; PlayerInputControl.Normal.Quick9.performed += OnQuick9; } private void RemoveEvent() { PlayerInputControl.Normal.Run.performed -= OnRun; PlayerInputControl.Normal.Run.canceled -= OnRun; PlayerInputControl.Normal.Op1.performed -= OnOp1; PlayerInputControl.Normal.Op1.canceled -= OnOp1; PlayerInputControl.Normal.Op2.performed -= OnOp2; PlayerInputControl.Normal.Op2.canceled -= OnOp2; PlayerInputControl.Normal.Use.performed -= OnUse; PlayerInputControl.Normal.Use.canceled -= OnUse; PlayerInputControl.Normal.Use2.performed -= OnUse2; PlayerInputControl.Normal.Use2.canceled -= OnUse2; PlayerInputControl.Normal.SelectItem.performed -= OnSelectItem; PlayerInputControl.Normal.SelectItem.canceled -= OnSelectItem; PlayerInputControl.Normal.SelectFood.performed -= OnSelectFood; PlayerInputControl.Normal.SelectFood.canceled -= OnSelectFood; PlayerInputControl.Normal.SelectBait.performed -= OnSelectBait; PlayerInputControl.Normal.SelectBait.canceled -= OnSelectBait; PlayerInputControl.Normal.UseTorch.performed -= OnUseTorch; PlayerInputControl.Normal.UseTorch.canceled -= OnUseTorch; PlayerInputControl.Normal.UseTelescope.performed -= OnUseTelescope; PlayerInputControl.Normal.UseTelescope.canceled -= OnUseTelescope; PlayerInputControl.Normal.UseBrail.performed -= OnUseBrail; PlayerInputControl.Normal.UseBrail.canceled -= OnUseBrail; PlayerInputControl.Normal.AddBob.performed -= OnAddBob; PlayerInputControl.Normal.AddBob.canceled -= OnAddBob; PlayerInputControl.Normal.SubBob.performed -= OnSubBob; PlayerInputControl.Normal.SubBob.canceled -= OnSubBob; PlayerInputControl.Normal.ToBag.performed -= OnToBag; PlayerInputControl.Normal.ToBag.canceled -= OnToBag; PlayerInputControl.Normal.Help.performed -= OnHelp; PlayerInputControl.Normal.Help.canceled -= OnHelp; PlayerInputControl.Normal.Chat.performed -= OnChat; PlayerInputControl.Normal.Chat.canceled -= OnChat; PlayerInputControl.Normal.Info.performed -= OnInfo; PlayerInputControl.Normal.Info.canceled -= OnInfo; PlayerInputControl.Normal.Skill.performed -= OnSkill; PlayerInputControl.Normal.Skill.canceled -= OnSkill; PlayerInputControl.Normal.OpenBag.performed -= OnOpenBag; PlayerInputControl.Normal.OpenBag.canceled -= OnOpenBag; PlayerInputControl.Normal.Keepnet.performed -= OnKeepnet; PlayerInputControl.Normal.Keepnet.canceled -= OnKeepnet; PlayerInputControl.Normal.Make.performed -= OnMake; PlayerInputControl.Normal.Make.canceled -= OnMake; PlayerInputControl.Normal.Map.performed -= OnMap; PlayerInputControl.Normal.Map.canceled -= OnMap; PlayerInputControl.Normal.Quick1.performed -= OnQuick1; PlayerInputControl.Normal.Quick2.performed -= OnQuick2; PlayerInputControl.Normal.Quick3.performed -= OnQuick3; PlayerInputControl.Normal.Quick4.performed -= OnQuick4; PlayerInputControl.Normal.Quick5.performed -= OnQuick5; PlayerInputControl.Normal.Quick6.performed -= OnQuick6; PlayerInputControl.Normal.Quick7.performed -= OnQuick7; PlayerInputControl.Normal.Quick8.performed -= OnQuick8; PlayerInputControl.Normal.Quick9.performed -= OnQuick9; } public void OnInteractiveObject(InteractiveObject interactiveObject) { Debug.LogError($"OnInteractiveObject {interactiveObject != null}"); OnInteractiveObjectAction?.Invoke(interactiveObject); } private void OnRun(InputAction.CallbackContext context) { OnRunAction?.Invoke(context.performed); } private void OnOp1(InputAction.CallbackContext context) { IsOp1 = context.performed; OnOp1Action?.Invoke(IsOp1); } private void OnOp2(InputAction.CallbackContext context) { IsOp2 = context.performed; OnOp2Action?.Invoke(IsOp2); } private void OnUse(InputAction.CallbackContext context) { if (context.performed) { OnUseAction?.Invoke(); } } private void OnUse2(InputAction.CallbackContext context) { if (context.performed) { OnUse2Action?.Invoke(); } } private void OnSelectItem(InputAction.CallbackContext context) { OnSelectItemAction?.Invoke(context.performed); } private void OnSelectFood(InputAction.CallbackContext context) { OnSelectFoodAction?.Invoke(context.performed); } private void OnSelectBait(InputAction.CallbackContext context) { OnSelectBaitAction?.Invoke(context.performed); } private void OnUseTorch(InputAction.CallbackContext context) { OnUseTorchAction?.Invoke(context.performed); } private void OnUseTelescope(InputAction.CallbackContext context) { OnUseTelescopeAction?.Invoke(context.performed); } private void OnUseBrail(InputAction.CallbackContext context) { OnUseBrailAction?.Invoke(context.performed); } private void OnAddBob(InputAction.CallbackContext context) { OnSubBobAction?.Invoke(context.performed); } private void OnSubBob(InputAction.CallbackContext context) { OnSubBobAction?.Invoke(context.performed); } private void OnToBag(InputAction.CallbackContext context) { OnToBagAction?.Invoke(context.performed); } private void OnHelp(InputAction.CallbackContext context) { OnHelpAction?.Invoke(context.performed); } private void OnChat(InputAction.CallbackContext context) { OnChatAction?.Invoke(context.performed); } private void OnInfo(InputAction.CallbackContext context) { OnInfoAction?.Invoke(context.performed); } private void OnSkill(InputAction.CallbackContext context) { OnSkillAction?.Invoke(context.performed); } private void OnOpenBag(InputAction.CallbackContext context) { OnOpenBagAction?.Invoke(context.performed); } private void OnKeepnet(InputAction.CallbackContext context) { OnKeepnetAction?.Invoke(context.performed); } private void OnMake(InputAction.CallbackContext context) { OnMakeAction?.Invoke(context.performed); } private void OnMap(InputAction.CallbackContext context) { OnMapAction?.Invoke(context.performed); } private void OnQuick1(InputAction.CallbackContext context) { if (context.performed) { OnQuickIndexAction?.Invoke(1); } } private void OnQuick2(InputAction.CallbackContext context) { if (context.performed) { OnQuickIndexAction?.Invoke(2); } } private void OnQuick3(InputAction.CallbackContext context) { if (context.performed) { OnQuickIndexAction?.Invoke(3); } } private void OnQuick4(InputAction.CallbackContext context) { if (context.performed) { OnQuickIndexAction?.Invoke(4); } } private void OnQuick5(InputAction.CallbackContext context) { if (context.performed) { OnQuickIndexAction?.Invoke(5); } } private void OnQuick6(InputAction.CallbackContext context) { if (context.performed) { OnQuickIndexAction?.Invoke(6); } } private void OnQuick7(InputAction.CallbackContext context) { if (context.performed) { OnQuickIndexAction?.Invoke(7); } } private void OnQuick8(InputAction.CallbackContext context) { if (context.performed) { OnQuickIndexAction?.Invoke(8); } } private void OnQuick9(InputAction.CallbackContext context) { if (context.performed) { OnQuickIndexAction?.Invoke(9); } } } }