summaryrefslogtreecommitdiff
path: root/src/ui
diff options
context:
space:
mode:
Diffstat (limited to 'src/ui')
-rw-r--r--src/ui/ui_local.h3
-rw-r--r--src/ui/ui_main.c118
-rw-r--r--src/ui/ui_public.h12
-rw-r--r--src/ui/ui_shared.c19
-rw-r--r--src/ui/ui_syscalls.asm194
-rw-r--r--src/ui/ui_syscalls.c8
6 files changed, 220 insertions, 134 deletions
diff --git a/src/ui/ui_local.h b/src/ui/ui_local.h
index 3b690e06..4531790e 100644
--- a/src/ui/ui_local.h
+++ b/src/ui/ui_local.h
@@ -1008,6 +1008,7 @@ void trap_FS_Read( void *buffer, int len, fileHandle_t f );
void trap_FS_Write( const void *buffer, int len, fileHandle_t f );
void trap_FS_FCloseFile( fileHandle_t f );
int trap_FS_GetFileList( const char *path, const char *extension, char *listbuf, int bufsize );
+int trap_FS_Seek( fileHandle_t f, long offset, int origin ); // fsOrigin_t
qhandle_t trap_R_RegisterModel( const char *name );
qhandle_t trap_R_RegisterSkin( const char *name );
qhandle_t trap_R_RegisterShaderNoMip( const char *name );
@@ -1069,6 +1070,8 @@ int trap_RealTime(qtime_t *qtime);
void trap_R_RemapShader( const char *oldShader, const char *newShader, const char *timeOffset );
qboolean trap_VerifyCDKey( const char *key, const char *chksum);
+void trap_SetPbClStatus( int status );
+
//
// ui_addbots.c
//
diff --git a/src/ui/ui_main.c b/src/ui/ui_main.c
index a96d9a71..c23867d1 100644
--- a/src/ui/ui_main.c
+++ b/src/ui/ui_main.c
@@ -275,9 +275,6 @@ int Text_Width(const char *text, float scale, int limit) {
float out;
glyphInfo_t *glyph;
float useScale;
-// TTimo: FIXME: use const unsigned char to avoid getting a warning in linux debug (.so) when using glyph = &font->glyphs[*s];
-// but use const char to build with lcc..
-// const unsigned char *s = text; // bk001206 - unsigned
const char *s = text;
fontInfo_t *font = &uiInfo.uiDC.Assets.textFont;
if (scale <= ui_smallFont.value) {
@@ -298,7 +295,7 @@ int Text_Width(const char *text, float scale, int limit) {
s += 2;
continue;
} else {
- glyph = &font->glyphs[(int)*s]; // TTimo: FIXME: getting nasty warnings without the cast, hopefully this doesn't break the VM build
+ glyph = &font->glyphs[(int)*s];
out += glyph->xSkip;
s++;
count++;
@@ -313,8 +310,6 @@ int Text_Height(const char *text, float scale, int limit) {
float max;
glyphInfo_t *glyph;
float useScale;
-// TTimo: FIXME
-// const unsigned char *s = text; // bk001206 - unsigned
const char *s = text; // bk001206 - unsigned
fontInfo_t *font = &uiInfo.uiDC.Assets.textFont;
if (scale <= ui_smallFont.value) {
@@ -335,7 +330,7 @@ int Text_Height(const char *text, float scale, int limit) {
s += 2;
continue;
} else {
- glyph = &font->glyphs[(int)*s]; // TTimo: FIXME: getting nasty warnings without the cast, hopefully this doesn't break the VM build
+ glyph = &font->glyphs[(int)*s];
if (max < glyph->height) {
max = glyph->height;
}
@@ -368,8 +363,6 @@ void Text_Paint(float x, float y, float scale, vec4_t color, const char *text, f
}
useScale = scale * font->glyphScale;
if (text) {
-// TTimo: FIXME
-// const unsigned char *s = text; // bk001206 - unsigned
const char *s = text; // bk001206 - unsigned
trap_R_SetColor( color );
memcpy(&newColor[0], &color[0], sizeof(vec4_t));
@@ -379,7 +372,7 @@ void Text_Paint(float x, float y, float scale, vec4_t color, const char *text, f
}
count = 0;
while (s && *s && count < len) {
- glyph = &font->glyphs[(int)*s]; // TTimo: FIXME: getting nasty warnings without the cast, hopefully this doesn't break the VM build
+ glyph = &font->glyphs[(int)*s];
//int yadj = Assets.textFont.glyphs[text[i]].bottom + Assets.textFont.glyphs[text[i]].top;
//float yadj = scale * (Assets.textFont.glyphs[text[i]].imageHeight - Assets.textFont.glyphs[text[i]].height);
if ( Q_IsColorString( s ) ) {
@@ -496,8 +489,6 @@ void Text_PaintWithCursor(float x, float y, float scale, vec4_t color, const cha
}
useScale = scale * font->glyphScale;
if (text) {
-// TTimo: FIXME
-// const unsigned char *s = text; // bk001206 - unsigned
const char *s = text; // bk001206 - unsigned
trap_R_SetColor( color );
memcpy(&newColor[0], &color[0], sizeof(vec4_t));
@@ -508,9 +499,7 @@ void Text_PaintWithCursor(float x, float y, float scale, vec4_t color, const cha
count = 0;
glyph2 = &font->glyphs[ (int) cursor]; // bk001206 - possible signed char
while (s && *s && count < len) {
- glyph = &font->glyphs[(int)*s]; // TTimo: FIXME: getting nasty warnings without the cast, hopefully this doesn't break the VM build
- //int yadj = Assets.textFont.glyphs[text[i]].bottom + Assets.textFont.glyphs[text[i]].top;
- //float yadj = scale * (Assets.textFont.glyphs[text[i]].imageHeight - Assets.textFont.glyphs[text[i]].height);
+ glyph = &font->glyphs[(int)*s];
if ( Q_IsColorString( s ) ) {
memcpy( newColor, g_color_table[ColorIndex(*(s+1))], sizeof( newColor ) );
newColor[3] = color[3];
@@ -647,8 +636,6 @@ static void Text_Paint_Limit(float *maxX, float x, float y, float scale, vec4_t
vec4_t newColor;
glyphInfo_t *glyph;
if (text) {
-// TTimo: FIXME
-// const unsigned char *s = text; // bk001206 - unsigned
const char *s = text; // bk001206 - unsigned
float max = *maxX;
float useScale;
@@ -666,7 +653,7 @@ static void Text_Paint_Limit(float *maxX, float x, float y, float scale, vec4_t
}
count = 0;
while (s && *s && count < len) {
- glyph = &font->glyphs[(int)*s]; // TTimo: FIXME: getting nasty warnings without the cast, hopefully this doesn't break the VM build
+ glyph = &font->glyphs[(int)*s];
if ( Q_IsColorString( s ) ) {
memcpy( newColor, g_color_table[ColorIndex(*(s+1))], sizeof( newColor ) );
newColor[3] = color[3];
@@ -2362,7 +2349,7 @@ static void UI_DrawKeyBindStatus(rectDef_t *rect, float scale, vec4_t color, int
static void UI_DrawGLInfo(rectDef_t *rect, float scale, vec4_t color, int textStyle) {
char * eptr;
- char buff[4096];
+ char buff[1024];
const char *lines[64];
int y, numLines, i;
@@ -2371,7 +2358,10 @@ static void UI_DrawGLInfo(rectDef_t *rect, float scale, vec4_t color, int textSt
Text_Paint(rect->x + 2, rect->y + 30, scale, color, va ("PIXELFORMAT: color(%d-bits) Z(%d-bits) stencil(%d-bits)", uiInfo.uiDC.glconfig.colorBits, uiInfo.uiDC.glconfig.depthBits, uiInfo.uiDC.glconfig.stencilBits), 0, 30, textStyle);
// build null terminated extension strings
- Q_strncpyz(buff, uiInfo.uiDC.glconfig.extensions_string, 4096);
+ // TTimo: https://zerowing.idsoftware.com/bugzilla/show_bug.cgi?id=399
+ // in TA this was not directly crashing, but displaying a nasty broken shader right in the middle
+ // brought down the string size to 1024, there's not much that can be shown on the screen anyway
+ Q_strncpyz(buff, uiInfo.uiDC.glconfig.extensions_string, 1024);
eptr = buff;
y = rect->y + 45;
numLines = 0;
@@ -2923,8 +2913,12 @@ static qboolean UI_NetSource_HandleKey(int flags, float *special, int key) {
if (key == K_MOUSE2) {
ui_netSource.integer--;
+ if (ui_netSource.integer == AS_MPLAYER)
+ ui_netSource.integer--;
} else {
ui_netSource.integer++;
+ if (ui_netSource.integer == AS_MPLAYER)
+ ui_netSource.integer++;
}
Com_Printf( "pre ui_netSource: %d\n", ui_netSource.integer );
@@ -4356,12 +4350,15 @@ static void UI_RunMenuScript(char **args) {
} else if (Q_stricmp(name, "glCustom") == 0) {
trap_Cvar_Set("ui_glCustom", "4");
} else if (Q_stricmp(name, "update") == 0) {
- if (String_Parse(args, &name2)) {
+ if (String_Parse(args, &name2))
UI_Update(name2);
+ } else if (Q_stricmp(name, "setPbClStatus") == 0) {
+ int stat;
+ if ( Int_Parse( args, &stat ) )
+ trap_SetPbClStatus( stat );
}
else {
Com_Printf("unknown UI script %s\n", name);
- }
}
}
}
@@ -5140,7 +5137,7 @@ static const char *UI_FeederItemText(float feederID, int index, int column, qhan
return UI_SelectedMap(index, &actual);
} else if (feederID == FEEDER_SERVERS) {
if (index >= 0 && index < uiInfo.serverStatus.numDisplayServers) {
- int ping, game;
+ int ping, game, punkbuster;
if (lastColumn != column || lastTime > uiInfo.uiDC.realTime + 5000) {
trap_LAN_GetServerInfo(ui_netSource.integer, uiInfo.serverStatus.displayServers[index], info, MAX_STRING_CHARS);
lastColumn = column;
@@ -5164,13 +5161,8 @@ static const char *UI_FeederItemText(float feederID, int index, int column, qhan
return hostname;
}
else {
- if (atoi(Info_ValueForKey(info, "sv_allowAnonymous")) != 0) { // anonymous server
- Com_sprintf( hostname, sizeof(hostname), "(A) %s",
- Info_ValueForKey(info, "hostname"));
- } else {
- Com_sprintf( hostname, sizeof(hostname), "%s",
- Info_ValueForKey(info, "hostname"));
- }
+ Com_sprintf( hostname, sizeof(hostname), "%s", Info_ValueForKey(info, "hostname"));
+
return hostname;
}
}
@@ -5185,6 +5177,13 @@ static const char *UI_FeederItemText(float feederID, int index, int column, qhan
} else {
return Info_ValueForKey(info, "ping");
}
+ case SORT_PUNKBUSTER:
+ punkbuster = atoi(Info_ValueForKey(info, "punkbuster"));
+ if ( punkbuster ) {
+ return "Yes";
+ } else {
+ return "No";
+ }
}
}
} else if (feederID == FEEDER_SERVERSTATUS) {
@@ -6264,6 +6263,62 @@ void Text_PaintCenter(float x, float y, float scale, vec4_t color, const char *t
Text_Paint(x - len / 2, y, scale, color, text, 0, 0, ITEM_TEXTSTYLE_SHADOWEDMORE);
}
+void Text_PaintCenter_AutoWrapped(float x, float y, float xmax, float ystep, float scale, vec4_t color, const char *str, float adjust) {
+ int width;
+ char *s1,*s2,*s3;
+ char c_bcp;
+ char buf[1024];
+
+ if (!str || str[0]=='\0')
+ return;
+
+ Q_strncpyz(buf, str, sizeof(buf));
+ s1 = s2 = s3 = buf;
+
+ while (1) {
+ do {
+ s3++;
+ } while (*s3!=' ' && *s3!='\0');
+ c_bcp = *s3;
+ *s3 = '\0';
+ width = Text_Width(s1, scale, 0);
+ *s3 = c_bcp;
+ if (width > xmax) {
+ if (s1==s2)
+ {
+ // fuck, don't have a clean cut, we'll overflow
+ s2 = s3;
+ }
+ *s2 = '\0';
+ Text_PaintCenter(x, y, scale, color, s1, adjust);
+ y += ystep;
+ if (c_bcp == '\0')
+ {
+ // that was the last word
+ // we could start a new loop, but that wouldn't be much use
+ // even if the word is too long, we would overflow it (see above)
+ // so just print it now if needed
+ s2++;
+ if (*s2 != '\0') // if we are printing an overflowing line we have s2 == s3
+ Text_PaintCenter(x, y, scale, color, s2, adjust);
+ break;
+ }
+ s2++;
+ s1 = s2;
+ s3 = s2;
+ }
+ else
+ {
+ s2 = s3;
+ if (c_bcp == '\0') // we reached the end
+ {
+ Text_PaintCenter(x, y, scale, color, s1, adjust);
+ break;
+ }
+ }
+ }
+}
+
static void UI_DisplayDownloadInfo( const char *downloadName, float centerPoint, float yStart, float scale ) {
static char dlText[] = "Downloading:";
@@ -6382,13 +6437,12 @@ void UI_DrawConnectScreen( qboolean overlay ) {
Text_PaintCenter(centerPoint, yStart + 48, scale, colorWhite,text , ITEM_TEXTSTYLE_SHADOWEDMORE);
}
- //UI_DrawProportionalString( 320, 96, "Press Esc to abort", UI_CENTER|UI_SMALLFONT|UI_DROPSHADOW, menu_text_color );
// display global MOTD at bottom
Text_PaintCenter(centerPoint, 600, scale, colorWhite, Info_ValueForKey( cstate.updateInfoString, "motd" ), 0);
// print any server info (server full, bad version, etc)
if ( cstate.connState < CA_CONNECTED ) {
- Text_PaintCenter(centerPoint, yStart + 176, scale, colorWhite, cstate.messageString, 0);
+ Text_PaintCenter_AutoWrapped(centerPoint, yStart + 176, 630, 20, scale, colorWhite, cstate.messageString, 0);
}
if ( lastConnState > cstate.connState ) {
diff --git a/src/ui/ui_public.h b/src/ui/ui_public.h
index 29f795fb..6e9e261f 100644
--- a/src/ui/ui_public.h
+++ b/src/ui/ui_public.h
@@ -115,6 +115,9 @@ typedef enum {
UI_LAN_GETSERVERPING,
UI_LAN_SERVERISVISIBLE,
UI_LAN_COMPARESERVERS,
+ // 1.32
+ UI_FS_SEEK,
+ UI_SET_PBCLSTATUS,
UI_MEMSET = 100,
UI_MEMCPY,
@@ -137,10 +140,11 @@ typedef enum {
UIMENU_POSTGAME
} uiMenuCommand_t;
-#define SORT_HOST 0
-#define SORT_MAP 1
-#define SORT_CLIENTS 2
-#define SORT_PING 3
+#define SORT_HOST 0
+#define SORT_MAP 1
+#define SORT_CLIENTS 2
+#define SORT_PING 3
+#define SORT_PUNKBUSTER 4
typedef enum {
UI_GETAPIVERSION = 0, // system reserved
diff --git a/src/ui/ui_shared.c b/src/ui/ui_shared.c
index e17416bb..73244fef 100644
--- a/src/ui/ui_shared.c
+++ b/src/ui/ui_shared.c
@@ -1081,6 +1081,22 @@ void Script_Open(itemDef_t *item, char **args) {
}
}
+void Script_ConditionalOpen(itemDef_t *item, char **args) {
+ const char *cvar;
+ const char *name1;
+ const char *name2;
+ float val;
+
+ if ( String_Parse(args, &cvar) && String_Parse(args, &name1) && String_Parse(args, &name2) ) {
+ val = DC->getCVarValue( cvar );
+ if ( val == 0.f ) {
+ Menus_OpenByName(name2);
+ } else {
+ Menus_OpenByName(name1);
+ }
+ }
+}
+
void Script_Close(itemDef_t *item, char **args) {
const char *name;
if (String_Parse(args, &name)) {
@@ -1227,7 +1243,8 @@ commandDef_t commandList[] =
{"show", &Script_Show}, // group/name
{"hide", &Script_Hide}, // group/name
{"setcolor", &Script_SetColor}, // works on this
- {"open", &Script_Open}, // nenu
+ {"open", &Script_Open}, // menu
+ {"conditionalopen", &Script_ConditionalOpen}, // menu
{"close", &Script_Close}, // menu
{"setasset", &Script_SetAsset}, // works on this
{"setbackground", &Script_SetBackground}, // works on this
diff --git a/src/ui/ui_syscalls.asm b/src/ui/ui_syscalls.asm
index 4b00201a..54255f29 100644
--- a/src/ui/ui_syscalls.asm
+++ b/src/ui/ui_syscalls.asm
@@ -1,101 +1,103 @@
code
-equ trap_Error -1
-equ trap_Print -2
-equ trap_Milliseconds -3
-equ trap_Cvar_Set -4
-equ trap_Cvar_VariableValue -5
-equ trap_Cvar_VariableStringBuffer -6
-equ trap_Cvar_SetValue -7
-equ trap_Cvar_Reset -8
-equ trap_Cvar_Create -9
-equ trap_Cvar_InfoStringBuffer -10
-equ trap_Argc -11
-equ trap_Argv -12
-equ trap_Cmd_ExecuteText -13
-equ trap_FS_FOpenFile -14
-equ trap_FS_Read -15
-equ trap_FS_Write -16
-equ trap_FS_FCloseFile -17
-equ trap_FS_GetFileList -18
-equ trap_R_RegisterModel -19
-equ trap_R_RegisterSkin -20
-equ trap_R_RegisterShaderNoMip -21
-equ trap_R_ClearScene -22
-equ trap_R_AddRefEntityToScene -23
-equ trap_R_AddPolyToScene -24
-equ trap_R_AddLightToScene -25
-equ trap_R_RenderScene -26
-equ trap_R_SetColor -27
-equ trap_R_DrawStretchPic -28
-equ trap_UpdateScreen -29
-equ trap_CM_LerpTag -30
-equ trap_CM_LoadModel -31
-equ trap_S_RegisterSound -32
-equ trap_S_StartLocalSound -33
-equ trap_Key_KeynumToStringBuf -34
-equ trap_Key_GetBindingBuf -35
-equ trap_Key_SetBinding -36
-equ trap_Key_IsDown -37
-equ trap_Key_GetOverstrikeMode -38
-equ trap_Key_SetOverstrikeMode -39
-equ trap_Key_ClearStates -40
-equ trap_Key_GetCatcher -41
-equ trap_Key_SetCatcher -42
-equ trap_GetClipboardData -43
-equ trap_GetGlconfig -44
-equ trap_GetClientState -45
-equ trap_GetConfigString -46
-equ trap_LAN_GetPingQueueCount -47
-equ trap_LAN_ClearPing -48
-equ trap_LAN_GetPing -49
-equ trap_LAN_GetPingInfo -50
-equ trap_Cvar_Register -51
-equ trap_Cvar_Update -52
-equ trap_MemoryRemaining -53
-equ trap_GetCDKey -54
-equ trap_SetCDKey -55
-equ trap_R_RegisterFont -56
-equ trap_R_ModelBounds -57
-equ trap_PC_AddGlobalDefine -58
-equ trap_PC_LoadSource -59
-equ trap_PC_FreeSource -60
-equ trap_PC_ReadToken -61
-equ trap_PC_SourceFileAndLine -62
-equ trap_S_StopBackgroundTrack -63
-equ trap_S_StartBackgroundTrack -64
-equ trap_RealTime -65
-equ trap_LAN_GetServerCount -66
-equ trap_LAN_GetServerAddressString -67
-equ trap_LAN_GetServerInfo -68
-equ trap_LAN_MarkServerVisible -69
-equ trap_LAN_UpdateVisiblePings -70
-equ trap_LAN_ResetPings -71
-equ trap_LAN_LoadCachedServers -72
-equ trap_LAN_SaveCachedServers -73
-equ trap_LAN_AddServer -74
-equ trap_LAN_RemoveServer -75
-equ trap_CIN_PlayCinematic -76
-equ trap_CIN_StopCinematic -77
-equ trap_CIN_RunCinematic -78
-equ trap_CIN_DrawCinematic -79
-equ trap_CIN_SetExtents -80
-equ trap_R_RemapShader -81
-equ trap_VerifyCDKey -82
-equ trap_LAN_ServerStatus -83
-equ trap_LAN_GetServerPing -84
-equ trap_LAN_ServerIsVisible -85
-equ trap_LAN_CompareServers -86
-equ trap_FS_Seek -87
+equ trap_Error -1
+equ trap_Print -2
+equ trap_Milliseconds -3
+equ trap_Cvar_Set -4
+equ trap_Cvar_VariableValue -5
+equ trap_Cvar_VariableStringBuffer -6
+equ trap_Cvar_SetValue -7
+equ trap_Cvar_Reset -8
+equ trap_Cvar_Create -9
+equ trap_Cvar_InfoStringBuffer -10
+equ trap_Argc -11
+equ trap_Argv -12
+equ trap_Cmd_ExecuteText -13
+equ trap_FS_FOpenFile -14
+equ trap_FS_Read -15
+equ trap_FS_Write -16
+equ trap_FS_FCloseFile -17
+equ trap_FS_GetFileList -18
+equ trap_R_RegisterModel -19
+equ trap_R_RegisterSkin -20
+equ trap_R_RegisterShaderNoMip -21
+equ trap_R_ClearScene -22
+equ trap_R_AddRefEntityToScene -23
+equ trap_R_AddPolyToScene -24
+equ trap_R_AddLightToScene -25
+equ trap_R_RenderScene -26
+equ trap_R_SetColor -27
+equ trap_R_DrawStretchPic -28
+equ trap_UpdateScreen -29
+equ trap_CM_LerpTag -30
+equ trap_CM_LoadModel -31
+equ trap_S_RegisterSound -32
+equ trap_S_StartLocalSound -33
+equ trap_Key_KeynumToStringBuf -34
+equ trap_Key_GetBindingBuf -35
+equ trap_Key_SetBinding -36
+equ trap_Key_IsDown -37
+equ trap_Key_GetOverstrikeMode -38
+equ trap_Key_SetOverstrikeMode -39
+equ trap_Key_ClearStates -40
+equ trap_Key_GetCatcher -41
+equ trap_Key_SetCatcher -42
+equ trap_GetClipboardData -43
+equ trap_GetGlconfig -44
+equ trap_GetClientState -45
+equ trap_GetConfigString -46
+equ trap_LAN_GetPingQueueCount -47
+equ trap_LAN_ClearPing -48
+equ trap_LAN_GetPing -49
+equ trap_LAN_GetPingInfo -50
+equ trap_Cvar_Register -51
+equ trap_Cvar_Update -52
+equ trap_MemoryRemaining -53
+equ trap_GetCDKey -54
+equ trap_SetCDKey -55
+equ trap_R_RegisterFont -56
+equ trap_R_ModelBounds -57
+equ trap_PC_AddGlobalDefine -58
+equ trap_PC_LoadSource -59
+equ trap_PC_FreeSource -60
+equ trap_PC_ReadToken -61
+equ trap_PC_SourceFileAndLine -62
+equ trap_S_StopBackgroundTrack -63
+equ trap_S_StartBackgroundTrack -64
+equ trap_RealTime -65
+equ trap_LAN_GetServerCount -66
+equ trap_LAN_GetServerAddressString -67
+equ trap_LAN_GetServerInfo -68
+equ trap_LAN_MarkServerVisible -69
+equ trap_LAN_UpdateVisiblePings -70
+equ trap_LAN_ResetPings -71
+equ trap_LAN_LoadCachedServers -72
+equ trap_LAN_SaveCachedServers -73
+equ trap_LAN_AddServer -74
+equ trap_LAN_RemoveServer -75
+equ trap_CIN_PlayCinematic -76
+equ trap_CIN_StopCinematic -77
+equ trap_CIN_RunCinematic -78
+equ trap_CIN_DrawCinematic -79
+equ trap_CIN_SetExtents -80
+equ trap_R_RemapShader -81
+equ trap_VerifyCDKey -82
+equ trap_LAN_ServerStatus -83
+equ trap_LAN_GetServerPing -84
+equ trap_LAN_ServerIsVisible -85
+equ trap_LAN_CompareServers -86
+equ trap_FS_Seek -87
+equ trap_SetPbClStatus -88
-equ memset -101
-equ memcpy -102
-equ strncpy -103
-equ sin -104
-equ cos -105
-equ atan2 -106
-equ sqrt -107
-equ floor -108
-equ ceil -109
+
+equ memset -101
+equ memcpy -102
+equ strncpy -103
+equ sin -104
+equ cos -105
+equ atan2 -106
+equ sqrt -107
+equ floor -108
+equ ceil -109
diff --git a/src/ui/ui_syscalls.c b/src/ui/ui_syscalls.c
index 2cb5edc8..294d30f0 100644
--- a/src/ui/ui_syscalls.c
+++ b/src/ui/ui_syscalls.c
@@ -113,6 +113,10 @@ int trap_FS_GetFileList( const char *path, const char *extension, char *listbuf
return syscall( UI_FS_GETFILELIST, path, extension, listbuf, bufsize );
}
+int trap_FS_Seek( fileHandle_t f, long offset, int origin ) {
+ return syscall( UI_FS_SEEK, f, offset, origin );
+}
+
qhandle_t trap_R_RegisterModel( const char *name ) {
return syscall( UI_R_REGISTERMODEL, name );
}
@@ -383,4 +387,6 @@ qboolean trap_VerifyCDKey( const char *key, const char *chksum) {
return syscall( UI_VERIFY_CDKEY, key, chksum);
}
-
+void trap_SetPbClStatus( int status ) {
+ syscall( UI_SET_PBCLSTATUS, status );
+}