OpenBarnyard
 
Loading...
Searching...
No Matches
AGameStateController Class Reference

#include <AGameStateController.h>

Inheritance diagram for AGameStateController:

Classes

struct  OverlayData
 

Public Types

using ThisClass = AGameStateController
 
using BaseClass = Toshi::TTask
 

Public Member Functions

virtual Toshi::TClass * GetClass () override
 
 AGameStateController ()
 
 ~AGameStateController ()
 
virtual TBOOL OnCreate () override
 
virtual TBOOL OnUpdate (TFLOAT a_fDeltaTime) override
 
virtual void OnDestroy () override
 
void ReplaceState (AGameState *a_pGameState)
 
void PushState (AGameState *a_pGameState)
 
void PopState (AGameState *a_pGameState)
 
void PopCurrentGameState ()
 
void ResetStack ()
 
void SetFlags (TUINT16 a_eFlags)
 
void SetOverlayParams (AGameState::OVERLAY a_eOverlay, const OverlayData &a_rcParams)
 
OverlayDataGetOverlayParams (AGameState::OVERLAY a_eOverlay)
 
void UpdateScreenOverlay ()
 
TBOOL ProcessInput (const Toshi::TInputInterface::InputEvent *a_pEvent)
 
AGameStateGetCurrentState ()
 
TBOOL IsCurrentState (Toshi::TClass *a_pClass)
 

Static Public Member Functions

static Toshi::TObject * CreateTObject ()
 
static Toshi::TObject * CreateTObjectInPlace (void *a_pPtr)
 
static void InitialiseClass ()
 
static void DeinitialiseClass ()
 
static __forceinline Toshi::TClass * GetClassStatic ()
 

Static Public Attributes

static constexpr Toshi::TClass * PARENTCLASS = & Toshi::TTask::ms_oClass
 
static Toshi::TClass ms_oClass = Toshi::TClass( "AGameStateController", AGameStateController::PARENTCLASS, AGameStateController::CreateTObject, AGameStateController::CreateTObjectInPlace, AGameStateController::InitialiseClass, AGameStateController::DeinitialiseClass, 0, 1, sizeof( AGameStateController ), alignof( AGameStateController ) )
 

Detailed Description

Definition at line 10 of file AGameStateController.h.

Member Typedef Documentation

◆ BaseClass

using AGameStateController::BaseClass = Toshi::TTask

Definition at line 14 of file AGameStateController.h.

◆ ThisClass

Constructor & Destructor Documentation

◆ AGameStateController()

AGameStateController::AGameStateController ( )

Definition at line 18 of file AGameStateController.cpp.

19 : m_UnkVector( m_VectorData, TARRAYSIZE( m_VectorData ), 0 )
20{
21 // Incomplete
22 m_eFlags = 0;
23 m_fOverlayGoal = 0.0f;
24}
#define TARRAYSIZE(ARRAY)
Definition Defines.h:70

◆ ~AGameStateController()

AGameStateController::~AGameStateController ( )

Definition at line 26 of file AGameStateController.cpp.

27{
28 TASSERT( m_oStates.Size() == 0 );
29}
#define TASSERT(X,...)
Definition Defines.h:138

Member Function Documentation

◆ CreateTObject()

Toshi::TObject * AGameStateController::CreateTObject ( )
static

Definition at line 16 of file AGameStateController.cpp.

◆ CreateTObjectInPlace()

Toshi::TObject * AGameStateController::CreateTObjectInPlace ( void * a_pPtr)
static

Definition at line 16 of file AGameStateController.cpp.

◆ DeinitialiseClass()

void AGameStateController::DeinitialiseClass ( )
static

Definition at line 16 of file AGameStateController.cpp.

◆ GetClass()

Toshi::TClass * AGameStateController::GetClass ( )
overridevirtual

Definition at line 16 of file AGameStateController.cpp.

◆ GetClassStatic()

static __forceinline Toshi::TClass * AGameStateController::GetClassStatic ( )
inlinestatic

Definition at line 14 of file AGameStateController.h.

◆ GetCurrentState()

AGameState * AGameStateController::GetCurrentState ( )
inline

Definition at line 47 of file AGameStateController.h.

47{ return *m_oStates.Back(); }

◆ GetOverlayParams()

AGameStateController::OverlayData * AGameStateController::GetOverlayParams ( AGameState::OVERLAY a_eOverlay)

Definition at line 233 of file AGameStateController.cpp.

234{
235 TASSERT( a_eOverlay < AGameState::OVERLAY_NUMOF );
236 return &ms_aOverlays[ a_eOverlay ];
237}

◆ InitialiseClass()

void AGameStateController::InitialiseClass ( )
static

Definition at line 16 of file AGameStateController.cpp.

◆ IsCurrentState()

TBOOL AGameStateController::IsCurrentState ( Toshi::TClass * a_pClass)
inline

Definition at line 48 of file AGameStateController.h.

48{ return GetCurrentState()->IsA( a_pClass ); }

◆ OnCreate()

TBOOL AGameStateController::OnCreate ( )
overridevirtual

Definition at line 31 of file AGameStateController.cpp.

32{
33 InsertGameState( new AGameState );
34
35 TFLOAT fWidth, fHeight;
36 AGUI2::GetSingleton()->GetDimensions( fWidth, fHeight );
37
38 m_oOverlay.SetDimensions( fWidth, fHeight );
40 m_oOverlay.SetInFront();
41 m_oOverlay.Hide();
42
43 return TTRUE;
44}
float TFLOAT
Definition Typedefs.h:4
#define TTRUE
Definition Typedefs.h:25
@ AGUI2ATTACHMENT_BOTTOMCENTER

◆ OnDestroy()

void AGameStateController::OnDestroy ( )
overridevirtual

Definition at line 80 of file AGameStateController.cpp.

81{
82 TASSERT( m_oStates.Size() == 1 );
83
84 auto pGameState = *m_oStates.Back();
85 m_oStates.PopBack();
86
87 pGameState->Destroy();
88}

◆ OnUpdate()

TBOOL AGameStateController::OnUpdate ( TFLOAT a_fDeltaTime)
overridevirtual

Definition at line 46 of file AGameStateController.cpp.

47{
48 auto eFlags = m_eFlags;
49
50 if ( eFlags & 0x10 )
51 {
52 m_eFlags = eFlags & 0xffef;
53
54 if ( HASANYFLAG( eFlags, 0x1000 ) )
55 {
56 TTODO( "FUN_00424000(false)" );
57 return TTRUE;
58 }
59 else
60 {
61 TTODO( "FUN_00423de0((TCHAR *)0x0,true,(TPooledString8 *)0x0)" );
62 return TTRUE;
63 }
64 }
65
66 if ( m_oStates.Size() > 1 )
67 {
68 TTODO( "This section" );
69
70 if ( !HASANYFLAG( m_eFlags, 7 ) )
71 {
72 ( *m_oStates.Back() )->OnUpdate( a_fDeltaTime );
73 }
74 }
75
77 return TTRUE;
78}
#define HASANYFLAG(STATE, FLAG)
Definition Defines.h:5
#define TTODO(DESC)
Definition Defines.h:134

◆ PopCurrentGameState()

void AGameStateController::PopCurrentGameState ( )

Definition at line 148 of file AGameStateController.cpp.

149{
150 TASSERT( m_oStates.Size() > 1 );
151
152 if ( m_oStates.Size() > 1 )
153 {
154 PopState( *m_oStates.Back() );
155 }
156}
void PopState(AGameState *a_pGameState)

◆ PopState()

void AGameStateController::PopState ( AGameState * a_pGameState)

Definition at line 125 of file AGameStateController.cpp.

126{
127 auto pCurrentGameState = *m_oStates.Back();
128
129 TASSERT( a_pGameState == pCurrentGameState );
130 m_oStates.PopBack();
131
132 pCurrentGameState->Destroy();
133
134 if ( m_oStates.Size() == 1 && ARootTask::GetSingleton()->IsGameSystemCreated() )
135 {
136 g_oTheApp.Destroy();
137 return;
138 }
139
140 if ( m_oStates.Size() > 1 )
141 {
142 pCurrentGameState = *m_oStates.Back();
143 pCurrentGameState->OnResume( a_pGameState );
144 pCurrentGameState->Activate();
145 }
146}
AApplication g_oTheApp
Definition AppBoot.cpp:31

◆ ProcessInput()

TBOOL AGameStateController::ProcessInput ( const Toshi::TInputInterface::InputEvent * a_pEvent)

Definition at line 239 of file AGameStateController.cpp.

240{
241 if ( m_eFlags & 1 )
242 {
243 return TTRUE;
244 }
245
246 if ( m_oStates.Size() <= 1 )
247 {
248 return TFALSE;
249 }
250
251 if ( ACheatActivator::IsSingletonCreated() )
252 {
253 TIMPLEMENT_D( "Cheat code activation" );
254 }
255
256 auto pGameState = *m_oStates.Back();
257
258 if ( pGameState->SendInputCommands( a_pEvent ) )
259 {
260 return TTRUE;
261 }
262 else
263 {
264 return pGameState->ProcessInput( a_pEvent );
265 }
266}
#define TIMPLEMENT_D(DESC)
Definition Defines.h:137
#define TFALSE
Definition Typedefs.h:24

◆ PushState()

void AGameStateController::PushState ( AGameState * a_pGameState)

Definition at line 114 of file AGameStateController.cpp.

115{
116 if ( m_oStates.Size() > 1 )
117 {
118 ( *m_oStates.Back() )->Deactivate();
119 ( *m_oStates.Back() )->Suspend();
120 }
121
122 InsertGameState( a_pGameState );
123}

◆ ReplaceState()

void AGameStateController::ReplaceState ( AGameState * a_pGameState)

Definition at line 101 of file AGameStateController.cpp.

102{
103 if ( m_oStates.Size() > 1 )
104 {
105 auto pCurrentGameState = *m_oStates.Back();
106 m_oStates.PopBack();
107
108 pCurrentGameState->Destroy();
109 }
110
111 InsertGameState( a_pGameState );
112}

◆ ResetStack()

void AGameStateController::ResetStack ( )

Definition at line 183 of file AGameStateController.cpp.

184{
186 m_eFlags = 0;
187
188 TBOOL bIsFirst = TTRUE;
189
190 while ( 1 < m_oStates.Size() )
191 {
192 auto pGameState = *m_oStates.Back();
193 m_oStates.PopBack();
194
195 pGameState->Destroy( bIsFirst );
196 bIsFirst = TFALSE;
197 }
198}
bool TBOOL
Definition Typedefs.h:6

◆ SetFlags()

void AGameStateController::SetFlags ( TUINT16 a_eFlags)

Definition at line 200 of file AGameStateController.cpp.

201{
202 m_eFlags |= a_eFlags;
203 m_fSoundVolume = 1.0f;
204
205 if ( !( m_eFlags & 256 ) )
206 {
207 m_fOverlayGoal = 0.0f;
208 m_fOverlayAlpha = ( a_eFlags == 4 ) ? 1.0f : 0.0f;
209 }
210 else
211 {
212 m_fOverlayAlpha = m_fOverlayGoal;
213 m_eFlags &= 0xfeff;
214 }
215
216 OverlayData oData;
217 oData.uiColorA = TUINT8( m_fOverlayAlpha * 255.0f );
218 oData.uiColorR = 0;
219 oData.uiColorG = 0;
220 oData.uiColorB = 0;
222
223 ( *m_oStates.Back() )->SetOverlay( AGameState::OVERLAY_3 );
225}
uint8_t TUINT8
Definition Typedefs.h:17
void SetOverlayParams(AGameState::OVERLAY a_eOverlay, const OverlayData &a_rcParams)

◆ SetOverlayParams()

void AGameStateController::SetOverlayParams ( AGameState::OVERLAY a_eOverlay,
const OverlayData & a_rcParams )

Definition at line 227 of file AGameStateController.cpp.

228{
229 TASSERT( a_eOverlay < AGameState::OVERLAY_NUMOF );
230 ms_aOverlays[ a_eOverlay ] = a_rcParams;
231}

◆ UpdateScreenOverlay()

void AGameStateController::UpdateScreenOverlay ( )

Definition at line 158 of file AGameStateController.cpp.

159{
160 TBOOL bAddOverlay = TFALSE;
161
162 if ( m_oStates.Size() > 1 && ( *m_oStates.Back() )->GetOverlay() != AGameState::OVERLAY_1 )
163 {
164 OverlayData* pOverlay = GetOverlayParams( ( *m_oStates.Back() )->GetOverlay() );
165 m_oOverlay.SetColour( TCOLOR_ALPHA( pOverlay->uiColorR, pOverlay->uiColorG, pOverlay->uiColorB, pOverlay->uiColorA ) );
166
167 bAddOverlay = TTRUE;
168 }
169
170 m_oOverlay.RemoveSelf();
171
172 if ( bAddOverlay )
173 {
174 AGUI2::GetRootElement()->AddChildTail( m_oOverlay );
175 m_oOverlay.Show();
176 }
177 else
178 {
179 m_oOverlay.Hide();
180 }
181}
#define TCOLOR_ALPHA(R, G, B, A)
Definition TColor.h:5
OverlayData * GetOverlayParams(AGameState::OVERLAY a_eOverlay)
static AGUI2Element * GetRootElement()
Definition AGUI2.h:31
void AddChildTail(AGUI2Element &a_rElement)

Member Data Documentation

◆ ms_oClass

Definition at line 14 of file AGameStateController.h.

◆ PARENTCLASS

Toshi::TClass* AGameStateController::PARENTCLASS = & Toshi::TTask::ms_oClass
staticconstexpr

Definition at line 14 of file AGameStateController.h.


The documentation for this class was generated from the following files: