engine: implement changing cursor type in gameui
This commit is contained in:
parent
bd60c88c7d
commit
999b43b89f
6 changed files with 23 additions and 14 deletions
2
3rdparty/mainui
vendored
2
3rdparty/mainui
vendored
|
@ -1 +1 @@
|
||||||
Subproject commit dc467364d01e0216c6c55d1c0523c1ad823c2e2c
|
Subproject commit f01dda5ddde934572fa378af86e700e888ef2885
|
|
@ -1097,6 +1097,20 @@ static void GAME_EXPORT pfnCon_DefaultColor( int r, int g, int b )
|
||||||
Con_DefaultColor( r, g, b, true );
|
Con_DefaultColor( r, g, b, true );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void GAME_EXPORT pfnSetCursor( void *hCursor )
|
||||||
|
{
|
||||||
|
uintptr_t cursor;
|
||||||
|
|
||||||
|
if( !gameui.use_extended_api )
|
||||||
|
return; // ignore original Xash menus
|
||||||
|
|
||||||
|
cursor = (uintptr_t)hCursor;
|
||||||
|
if( cursor < dc_user || cursor > dc_last )
|
||||||
|
return;
|
||||||
|
|
||||||
|
Platform_SetCursorType( cursor );
|
||||||
|
}
|
||||||
|
|
||||||
// engine callbacks
|
// engine callbacks
|
||||||
static ui_enginefuncs_t gEngfuncs =
|
static ui_enginefuncs_t gEngfuncs =
|
||||||
{
|
{
|
||||||
|
@ -1176,7 +1190,7 @@ static ui_enginefuncs_t gEngfuncs =
|
||||||
pfnHostEndGame,
|
pfnHostEndGame,
|
||||||
COM_RandomFloat,
|
COM_RandomFloat,
|
||||||
COM_RandomLong,
|
COM_RandomLong,
|
||||||
IN_SetCursor,
|
pfnSetCursor,
|
||||||
pfnIsMapValid,
|
pfnIsMapValid,
|
||||||
GL_ProcessTexture,
|
GL_ProcessTexture,
|
||||||
COM_CompareFileTime,
|
COM_CompareFileTime,
|
||||||
|
@ -1286,7 +1300,7 @@ qboolean UI_LoadProgs( void )
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
gameui.use_text_api = false;
|
gameui.use_extended_api = false;
|
||||||
|
|
||||||
// make local copy of engfuncs to prevent overwrite it with user dll
|
// make local copy of engfuncs to prevent overwrite it with user dll
|
||||||
memcpy( &gpEngfuncs, &gEngfuncs, sizeof( gpEngfuncs ));
|
memcpy( &gpEngfuncs, &gEngfuncs, sizeof( gpEngfuncs ));
|
||||||
|
@ -1313,7 +1327,7 @@ qboolean UI_LoadProgs( void )
|
||||||
if( GetExtAPI( MENU_EXTENDED_API_VERSION, &gameui.dllFuncs2, &gpExtendedfuncs ) )
|
if( GetExtAPI( MENU_EXTENDED_API_VERSION, &gameui.dllFuncs2, &gpExtendedfuncs ) )
|
||||||
{
|
{
|
||||||
Con_Reportf( "UI_LoadProgs: extended Menu API initialized\n" );
|
Con_Reportf( "UI_LoadProgs: extended Menu API initialized\n" );
|
||||||
gameui.use_text_api = true;
|
gameui.use_extended_api = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else // otherwise, fallback to old and deprecated extensions
|
else // otherwise, fallback to old and deprecated extensions
|
||||||
|
@ -1325,7 +1339,7 @@ qboolean UI_LoadProgs( void )
|
||||||
if( GiveTextApi( &gpExtendedfuncs ) ) // they are binary compatible, so we can just pass extended funcs API to menu
|
if( GiveTextApi( &gpExtendedfuncs ) ) // they are binary compatible, so we can just pass extended funcs API to menu
|
||||||
{
|
{
|
||||||
Con_Reportf( "UI_LoadProgs: extended text API initialized\n" );
|
Con_Reportf( "UI_LoadProgs: extended text API initialized\n" );
|
||||||
gameui.use_text_api = true;
|
gameui.use_extended_api = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -520,7 +520,7 @@ typedef struct
|
||||||
int logo_yres;
|
int logo_yres;
|
||||||
float logo_length;
|
float logo_length;
|
||||||
|
|
||||||
qboolean use_text_api;
|
qboolean use_extended_api;
|
||||||
} gameui_static_t;
|
} gameui_static_t;
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
|
|
|
@ -17,6 +17,7 @@ GNU General Public License for more details.
|
||||||
#include "input.h"
|
#include "input.h"
|
||||||
#include "client.h"
|
#include "client.h"
|
||||||
#include "vgui_draw.h"
|
#include "vgui_draw.h"
|
||||||
|
#include "cursor_type.h"
|
||||||
|
|
||||||
#if XASH_SDL
|
#if XASH_SDL
|
||||||
#include <SDL.h>
|
#include <SDL.h>
|
||||||
|
@ -123,11 +124,6 @@ static void IN_StartupMouse( void )
|
||||||
in_mouseinitialized = true;
|
in_mouseinitialized = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void GAME_EXPORT IN_SetCursor( void *hCursor )
|
|
||||||
{
|
|
||||||
// stub
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
===========
|
===========
|
||||||
IN_MouseSavePos
|
IN_MouseSavePos
|
||||||
|
|
|
@ -40,7 +40,6 @@ void IN_DeactivateMouse( void );
|
||||||
void IN_MouseSavePos( void );
|
void IN_MouseSavePos( void );
|
||||||
void IN_MouseRestorePos( void );
|
void IN_MouseRestorePos( void );
|
||||||
void IN_ToggleClientMouse( int newstate, int oldstate );
|
void IN_ToggleClientMouse( int newstate, int oldstate );
|
||||||
void IN_SetCursor( void *hCursor );
|
|
||||||
|
|
||||||
uint IN_CollectInputDevices( void );
|
uint IN_CollectInputDevices( void );
|
||||||
void IN_LockInputDevices( qboolean lock );
|
void IN_LockInputDevices( qboolean lock );
|
||||||
|
|
|
@ -749,10 +749,10 @@ void GAME_EXPORT Key_Event( int key, int down )
|
||||||
if( cls.key_dest == key_menu )
|
if( cls.key_dest == key_menu )
|
||||||
{
|
{
|
||||||
// only non printable keys passed
|
// only non printable keys passed
|
||||||
if( !gameui.use_text_api )
|
if( !gameui.use_extended_api )
|
||||||
Key_EnableTextInput( true, false );
|
Key_EnableTextInput( true, false );
|
||||||
//pass printable chars for old menus
|
//pass printable chars for old menus
|
||||||
if( !gameui.use_text_api && !host.textmode && down && ( key >= 32 ) && ( key <= 'z' ) )
|
if( !gameui.use_extended_api && !host.textmode && down && ( key >= 32 ) && ( key <= 'z' ) )
|
||||||
{
|
{
|
||||||
if( Key_IsDown( K_SHIFT ) )
|
if( Key_IsDown( K_SHIFT ) )
|
||||||
{
|
{
|
||||||
|
|
Loading…
Add table
Reference in a new issue