libgui 2.01
libgui is a GUI library for the GameCube, Wii, and Wii U
 
Loading...
Searching...
No Matches
GuiTrigger.h
1/****************************************************************************
2 * libgui
3 * Daryl Borth 2009-2026
4 * GuiTrigger.h
5 *
6 * Menu input trigger management.
7 * Acts as a generic UI condition matcher for GuiElements
8 ***************************************************************************/
9#pragma once
10
11#include <cstdint>
12
15enum class TRIGGER_TYPE {
16 SIMPLE,
17 HELD,
18 BUTTON_ONLY,
19 BUTTON_ONLY_IN_FOCUS
20};
21
24enum class TRIGGER_ACTION {
25 NONE, // Explicit button mask provided
26 PRIMARY, // Semantic Accept: A (Vertical) or 2 (Sideways)
27 SECONDARY // Semantic Cancel: B (Vertical) or 1 (Sideways)
28};
29
34class GuiTrigger {
35public:
36 GuiTrigger();
37 ~GuiTrigger() = default;
38
40 // Automatically resolves to A/2 or B/1 based on controller orientation
41 void setPrimaryTrigger(int ch = -1);
43 void setSecondaryTrigger(int ch = -1);
44
48 void setSimpleTrigger(int ch, uint32_t buttonMask);
49
53 void setHeldTrigger(int ch, uint32_t buttonMask);
54
58 void setButtonOnlyTrigger(int ch, uint32_t buttonMask);
59
63 void setButtonOnlyInFocusTrigger(int ch, uint32_t buttonMask);
64
66 bool isClicked(const InputController* controller) const;
68 bool isHeld(const InputController* controller) const;
70 bool isReleased(const InputController* controller) const;
71
73 TRIGGER_TYPE getType() const { return type; }
75 int getChannel() const { return chan; }
76
77private:
78 TRIGGER_TYPE type;
79 TRIGGER_ACTION action;
80 int chan;
81 uint32_t conditionMask;
82
84 uint32_t resolveMask(const InputController* controller) const;
85};
void setSimpleTrigger(int ch, uint32_t buttonMask)
Sets a simple trigger.
bool isReleased(const InputController *controller) const
TRIGGER_TYPE getType() const
Accessors.
Definition GuiTrigger.h:73
void setButtonOnlyInFocusTrigger(int ch, uint32_t buttonMask)
Sets a button-only trigger.
bool isClicked(const InputController *controller) const
bool isHeld(const InputController *controller) const
void setPrimaryTrigger(int ch=-1)
Semantic Triggers.
void setHeldTrigger(int ch, uint32_t buttonMask)
Sets a held trigger.
void setButtonOnlyTrigger(int ch, uint32_t buttonMask)
Sets a button-only trigger.
void setSecondaryTrigger(int ch=-1)
int getChannel() const
Definition GuiTrigger.h:75
Logical controller for one input channel.
TRIGGER_TYPE
How a GuiTrigger matches input: simple, held, button-only, or button-only-in-focus.
Definition GuiTrigger.h:15
TRIGGER_ACTION
Whether a GuiTrigger uses an explicit button mask or a semantic primary (Accept) / secondary (Cancel)...
Definition GuiTrigger.h:24