OpenBarnyard
 
Loading...
Searching...
No Matches
AGameState.h
Go to the documentation of this file.
1#pragma once
2#include "GUI/AGUI2Element.h"
5#include "Sound/ASound.h"
6
7#include <Toshi/T2DList.h>
9
10class AGameState : public Toshi::TObject
11 , public Toshi::T2DList<AGameState>::Node
12{
13public:
14 using OVERLAY = TUINT;
22
24
25public:
26 TDECLARE_CLASS( AGameState, Toshi::TObject );
27
28 template <class Result, class... Args>
29 using t_ExecuteForChildCb = Result ( AGameState::* )( Args... args );
30
31 struct HUDParams
32 {
43
44 void SetFlags( TUINT a_uiFlags )
45 {
46 if ( a_uiFlags != m_uiFlags )
47 {
48 m_uiFlags = a_uiFlags;
49 }
50 }
51 };
52
53public:
54 AGameState();
56
57 //-----------------------------------------------------------------------------
58 // Own methods
59 //-----------------------------------------------------------------------------
60 virtual TBOOL ProcessInput( const Toshi::TInputInterface::InputEvent* a_pInputEvent );
61 virtual TBOOL ProcessCommand( AInputCommand a_eInputCommand, const Toshi::TInputInterface::InputEvent* a_pInputEvent, TBOOL& a_rStopEvents );
62 virtual TBOOL Unknown1( void* a_pUnk1, void* a_pUnk2 );
63 virtual void Unknown2( void* a_pUnk1 );
64 virtual void Unknown3( void* a_pUnk1 );
65 virtual void Unknown4( void* a_pUnk1 );
66 virtual void Unknown5();
67 virtual TBOOL Unknown6();
68 virtual ASoundId GetSound();
69 virtual TBOOL Unknown7();
70 virtual void Unknown8();
71 virtual void OnStarted();
72 virtual void Unknown10();
73 virtual void Unknown11( void* a_pUnk1, void* a_pUnk2 );
74 virtual void Unknown12( void* a_pUnk1, void* a_pUnk2 );
75 virtual TFLOAT GetFOV();
76 virtual TBOOL OnUpdate( TFLOAT a_fDeltaTime );
77 virtual void OnInsertion();
78 virtual void OnRemoval();
79 virtual void OnSuspend();
80 virtual void OnResume( AGameState* a_pPreviousState );
81 virtual void OnActivate();
82 virtual void OnDeactivate();
83
84 TBOOL SendInputCommands( const Toshi::TInputInterface::InputEvent* a_pEvent );
85
86 void SetInputMap( const Toshi::TPString8& a_MapName );
87
88 void Activate();
89 void Deactivate();
90 void Suspend();
91 void Remove();
92
93 void Destroy();
94 void Destroy( TBOOL a_bDeactivate );
95
96 void SetOverlay( OVERLAY a_eOverlay ) { m_eOverlayColorIndex = a_eOverlay; }
98
99 template <class RetT, class... Args>
100 void ExecuteForAllChildStates( t_ExecuteForChildCb<RetT, Args...> a_fnCallback, TUINT32 a_uiOffset, Args... args )
101 {
103 {
104 auto pGameState = TREINTERPRETCAST(
105 AGameState*,
106 TREINTERPRETCAST( uintptr_t, TSTATICCAST( AGameState, it ) ) + a_uiOffset
107 );
108
109 ( pGameState->*a_fnCallback )( args... );
110 }
111 }
112
113 template <class... Args>
115 {
117 {
118 auto pGameState = TREINTERPRETCAST(
119 AGameState*,
120 TREINTERPRETCAST( uintptr_t, TSTATICCAST( AGameState, it ) ) + a_uiOffset
121 );
122
123 TBOOL bResult = ( pGameState->*a_fnCallback )( args... );
124
125 if ( bResult )
126 {
127 return TTRUE;
128 }
129 }
130
131 return TFALSE;
132 }
133
134protected:
137 Toshi::T2DList<AGameState> m_ChildStates;
144};
Input system interface for the Toshi engine.
#define TSTATICCAST(POINTERTYPE, VALUE)
Definition Defines.h:69
#define TREINTERPRETCAST(TYPE, VALUE)
Definition Defines.h:68
#define T2_FOREACH(vecName, iteratorName)
Definition T2Iterator.h:4
#define TDECLARE_CLASS(THIS_CLASS, PARENT_CLASS)
Definition TObject.h:38
unsigned int TUINT
Definition Typedefs.h:8
float TFLOAT
Definition Typedefs.h:4
uint32_t TUINT32
Definition Typedefs.h:13
#define TFALSE
Definition Typedefs.h:24
#define TTRUE
Definition Typedefs.h:25
bool TBOOL
Definition Typedefs.h:6
AInputCommand
Definition AInputMap.h:12
TINT32 ASoundId
Definition ASoundLegacy.h:5
virtual void Unknown10()
virtual void Unknown4(void *a_pUnk1)
virtual void OnActivate()
virtual TFLOAT GetFOV()
virtual TBOOL OnUpdate(TFLOAT a_fDeltaTime)
virtual ASoundId GetSound()
virtual void OnRemoval()
void ExecuteForAllChildStates(t_ExecuteForChildCb< RetT, Args... > a_fnCallback, TUINT32 a_uiOffset, Args... args)
Definition AGameState.h:100
virtual void Unknown2(void *a_pUnk1)
TUINT OVERLAY
Definition AGameState.h:14
TFLOAT m_fFOV
Definition AGameState.h:143
virtual void OnSuspend()
virtual TBOOL ProcessInput(const Toshi::TInputInterface::InputEvent *a_pInputEvent)
Result(AGameState::*)(Args... args) t_ExecuteForChildCb
Definition AGameState.h:29
void Activate()
TBOOL m_bIsActivated
Definition AGameState.h:141
virtual void OnStarted()
virtual TBOOL Unknown7()
virtual void Unknown3(void *a_pUnk1)
friend class AGameStateController
Definition AGameState.h:23
virtual void OnDeactivate()
AInputMap * m_pInputMap
Definition AGameState.h:138
TBOOL ExecuteForOneChildState(t_ExecuteForChildCb< TBOOL, Args... > a_fnCallback, TUINT32 a_uiOffset, Args... args)
Definition AGameState.h:114
virtual void Unknown12(void *a_pUnk1, void *a_pUnk2)
virtual void Unknown8()
void Suspend()
void Destroy()
OVERLAY GetOverlay() const
Definition AGameState.h:97
virtual void Unknown5()
TBOOL m_bWasInserted
Definition AGameState.h:140
AGUI2Element m_GUIElement
Definition AGameState.h:142
AGameState * m_pOwnerState
Definition AGameState.h:139
void SetInputMap(const Toshi::TPString8 &a_MapName)
virtual void OnInsertion()
OVERLAY m_eOverlayColorIndex
Definition AGameState.h:136
virtual void Unknown11(void *a_pUnk1, void *a_pUnk2)
TBOOL SendInputCommands(const Toshi::TInputInterface::InputEvent *a_pEvent)
virtual TBOOL Unknown1(void *a_pUnk1, void *a_pUnk2)
Toshi::T2DList< AGameState > m_ChildStates
Definition AGameState.h:137
virtual TBOOL Unknown6()
void Remove()
virtual TBOOL ProcessCommand(AInputCommand a_eInputCommand, const Toshi::TInputInterface::InputEvent *a_pInputEvent, TBOOL &a_rStopEvents)
virtual void OnResume(AGameState *a_pPreviousState)
void SetOverlay(OVERLAY a_eOverlay)
Definition AGameState.h:96
HUDParams m_HUDParams
Definition AGameState.h:135
void Deactivate()
void SetFlags(TUINT a_uiFlags)
Definition AGameState.h:44