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

#include <ARootTask.h>

Inheritance diagram for ARootTask:

Public Types

using ThisClass = ARootTask
 
using BaseClass = Toshi::TTask
 

Public Member Functions

virtual Toshi::TClass * GetClass () override
 
 ARootTask ()
 
virtual TBOOL OnCreate () override
 
virtual TBOOL OnUpdate (TFLOAT a_fDeltaTime) override
 
virtual void OnChildDied (Toshi::TClass *a_pClass, Toshi::TTask *a_pDeletedTask) override
 
virtual void OnActivate () override
 
virtual void OnDeactivate () override
 
void CreateStartupGameStates ()
 
void LoadStartupData ()
 
TBOOL IsPaused () const
 
TBOOL IsGameSystemCreated () const
 
void SetRenderWorld (TBOOL a_bReady)
 
TBOOL IsRenderWorld ()
 
TBOOL ShouldRenderMainScene () const
 

Static Public Member Functions

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

Static Public Attributes

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

Detailed Description

Definition at line 8 of file ARootTask.h.

Member Typedef Documentation

◆ BaseClass

using ARootTask::BaseClass = Toshi::TTask

Definition at line 12 of file ARootTask.h.

◆ ThisClass

Definition at line 12 of file ARootTask.h.

Constructor & Destructor Documentation

◆ ARootTask()

ARootTask::ARootTask ( )

Definition at line 44 of file ARootTask.cpp.

45{
46 TIMPLEMENT();
47
48 m_bStartedGame = TFALSE;
49 m_bRenderWorld = TFALSE;
50 m_bPaused = TFALSE;
51 m_bStopRenderingScene = TFALSE;
52 m_bGameSystemCreated = TFALSE;
53 m_pOptions = AOptions::CreateSingleton();
55
56 auto pScheduler = g_oSystemManager.GetScheduler();
57
58 m_pGUISystem = pScheduler->CreateTask<AGUISystem>( this );
59 m_pGUI2 = pScheduler->CreateTask<AGUI2>( this );
60 m_pRenderer = pScheduler->CreateTask<ARenderer>( this );
61 m_pInputHandler = pScheduler->CreateTask<AInputHandler>( this );
62 m_pGameStateController = pScheduler->CreateTask<AGameStateController>( this );
63 m_pSoundManager = pScheduler->CreateTask<ASoundManager>( this );
64 m_pMoviePlayer = pScheduler->CreateTask<ABINKMoviePlayer>( this );
65 m_bGameSystemCreated = TFALSE;
66}
#define TIMPLEMENT()
Definition Defines.h:136
#define TFALSE
Definition Typedefs.h:24
TSystemManager g_oSystemManager
Definition TSystem.cpp:15
TTask * CreateTask(TClass *a_pClass, TTask *a_pParent=nullptr)
TScheduler * GetScheduler() const
Definition TSystem.h:155
@ POOL_Sound
Definition AMemory.h:37
static void CreatePool(POOL a_ePool)
Definition AMemory.cpp:12

Member Function Documentation

◆ CreateStartupGameStates()

void ARootTask::CreateStartupGameStates ( )

Definition at line 207 of file ARootTask.cpp.

208{
209 TIMPLEMENT();
210
211 auto attractMovie = new AMovieState( "Attract", TFALSE, TNULL, TFALSE );
212 auto bluetongueMovie = new AMovieState( "BTE", TFALSE, attractMovie, TFALSE );
213 auto thqMovie = new AMovieState( "THQ", TFALSE, bluetongueMovie, TFALSE );
214 auto nickmovsMovie = new AMovieState( "NickMovs", TFALSE, thqMovie, TFALSE );
215
216 AGUISlideshow::Params slideshowSettings = {
217 .iUnk1 = 0,
218 .bSlideSkippable = TTRUE,
219 .bUnk2 = TFALSE,
220 .bInstaSkippable = TFALSE,
221 .bHasFadeIn = TTRUE,
222 .bHasFadeOut = TTRUE,
223 .bRepeat = TFALSE,
224 .bDelayAppear = TFALSE,
225 .fDuration = 2.0f,
226 .fFadeInTime = 1.0f,
227 .fFadeOutTime = 0.5f,
228 .fUnk5 = -1.0f,
229 };
230
231 auto fmodSlide = new ASlideshowState( slideshowSettings, nickmovsMovie, TFALSE );
232 fmodSlide->AddSlide( TPS8( bkg_fmod ) );
233
234 auto binkSlide = new ASlideshowState( slideshowSettings, fmodSlide, TFALSE );
235 binkSlide->AddSlide( TPS8( bkg_Bink_Big ) );
236
237 slideshowSettings.fDuration = 5.0f;
238 auto legalSlide = new ASlideshowState( slideshowSettings, binkSlide, TTRUE );
239 legalSlide->AddSlide( TPS8( bkg_by_legal1 ) );
240
241 AGameStateController::GetSingleton()->PushState( legalSlide );
242
243 m_bStartedGame = TTRUE;
244}
#define TPS8(STR)
Definition TPString8.h:16
#define TNULL
Definition Typedefs.h:23
#define TTRUE
Definition Typedefs.h:25

◆ CreateTObject()

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

Definition at line 42 of file ARootTask.cpp.

◆ CreateTObjectInPlace()

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

Definition at line 42 of file ARootTask.cpp.

◆ DeinitialiseClass()

void ARootTask::DeinitialiseClass ( )
static

Definition at line 42 of file ARootTask.cpp.

◆ GetClass()

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

Definition at line 42 of file ARootTask.cpp.

◆ GetClassStatic()

static TFORCEINLINE Toshi::TClass * ARootTask::GetClassStatic ( )
inlinestatic

Definition at line 12 of file ARootTask.h.

◆ InitialiseClass()

void ARootTask::InitialiseClass ( )
static

Definition at line 42 of file ARootTask.cpp.

◆ IsGameSystemCreated()

TBOOL ARootTask::IsGameSystemCreated ( ) const
inline

Definition at line 27 of file ARootTask.h.

27{ return m_bGameSystemCreated; }

◆ IsPaused()

TBOOL ARootTask::IsPaused ( ) const

Definition at line 285 of file ARootTask.cpp.

286{
287 return m_bPaused || g_oSystemManager.IsPaused();
288}
TBOOL IsPaused() const
Definition TSystem.h:160

◆ IsRenderWorld()

TBOOL ARootTask::IsRenderWorld ( )
inline

Definition at line 30 of file ARootTask.h.

30{ return m_bRenderWorld; }

◆ LoadStartupData()

void ARootTask::LoadStartupData ( )

Definition at line 246 of file ARootTask.cpp.

247{
248 TString8 startupLibPath;
249 startupLibPath.Format( "Data/%s.trb", "lib_startup" );
250
251 TTRB trb;
252 trb.Load( startupLibPath );
253
254 auto properties = PBProperties::LoadFromTRB( trb );
255 auto matlibProperty = properties->GetProperty( "matlib" );
256
257 if ( matlibProperty )
258 {
259 AMaterialLibraryManager::GetSingleton()->LoadLibrariesFromProperties(
260 matlibProperty,
262 TTRUE
263 );
264 }
265
266 trb.Close();
267
268 if ( m_pGUI2 && !m_pGUI2->Create() )
269 {
270 m_pGUI2 = TNULL;
271 }
272
273 if ( m_pGUISystem && !m_pGUISystem->Create() )
274 {
275 m_pGUISystem = TNULL;
276 }
277
281
282 g_oSystemManager.GetScheduler()->CreateTask<AFadeManager>( this )->Create();
283}
@ AAssetType_Startup
Definition AAssetLoader.h:8
ERROR Load(const TCHAR *a_szFilePath, TUINT32 a_uiUnknown=0)
Definition TTRB.cpp:38
void Close()
Definition TTRB.cpp:289
static TFORCEINLINE TRenderInterface * GetSingleton()
Definition TSingleton.h:49
TString8 & Format(const TCHAR *a_pcFormat,...)
Definition TString8.cpp:176
static Toshi::TTRB * GetAssetTRB(AAssetType a_eAssetType)

◆ OnActivate()

void ARootTask::OnActivate ( )
overridevirtual

Definition at line 175 of file ARootTask.cpp.

176{
177 if ( m_pGUISystem ) m_pGUISystem->Activate( TTRUE );
178 if ( m_pGUI2 ) m_pGUI2->Activate( TTRUE );
179 if ( m_pRenderer ) m_pRenderer->Activate( TTRUE );
180 if ( m_pInputHandler ) m_pInputHandler->Activate( TTRUE );
181 if ( m_pGameStateController ) m_pGameStateController->Activate( TTRUE );
182 if ( m_pMoviePlayer ) m_pMoviePlayer->Activate( TTRUE );
183
184 if ( m_bGameSystemCreated )
185 {
186 TTODO( "Activate three more tasks" );
187 }
188}
#define TTODO(DESC)
Definition Defines.h:134

◆ OnChildDied()

void ARootTask::OnChildDied ( Toshi::TClass * a_pClass,
Toshi::TTask * a_pDeletedTask )
overridevirtual

Definition at line 160 of file ARootTask.cpp.

161{
162 if ( a_pDeletedTask == m_pGUISystem ) m_pGUISystem = TNULL;
163 else if ( a_pDeletedTask == m_pGUI2 )
164 m_pGUI2 = TNULL;
165 else if ( a_pDeletedTask == m_pInputHandler )
166 m_pInputHandler = TNULL;
167 else if ( a_pDeletedTask == m_pRenderer )
168 m_pRenderer = TNULL;
169 else if ( a_pDeletedTask == m_pGameStateController )
170 m_pGameStateController = TNULL;
171 else if ( a_pDeletedTask == m_pMoviePlayer )
172 m_pMoviePlayer = TNULL;
173}

◆ OnCreate()

TBOOL ARootTask::OnCreate ( )
overridevirtual

Definition at line 68 of file ARootTask.cpp.

69{
70 TIMPLEMENT();
71
75
76 // Initialise all classes
77 TGetClass( TObject ).RecurseTree(
78 TNULL,
79 TNULL,
80 []( TClass* a_pClass, void* ) {
81 if ( !a_pClass->IsInitialized() )
82 {
83 a_pClass->Initialize();
84 }
85
86 return TTRUE;
87 },
88 TNULL
89 );
90
91 AAssetLoader::Load( "data\\assets\\lib_startup.trb", AAssetType_Startup, TTRUE );
92
93 if ( m_pRenderer )
94 {
95 if ( !m_pRenderer->Create() )
96 {
97 m_pRenderer = TNULL;
98 }
99 }
100
101 if ( !m_pRenderer )
102 {
103 return TFALSE;
104 }
105
106 m_pInputHandler->Create();
107 m_pSoundManager->Create();
108
109 ARandom::CreateSingleton();
110
111 if ( m_pMoviePlayer )
112 {
113 m_pMoviePlayer->Create();
114 }
115
116 TGetClass( AInputMapManager ).CreateObject();
117 AInputMapManager::GetSingleton()->ReadControlsData();
118
120 m_pGameStateController->Create();
121
123 ARenderer::GetSingleton()->ForceUpdate30FPS();
124 ARenderer::GetSingleton()->ForceUpdate30FPS();
126
127 return TTRUE;
128}
#define TGetClass(CLASS)
Definition TObject.h:13
TBOOL IsInitialized() const
Definition TClass.h:56
void Initialize()
Definition TClass.cpp:46
static TBOOL Load(const TCHAR *a_szFileName, AAssetType a_eAssetType, TBOOL a_bStream)
static void AllowBackgroundClear(TBOOL a_bAllow)
@ POOL_Viewport
Definition AMemory.h:40
@ POOL_Misc
Definition AMemory.h:35
@ POOL_Collision
Definition AMemory.h:36
void LoadStartupData()

◆ OnDeactivate()

void ARootTask::OnDeactivate ( )
overridevirtual

Definition at line 190 of file ARootTask.cpp.

191{
192 if ( m_pGUISystem ) m_pGUISystem->Activate( TFALSE );
193 if ( m_pGUI2 ) m_pGUI2->Activate( TFALSE );
194 if ( m_pRenderer ) m_pRenderer->Activate( TFALSE );
195 if ( m_pInputHandler ) m_pInputHandler->Activate( TFALSE );
196 if ( m_pGameStateController ) m_pGameStateController->Activate( TFALSE );
197 if ( m_pMoviePlayer ) m_pMoviePlayer->Activate( TFALSE );
198
199 TTODO( "Deactivate two more tasks" );
200}

◆ OnUpdate()

TBOOL ARootTask::OnUpdate ( TFLOAT a_fDeltaTime)
overridevirtual

Definition at line 130 of file ARootTask.cpp.

131{
132 if ( !IsGameSystemCreated() )
133 {
134 if ( !AGameStateController::GetSingleton()->IsCurrentState( &TGetClass( ASlideshowState ) ) &&
135 !AGameStateController::GetSingleton()->IsCurrentState( &TGetClass( SaveLoadSKU ) ) &&
136 !AGameStateController::GetSingleton()->IsCurrentState( &TGetClass( AMovieState ) ) &&
137 !AGameStateController::GetSingleton()->IsCurrentState( &TGetClass( AMessagePopupState ) ) )
138 {
139 if ( !m_bStartedGame )
140 {
142 return TTRUE;
143 }
144 else
145 {
147 CreateGameSystem();
148 LoadFrontEnd();
149 return TTRUE;
150 }
151 }
152 }
153
154 TTODO( "FUN_00427e70" );
155 g_oLoadScreen.Update( 1.0f, TTRUE );
156
157 return TTRUE;
158}
ALoadScreen g_oLoadScreen
void Update(TFLOAT a_fDeltaTime=1.0f, TBOOL a_bRender=true)
TBOOL IsGameSystemCreated() const
Definition ARootTask.h:27
void CreateStartupGameStates()

◆ SetRenderWorld()

void ARootTask::SetRenderWorld ( TBOOL a_bReady)
inline

Definition at line 29 of file ARootTask.h.

29{ m_bRenderWorld = a_bReady; }

◆ ShouldRenderMainScene()

TBOOL ARootTask::ShouldRenderMainScene ( ) const
inline

Definition at line 32 of file ARootTask.h.

32{ return !m_bStopRenderingScene; }

Member Data Documentation

◆ ms_oClass

Toshi::TClass ARootTask::ms_oClass = Toshi::TClass( "ARootTask", ARootTask::PARENTCLASS, ARootTask::CreateTObject, ARootTask::CreateTObjectInPlace, ARootTask::InitialiseClass, ARootTask::DeinitialiseClass, 0, 1, sizeof( ARootTask ), alignof( ARootTask ) )
static

Definition at line 12 of file ARootTask.h.

◆ PARENTCLASS

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

Definition at line 12 of file ARootTask.h.


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