diff --git a/Assets/Scripts/Components/UI/OverviewMenu.cs b/Assets/Scripts/Components/UI/OverviewMenu.cs index fe4edf9..02d1907 100644 --- a/Assets/Scripts/Components/UI/OverviewMenu.cs +++ b/Assets/Scripts/Components/UI/OverviewMenu.cs @@ -14,7 +14,8 @@ using UnityEngine.InputSystem; /// switch game modes (via ) or open the session browser / /// match results overlay, and every click closes the panel. Mode buttons are only shown for modes present in the current role-scoped set /// (); the active mode's button is disabled. Hotkeys mirror the -/// buttons: C toggles the pose menu, V switches to paint mode (E = taunt lives in GameModeManager). Attach to the +/// buttons: C toggles the pose menu (or cycles the pose directly with 2 or fewer poses), V switches to +/// paint mode (E = taunt lives in GameModeManager). Attach to the /// always-active canvas root; is the toggled visual child. /// public class OverviewMenu : MonoBehaviour @@ -50,7 +51,8 @@ public class OverviewMenu : MonoBehaviour [Tooltip("Triggers the hider's manual radar ping (same as the E key) and closes the menu. Only shown " + "for a hider during Seek.")] [SerializeField] private Button tauntButton; - [Tooltip("Opens the pose selection menu. Only shown while the local player has selectable poses.")] + [Tooltip("Opens the pose selection menu (or cycles the pose directly with 2 or fewer poses). Only " + + "shown while the local player has selectable poses.")] [SerializeField] private Button poseButton; private bool _open; @@ -174,6 +176,13 @@ public class OverviewMenu : MonoBehaviour private void OnPose() { + // Small pose set (hunter): no radial menu, the button/hotkey just cycles to the next pose. + if (poseMenu && poseMenu.CyclesDirectly) + { + Close(resume: true); + poseMenu.CyclePose(); + return; + } Close(resume: false); if (!(poseMenu && poseMenu.Open()) && gameMode) gameMode.SetPaused(false); diff --git a/Assets/Scripts/Components/UI/PoseMenu.cs b/Assets/Scripts/Components/UI/PoseMenu.cs index 2d319fc..6d3e2df 100644 --- a/Assets/Scripts/Components/UI/PoseMenu.cs +++ b/Assets/Scripts/Components/UI/PoseMenu.cs @@ -54,6 +54,24 @@ public class PoseMenu : MonoBehaviour /// button otherwise (no player bound, or an empty pose list). public bool CanOpen => LocalPoseController() && LocalPoseController().Poses.Count > 0; + /// With 2 or fewer poses (the hunter's set) a radial menu is pointless - the pose button + /// and the C hotkey cycle directly via instead of opening the overlay. + public bool CyclesDirectly + { + get + { + PlayerPoseController pose = LocalPoseController(); + return pose && pose.Poses.Count > 0 && pose.Poses.Count <= 2; + } + } + + /// Advances to the next pose (wrapping) without opening the overlay. + public void CyclePose() + { + PlayerPoseController pose = LocalPoseController(); + if (pose && pose.Poses.Count > 0) pose.SetPoseIndex(pose.CurrentIndex + 1); + } + /// Opens the modal overlay and (re)builds the radial items; false when there is nothing /// to show, so the caller can drop the pause instead of stranding it. public bool Open()