mirror of https://github.com/FWGS/xash3d-fwgs
97 lines
2.5 KiB
C
97 lines
2.5 KiB
C
/*
|
|
sys_win.c - win32 system utils
|
|
Copyright (C) 2018 a1batross
|
|
|
|
This program is free software: you can redistribute it and/or modify
|
|
it under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation, either version 3 of the License, or
|
|
(at your option) any later version.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
*/
|
|
|
|
#include "platform/platform.h"
|
|
#include "menu_int.h"
|
|
#include "server.h"
|
|
#include <shellapi.h>
|
|
|
|
#if XASH_TIMER == TIMER_WIN32
|
|
double Platform_DoubleTime( void )
|
|
{
|
|
static LARGE_INTEGER g_PerformanceFrequency;
|
|
static LARGE_INTEGER g_ClockStart;
|
|
LARGE_INTEGER CurrentTime;
|
|
|
|
if( !g_PerformanceFrequency.QuadPart )
|
|
{
|
|
QueryPerformanceFrequency( &g_PerformanceFrequency );
|
|
QueryPerformanceCounter( &g_ClockStart );
|
|
}
|
|
QueryPerformanceCounter( &CurrentTime );
|
|
|
|
return (double)( CurrentTime.QuadPart - g_ClockStart.QuadPart ) / (double)( g_PerformanceFrequency.QuadPart );
|
|
}
|
|
|
|
void Platform_Sleep( int msec )
|
|
{
|
|
Sleep( msec );
|
|
}
|
|
#endif // XASH_TIMER == TIMER_WIN32
|
|
|
|
qboolean Sys_DebuggerPresent( void )
|
|
{
|
|
return IsDebuggerPresent();
|
|
}
|
|
|
|
void Platform_ShellExecute( const char *path, const char *parms )
|
|
{
|
|
if( !Q_strcmp( path, GENERIC_UPDATE_PAGE ) || !Q_strcmp( path, PLATFORM_UPDATE_PAGE ))
|
|
path = DEFAULT_UPDATE_PAGE;
|
|
|
|
ShellExecute( NULL, "open", path, parms, NULL, SW_SHOW );
|
|
}
|
|
|
|
void Platform_UpdateStatusLine( void )
|
|
{
|
|
int clientsCount;
|
|
char szStatus[128];
|
|
static double lastTime;
|
|
|
|
if( host.type != HOST_DEDICATED )
|
|
return;
|
|
|
|
// update only every 1/2 seconds
|
|
if(( sv.time - lastTime ) < 0.5f )
|
|
return;
|
|
|
|
clientsCount = SV_GetConnectedClientsCount( NULL );
|
|
Q_snprintf( szStatus, sizeof( szStatus ) - 1, "%.1f fps %2i/%2i on %16s", 1.f / sv.frametime, clientsCount, svs.maxclients, host.game.levelName );
|
|
#ifdef XASH_WIN32
|
|
Wcon_SetStatus( szStatus );
|
|
#endif
|
|
lastTime = sv.time;
|
|
}
|
|
|
|
#if XASH_MESSAGEBOX == MSGBOX_WIN32
|
|
void Platform_MessageBox( const char *title, const char *message, qboolean parentMainWindow )
|
|
{
|
|
MessageBox( parentMainWindow ? host.hWnd : NULL, message, title, MB_OK|MB_SETFOREGROUND|MB_ICONSTOP );
|
|
}
|
|
#endif // XASH_MESSAGEBOX == MSGBOX_WIN32
|
|
|
|
#ifndef XASH_SDL
|
|
|
|
void Platform_Init( void )
|
|
{
|
|
Wcon_CreateConsole(); // system console used by dedicated server or show fatal errors
|
|
|
|
}
|
|
void Platform_Shutdown( void )
|
|
{
|
|
Wcon_DestroyConsole();
|
|
}
|
|
#endif
|