OpenBarnyard
 
Loading...
Searching...
No Matches
AGUI2Menu.h
Go to the documentation of this file.
1#pragma once
2#include "AGUI2Element.h"
3#include "Input/AInputMap.h"
4#include "Sound/ASound.h"
5
6class AGUI2MenuItem;
7
8class AGUI2Menu : public AGUI2Element
9{
10public:
22
23 using ActivateCallback = void ( * )( void* a_pUserData, AGUI2MenuItem* a_pItem );
24 using FocusCallback = void ( * )( void* a_pUserData, AGUI2MenuItem* a_pOldFocus, AGUI2MenuItem* a_pNewFocus );
25
26public:
27 // constructors/destructor
28 AGUI2Menu();
29 ~AGUI2Menu();
30
31 void Update( TFLOAT a_fDeltaTime );
32 TBOOL ProcessInputEvent( const Toshi::TInputInterface::InputEvent* a_pEvent );
33 TBOOL ProcessInputCommand( AInputCommand a_eCommand, const Toshi::TInputInterface::InputEvent* a_pEvent );
34
35 void AddMenuItem( AGUI2MenuItem& a_rMenuItem );
36 void SetFocusAt( AGUI2MenuItem& a_rMenuItem );
37
38 // Reflows elements vertically and calculates dimensions
40
42
43 void SetMenuAlpha( TFLOAT a_fAlpha, TFLOAT a_fShadowAlpha = -1.0f );
44 void SetMouseStateDirty() { m_bMouseStateDirty = TTRUE; }
45
46 AGUI2MenuItem* GetFocusedMenuItem() const { return m_pFocusedMenuItem; }
47 AGUI2MenuItem* GetHoveredMenuItem() const { return m_pHoveredMenuItem; }
48 AGUI2MenuItem* GetLastMenuItem() const { return m_pLastMenuItem; }
49
50 void SetCallbackUserData( void* a_pUserData ) { m_pCallbackUserData = a_pUserData; }
51 void SetItemActivationCallback( ActivateCallback a_fnCallback ) { m_fnActivateCallback = a_fnCallback; }
52 void SetItemFocusCallback( FocusCallback a_fnCallback ) { m_fnFocusCallback = a_fnCallback; }
53
54 void SetFocusSound( ASoundId a_eSound ) { m_eFocusSound = a_eSound; }
55 void SetSelectSound( ASoundId a_eSound ) { m_eSelectSound = a_eSound; }
56 void SetBackSound( ASoundId a_eSound ) { m_eBackSound = a_eSound; }
57 void SetNegativeSound( ASoundId a_eSound ) { m_eNegativeSound = a_eSound; }
58
59private:
60 void ActivateFocusedButton();
61
62private:
63 TFLOAT m_fItemSpacing;
64 AGUI2MenuItem* m_pDefaultFocusElement;
65 AGUI2MenuItem* m_pCancelItem;
66 ASoundId m_eFocusSound;
67 ASoundId m_eSelectSound;
68 ASoundId m_eBackSound;
69 ASoundId m_eNegativeSound;
70 AGUI2MenuItem* m_pLastMenuItem;
71 AGUI2MenuItem* m_pFocusedMenuItem;
72 ACTIONFLAGS m_eActionFlags;
73 TINT m_Unk3;
74 TINT m_Unk4;
75 ActivateCallback m_fnActivateCallback;
76 FocusCallback m_fnFocusCallback;
77 void* m_pCallbackUserData;
78 TFLOAT m_fTime;
79 TBOOL m_bFlag1;
80 TBOOL m_bHorizontalFlow;
81 TINT m_iNumMenuItems;
82 TBOOL m_bMouseStateDirty;
83 AGUI2MenuItem* m_pHoveredMenuItem;
84};
85
87{
88public:
89 friend class AGUI2Menu;
90
97
98public:
99 // constructors/destructor
102
103 void LinkMenuItemBefore( AGUI2MenuItem& a_rLinkAfter );
104
105 TBOOL IsEnabled() const { return m_bEnabled; }
106 TBOOL CanFocus() const { return IsEnabled() && IsVisible(); }
107
108 AGUI2MenuItem* GetNextMenuItem() const { return m_pNextMenuItem; }
109 AGUI2MenuItem* GetPrevMenuItem() const { return m_pPrevMenuItem; }
110
111 //-----------------------------------------------------------------------------
112 // AGUI2Element
113 //-----------------------------------------------------------------------------
114 virtual void SetAlpha( TFLOAT a_fAlpha ) OVERRIDE;
115
116 //-----------------------------------------------------------------------------
117 // Own methods
118 //-----------------------------------------------------------------------------
119 virtual void OnFocus();
120 virtual void OnFocusLost();
121 virtual void OnUpdate( TFLOAT a_fDeltaTime );
122 virtual COMMANDRESULT OnInputCommand( AGUI2Menu::ACTIONFLAGS& a_rActionFlags );
123 virtual void SetEnabled( TBOOL a_bEnabled );
124 virtual TFLOAT GetFlowVisualOffset();
125 virtual TFLOAT GetFlowOffset();
126
127private:
128 AGUI2MenuItem* m_pNextMenuItem;
129 AGUI2MenuItem* m_pPrevMenuItem;
130 TBOOL m_bEnabled;
131};
#define OVERRIDE
Definition Defines.h:12
#define BITFLAG(x)
Definition Defines.h:10
float TFLOAT
Definition Typedefs.h:4
uint32_t TUINT32
Definition Typedefs.h:13
int TINT
Definition Typedefs.h:7
#define TTRUE
Definition Typedefs.h:25
bool TBOOL
Definition Typedefs.h:6
AInputCommand
Definition AInputMap.h:12
TINT32 ASoundId
Definition ASoundLegacy.h:5
TBOOL IsVisible() const
void SetMouseStateDirty()
Definition AGUI2Menu.h:44
AGUI2MenuItem * GetFocusedMenuItem() const
Definition AGUI2Menu.h:46
void SetMenuAlpha(TFLOAT a_fAlpha, TFLOAT a_fShadowAlpha=-1.0f)
void(*)(void *a_pUserData, AGUI2MenuItem *a_pOldFocus, AGUI2MenuItem *a_pNewFocus) FocusCallback
Definition AGUI2Menu.h:24
void SetItemActivationCallback(ActivateCallback a_fnCallback)
Definition AGUI2Menu.h:51
void SetCallbackUserData(void *a_pUserData)
Definition AGUI2Menu.h:50
AGUI2MenuItem * GetHoveredMenuItem() const
Definition AGUI2Menu.h:47
void SetSelectSound(ASoundId a_eSound)
Definition AGUI2Menu.h:55
AGUI2MenuItem * GetLastMenuItem() const
Definition AGUI2Menu.h:48
void SetNegativeSound(ASoundId a_eSound)
Definition AGUI2Menu.h:57
TUINT32 ACTIONFLAGS
Definition AGUI2Menu.h:11
void(*)(void *a_pUserData, AGUI2MenuItem *a_pItem) ActivateCallback
Definition AGUI2Menu.h:23
void SetItemFocusCallback(FocusCallback a_fnCallback)
Definition AGUI2Menu.h:52
void SetFocusSound(ASoundId a_eSound)
Definition AGUI2Menu.h:54
void SetBackSound(ASoundId a_eSound)
Definition AGUI2Menu.h:56
TBOOL ProcessInputCommand(AInputCommand a_eCommand, const Toshi::TInputInterface::InputEvent *a_pEvent)
void Update(TFLOAT a_fDeltaTime)
Definition AGUI2Menu.cpp:48
TBOOL TriggerButtonPress(AGUI2MenuItem &a_rMenuItem)
void AddMenuItem(AGUI2MenuItem &a_rMenuItem)
@ ACTIONFLAGS_UP
Definition AGUI2Menu.h:15
@ ACTIONFLAGS_RIGHT
Definition AGUI2Menu.h:18
@ ACTIONFLAGS_LEFT
Definition AGUI2Menu.h:17
@ ACTIONFLAGS_OK
Definition AGUI2Menu.h:19
@ ACTIONFLAGS_CANCEL
Definition AGUI2Menu.h:20
@ ACTIONFLAGS_DOWN
Definition AGUI2Menu.h:16
@ ACTIONFLAGS_NONE
Definition AGUI2Menu.h:14
void SetFocusAt(AGUI2MenuItem &a_rMenuItem)
void ReflowChildrenVertically()
TBOOL ProcessInputEvent(const Toshi::TInputInterface::InputEvent *a_pEvent)
virtual void SetEnabled(TBOOL a_bEnabled)
AGUI2MenuItem * GetPrevMenuItem() const
Definition AGUI2Menu.h:109
@ COMMANDRESULT_CANCEL
Definition AGUI2Menu.h:95
TBOOL IsEnabled() const
Definition AGUI2Menu.h:105
virtual COMMANDRESULT OnInputCommand(AGUI2Menu::ACTIONFLAGS &a_rActionFlags)
virtual void SetAlpha(TFLOAT a_fAlpha) override
virtual void OnFocus()
void LinkMenuItemBefore(AGUI2MenuItem &a_rLinkAfter)
TBOOL CanFocus() const
Definition AGUI2Menu.h:106
virtual void OnFocusLost()
virtual TFLOAT GetFlowVisualOffset()
AGUI2MenuItem * GetNextMenuItem() const
Definition AGUI2Menu.h:108
virtual TFLOAT GetFlowOffset()
virtual void OnUpdate(TFLOAT a_fDeltaTime)
friend class AGUI2Menu
Definition AGUI2Menu.h:89