OpenBarnyard
 
Loading...
Searching...
No Matches
TSystem.h
Go to the documentation of this file.
1#pragma once
2#include "TEvent.h"
3#include "TSingleton.h"
4#include "THPTimer.h"
5
6#ifdef TOSHI_SKU_WINDOWS
8#endif // TOSHI_SKU_WINDOWS
9
11
12class TScheduler;
13class TPString8Pool;
14
16#ifdef TOSHI_SKU_WINDOWS
17 public TSystemDLLWin
18 ,
19#else
20# error Unsupported platform
21#endif
22 public TNodeList<TKernelInterfaceDLL>::TNode
23{
24public:
27};
28
29//-----------------------------------------------------------------------------
30// Purpose: Provides an interface to work with other interfaces.
31// Note: This class is completely removed in the future branches of TOSHI.
32// It's also the reason why it's almost empty compared to it's
33// implementation in JPOG.
34//-----------------------------------------------------------------------------
35class TKernelInterface : public TSingleton<TKernelInterface>
36{
37public:
38 TKernelInterface() = default;
39 ~TKernelInterface() = default;
40
41 TKernelInterfaceDLL* FindInterface( const TString8& a_rcName );
42 TKernelInterfaceDLL* LoadInterface( const TString8& a_rcName );
43
44private:
46};
47
49{
50public:
51 using QuitCallback = void ( * )();
52
53public:
56
57 void Update();
58
60 {
61 return m_Timer;
62 }
63
65 {
66 return m_uiNumFrames;
67 }
68
70 {
71 return m_Scheduler;
72 }
73
74 void SetScheduler( TScheduler* a_pScheduler )
75 {
76 m_Scheduler = a_pScheduler;
77 }
78
80 {
81 return m_bIsPaused;
82 }
83
84 TBOOL SetPaused( TBOOL a_bPaused )
85 {
86 TBOOL bOldState = m_bIsPaused;
87 m_bIsPaused = a_bPaused;
88 return bOldState;
89 }
90
91 TFLOAT GetFPS() const
92 {
93 return 1.0f / m_Timer.GetDelta();
94 }
95
96 void SetQuitCallback( QuitCallback a_fnQuitCallback )
97 {
98 m_fnQuitCallback = a_fnQuitCallback;
99 }
100
101private:
102 TUINT m_Unk1;
103 TScheduler* m_Scheduler;
104 TBOOL m_bIsPaused;
105 TUINT32 m_Unk2;
106 THPTimer m_Timer;
107 TUINT32 m_Unk3;
108 TFLOAT m_fSecond;
109 TFLOAT m_fAverageFps;
110 TUINT32 m_uiNumFrames;
111 TBOOL m_Unk4;
112 QuitCallback m_fnQuitCallback;
113 TUINT32 m_Unk6;
114};
115
117{
118public:
120
121public:
124
125 void Update();
126
128 {
129 return m_pSystemTimer->GetFPS();
130 }
131
132 TBOOL Pause( TBOOL a_bPause )
133 {
134 TBOOL bOldState = m_pSystemTimer->SetPaused( a_bPause );
135 m_PauseEmitter.Throw( &a_bPause );
136
137 return bOldState;
138 }
139
141 {
142 return m_PauseEmitter;
143 }
144
146 {
147 return m_pSystemTimer->GetNumFrames();
148 }
149
151 {
152 return m_pSystemTimer->GetTimer();
153 }
154
156 {
157 return m_pSystemTimer->GetScheduler();
158 }
159
161 {
162 return m_pSystemTimer->IsPaused();
163 }
164
166 {
167 m_pSystemTimer->SetQuitCallback( a_fnQuitCallback );
168 }
169
170public:
171 static TBOOL Create();
172
173private:
174 inline static TBOOL ms_bWasEverUpdated = TFALSE;
175
176private:
177 TEmitter<TSystemManager, TBOOL> m_PauseEmitter;
178 TSystemTimer* m_pSystemTimer;
179};
180
182
#define TOSHI_NAMESPACE_START
Definition Defines.h:47
#define TOSHI_NAMESPACE_END
Definition Defines.h:50
TSystemManager g_oSystemManager
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
bool TBOOL
Definition Typedefs.h:6
constexpr TNode()
Definition TNodeList.h:15
TSingleton(const TSingleton &)=delete
TKernelInterfaceDLL()=default
~TKernelInterfaceDLL()=default
~TKernelInterface()=default
TKernelInterface()=default
TKernelInterfaceDLL * FindInterface(const TString8 &a_rcName)
Definition TSystem.cpp:72
TKernelInterfaceDLL * LoadInterface(const TString8 &a_rcName)
Definition TSystem.cpp:83
void Update()
Definition TSystem.cpp:27
void(*)() QuitCallback
Definition TSystem.h:51
void SetScheduler(TScheduler *a_pScheduler)
Definition TSystem.h:74
TScheduler * GetScheduler() const
Definition TSystem.h:69
void SetQuitCallback(QuitCallback a_fnQuitCallback)
Definition TSystem.h:96
THPTimer & GetTimer()
Definition TSystem.h:59
TBOOL IsPaused() const
Definition TSystem.h:79
TUINT GetNumFrames() const
Definition TSystem.h:64
TFLOAT GetFPS() const
Definition TSystem.h:91
TBOOL SetPaused(TBOOL a_bPaused)
Definition TSystem.h:84
TUINT32 GetFrameCount() const
Definition TSystem.h:145
friend TScheduler
Definition TSystem.h:119
static TBOOL Create()
Definition TSystem.cpp:60
void Update()
Definition TSystem.cpp:55
TBOOL IsPaused() const
Definition TSystem.h:160
TScheduler * GetScheduler() const
Definition TSystem.h:155
TEmitter< TSystemManager, TBOOL > & GetPauseEmitter()
Definition TSystem.h:140
void SetQuitCallback(TSystemTimer::QuitCallback a_fnQuitCallback)
Definition TSystem.h:165
TFLOAT GetFPS() const
Definition TSystem.h:127
THPTimer & GetTimer()
Definition TSystem.h:150
TBOOL Pause(TBOOL a_bPause)
Definition TSystem.h:132