13#ifdef TOSHI_SKU_WINDOWS
36# define TOSHI_ENTRY int main( int argc, TCHAR** argv )
38# define TOSHI_ENTRY int WINAPI WinMain( HINSTANCE hInst, HINSTANCE hInstPrev, PSTR cmdline, INT cmdShow )
41static const TCHAR* GetOSName( OSVERSIONINFOEX& osVersionInfo )
43 TBOOL isWorkstation = osVersionInfo.wProductType == VER_NT_WORKSTATION;
45 if ( osVersionInfo.dwMajorVersion == 10 )
46 return isWorkstation ?
"Windows 10" :
"Windows Server 2016";
48 if ( osVersionInfo.dwMajorVersion == 6 )
50 if ( osVersionInfo.dwMinorVersion == 0 )
51 return isWorkstation ?
"Windows Vista" :
"Windows Server 2008";
53 if ( osVersionInfo.dwMinorVersion == 1 )
54 return isWorkstation ?
"Windows 7" :
"Windows Server 2008 R2";
56 if ( osVersionInfo.dwMinorVersion == 2 )
57 return isWorkstation ?
"Windows 8" :
"Windows Server 2012";
59 if ( osVersionInfo.dwMinorVersion == 3 )
60 return isWorkstation ?
"Windows 8.1" :
"Windows Server 2012 R2";
71 TCHAR* szCommandLine = GetCommandLineA();
87 OSVERSIONINFOEX osVersionInfo = {
sizeof( osVersionInfo ) };
89 const TCHAR* osName =
"unknown";
90 HMODULE ntdll = GetModuleHandleW( L
"ntdll.dll" );
94 typedef void( WINAPI * t_RtlGetVersion )( OSVERSIONINFOEX* );
95 auto RtlGetVersion =
TREINTERPRETCAST( t_RtlGetVersion, GetProcAddress( ntdll,
"RtlGetVersion" ) );
97 if ( RtlGetVersion != NULL )
99 RtlGetVersion( &osVersionInfo );
100 osName = GetOSName( osVersionInfo );
104 TUtil::Log(
"Command Line: %s\n", szCommandLine );
106 TUtil::Log(
"OS Version: %d.%d Build:%d %s\n", osVersionInfo.dwMajorVersion, osVersionInfo.dwMinorVersion, osVersionInfo.dwBuildNumber, osVersionInfo.szCSDVersion );
110 if ( GetLastError() == ERROR_ALREADY_EXISTS )
112 MessageBoxA( NULL,
"Game is already running",
"Barnyard", MB_OK );
116 if (
g_oTheApp.Create(
"The Barnyard - (c) Blue Tongue Entertainment", 0, 0 ) )
127static TBOOL CreateStringPool()
132 pStringPool->InitialiseStatic();
146 TINFO(
"Starting Barnyard...\n" );
149 if ( !CreateStringPool() )
152 ALocaleManager* pLocaleManager = T2Locale::CreateSingleton<ALocaleManager>();
160 TTODO(
"Create some instances of some classes" );
Input system interface for the Toshi engine.
Rendering system interface for the Toshi engine.
#define TREINTERPRETCAST(TYPE, VALUE)
#define TOSHI_NAMESPACE_USING
Main header file for the Toshi game engine.
TSystemManager g_oSystemManager
static void SetupFreeList(TINT a_iCapacity, TINT a_iGrowSize)
static void SetupFreeList(TINT a_iCapacity, TINT a_iGrowSize)
static void SetupFreeList(TINT a_iCapacity, TINT a_iGrowSize)
virtual TBOOL OnCreate(TINT argc, TCHAR **argv)
static void SetupFreeList(TINT a_iCapacity, TINT a_iGrowSize)
static void Log(const TCHAR *a_szFormat,...)
static TBOOL ToshiCreate(const TOSHIParams &a_rToshiParams)
static TPString8Pool * SetTPStringPool(TPString8Pool *a_pStringPool)
static TMutex & GetGlobalMutex()
static void ToshiDestroy()
const TCHAR * szCommandLine
const TCHAR * szLogFileName
ADummyTask * m_pUpdate3Task
ADummyTask * m_pUpdate1Task
ADummyTask * m_pRenderTask
ADummyTask * m_pUpdate2Task
virtual TBOOL OnCreate(int argc, TCHAR **argv) override
ADummyTask * m_pInputTask
static Toshi::T2Allocator * GetAllocator(POOL a_ePool)
static void CreatePool(POOL a_ePool)