summaryrefslogtreecommitdiff
path: root/src/ui
diff options
context:
space:
mode:
Diffstat (limited to 'src/ui')
-rw-r--r--src/ui/ui_gameinfo.c29
-rw-r--r--src/ui/ui_local.h6
-rw-r--r--src/ui/ui_main.c165
-rw-r--r--src/ui/ui_shared.c23
4 files changed, 197 insertions, 26 deletions
diff --git a/src/ui/ui_gameinfo.c b/src/ui/ui_gameinfo.c
index ab3ce6da..90047b9d 100644
--- a/src/ui/ui_gameinfo.c
+++ b/src/ui/ui_gameinfo.c
@@ -162,7 +162,7 @@ void UI_LoadArenas( void ) {
strcat(filename, dirptr);
UI_LoadArenasFromFile(filename);
}
- trap_Print( va( "%i arenas parsed\n", ui_numArenas ) );
+ trap_Print( va( "[skipnotify]%i arenas parsed\n", ui_numArenas ) );
if (UI_OutOfMemory()) {
trap_Print(S_COLOR_YELLOW"WARNING: not anough memory in pool to load all arenas\n");
}
@@ -305,3 +305,30 @@ char *UI_GetBotNameByNumber( int num ) {
}
return "Sarge";
}
+
+void UI_ServerInfo( void )
+{
+ char info[ MAX_INFO_VALUE ];
+ int i;
+
+ info[0] = '\0';
+ if( trap_GetConfigString( CS_SERVERINFO, info, sizeof( info ) ) )
+ {
+ trap_Cvar_Set( "ui_serverinfo_mapname",
+ Info_ValueForKey( info, "mapname" ) );
+ trap_Cvar_Set( "ui_serverinfo_timelimit",
+ Info_ValueForKey( info, "timelimit" ) );
+ trap_Cvar_Set( "ui_serverinfo_sd",
+ Info_ValueForKey( info, "g_suddenDeathTime" ) );
+ trap_Cvar_Set( "ui_serverinfo_hostname",
+ Info_ValueForKey( info, "sv_hostname" ) );
+ trap_Cvar_Set( "ui_serverinfo_maxclients",
+ Info_ValueForKey( info, "sv_maxclients" ) );
+ trap_Cvar_Set( "ui_serverinfo_version",
+ Info_ValueForKey( info, "version" ) );
+ trap_Cvar_Set( "ui_serverinfo_unlagged",
+ Info_ValueForKey( info, "g_unlagged" ) );
+ trap_Cvar_Set( "ui_serverinfo_ff",
+ Info_ValueForKey( info, "ff" ) );
+ }
+}
diff --git a/src/ui/ui_local.h b/src/ui/ui_local.h
index def61dc3..7afdf653 100644
--- a/src/ui/ui_local.h
+++ b/src/ui/ui_local.h
@@ -360,6 +360,7 @@ int UI_AdjustTimeByGame(int time);
void UI_ShowPostGame(qboolean newHigh);
void UI_ClearScores( void );
void UI_LoadArenas(void);
+void UI_ServerInfo(void);
//
// ui_menu.c
@@ -818,11 +819,16 @@ typedef struct {
int playerRefresh;
int playerIndex;
int playerNumber;
+ int myPlayerIndex;
+ int ignoreIndex;
qboolean teamLeader;
char playerNames[MAX_CLIENTS][MAX_NAME_LENGTH];
+ char rawPlayerNames[MAX_CLIENTS][MAX_NAME_LENGTH];
char teamNames[MAX_CLIENTS][MAX_NAME_LENGTH];
+ char rawTeamNames[MAX_CLIENTS][MAX_NAME_LENGTH];
int clientNums[MAX_CLIENTS];
int teamClientNums[MAX_CLIENTS];
+ clientList_t ignoreList[MAX_CLIENTS];
int mapCount;
mapInfo mapList[MAX_MAPS];
diff --git a/src/ui/ui_main.c b/src/ui/ui_main.c
index f3a81f5a..ea7f84f4 100644
--- a/src/ui/ui_main.c
+++ b/src/ui/ui_main.c
@@ -1964,6 +1964,28 @@ static void UI_DrawAllMapsSelection(rectDef_t *rect, float scale, vec4_t color,
}
}
+static void UI_DrawPlayerListSelection( rectDef_t *rect, float scale,
+ vec4_t color, int textStyle )
+{
+ if( uiInfo.playerIndex >= 0 && uiInfo.playerIndex < uiInfo.playerCount )
+ {
+ Text_Paint(rect->x, rect->y, scale, color,
+ uiInfo.rawPlayerNames[ uiInfo.playerIndex ],
+ 0, 0, textStyle);
+ }
+}
+
+static void UI_DrawTeamListSelection( rectDef_t *rect, float scale,
+ vec4_t color, int textStyle )
+{
+ if( uiInfo.teamIndex >= 0 && uiInfo.teamIndex < uiInfo.myTeamCount )
+ {
+ Text_Paint(rect->x, rect->y, scale, color,
+ uiInfo.rawTeamNames[ uiInfo.teamIndex ],
+ 0, 0, textStyle);
+ }
+}
+
static void UI_DrawOpponentName(rectDef_t *rect, float scale, vec4_t color, int textStyle) {
Text_Paint(rect->x, rect->y, scale, color, UI_Cvar_VariableString("ui_opponentName"), 0, 0, textStyle);
}
@@ -2064,6 +2086,10 @@ static int UI_OwnerDrawWidth(int ownerDraw, float scale) {
break;
case UI_ALLMAPS_SELECTION:
break;
+ case UI_PLAYERLIST_SELECTION:
+ break;
+ case UI_TEAMLIST_SELECTION:
+ break;
case UI_OPPONENT_NAME:
break;
case UI_KEYBINDSTATUS:
@@ -2127,18 +2153,29 @@ static void UI_BuildPlayerList( void ) {
count = atoi( Info_ValueForKey( info, "sv_maxclients" ) );
uiInfo.playerCount = 0;
uiInfo.myTeamCount = 0;
+ uiInfo.myPlayerIndex = 0;
playerTeamNumber = 0;
for( n = 0; n < count; n++ ) {
trap_GetConfigString( CS_PLAYERS + n, info, MAX_INFO_STRING );
if (info[0]) {
- Q_strncpyz( uiInfo.playerNames[uiInfo.playerCount], Info_ValueForKey( info, "n" ), MAX_NAME_LENGTH );
+ BG_ClientListParse( &uiInfo.ignoreList[ uiInfo.playerCount ],
+ Info_ValueForKey( info, "ig" ) );
+ Q_strncpyz( uiInfo.rawPlayerNames[uiInfo.playerCount],
+ Info_ValueForKey( info, "n" ), MAX_NAME_LENGTH );
+ Q_strncpyz( uiInfo.playerNames[uiInfo.playerCount],
+ Info_ValueForKey( info, "n" ), MAX_NAME_LENGTH );
Q_CleanStr( uiInfo.playerNames[uiInfo.playerCount] );
uiInfo.clientNums[uiInfo.playerCount] = n;
+ if( n == uiInfo.playerNumber )
+ uiInfo.myPlayerIndex = uiInfo.playerCount;
uiInfo.playerCount++;
team2 = atoi(Info_ValueForKey(info, "t"));
if (team2 == team) {
- Q_strncpyz( uiInfo.teamNames[uiInfo.myTeamCount], Info_ValueForKey( info, "n" ), MAX_NAME_LENGTH );
+ Q_strncpyz( uiInfo.rawTeamNames[uiInfo.myTeamCount],
+ Info_ValueForKey( info, "n" ), MAX_NAME_LENGTH );
+ Q_strncpyz( uiInfo.teamNames[uiInfo.myTeamCount],
+ Info_ValueForKey( info, "n" ), MAX_NAME_LENGTH );
Q_CleanStr( uiInfo.teamNames[uiInfo.myTeamCount] );
uiInfo.teamClientNums[uiInfo.myTeamCount] = n;
if (uiInfo.playerNumber == n) {
@@ -2164,11 +2201,19 @@ static void UI_BuildPlayerList( void ) {
static void UI_DrawSelectedPlayer(rectDef_t *rect, float scale, vec4_t color, int textStyle) {
+ char name[ MAX_NAME_LENGTH ];
+ char *s;
+
if (uiInfo.uiDC.realTime > uiInfo.playerRefresh) {
uiInfo.playerRefresh = uiInfo.uiDC.realTime + 3000;
UI_BuildPlayerList();
}
- Text_Paint(rect->x, rect->y, scale, color, (uiInfo.teamLeader) ? UI_Cvar_VariableString("cg_selectedPlayerName") : UI_Cvar_VariableString("name") , 0, 0, textStyle);
+ if( uiInfo.teamLeader )
+ s = UI_Cvar_VariableString("cg_selectedPlayerName");
+ else
+ s = UI_Cvar_VariableString("name");
+ Q_strncpyz( name, s, sizeof( name ) );
+ Text_Paint(rect->x, rect->y, scale, color, name, 0, 0, textStyle);
}
static void UI_DrawServerRefreshDate(rectDef_t *rect, float scale, vec4_t color, int textStyle) {
@@ -2478,6 +2523,12 @@ static void UI_OwnerDraw( float x, float y, float w, float h,
case UI_MAPS_SELECTION:
UI_DrawAllMapsSelection(&rect, scale, color, textStyle, qfalse);
break;
+ case UI_PLAYERLIST_SELECTION:
+ UI_DrawPlayerListSelection(&rect, scale, color, textStyle);
+ break;
+ case UI_TEAMLIST_SELECTION:
+ UI_DrawTeamListSelection(&rect, scale, color, textStyle);
+ break;
case UI_OPPONENT_NAME:
UI_DrawOpponentName(&rect, scale, color, textStyle);
break;
@@ -3904,6 +3955,8 @@ static void UI_RunMenuScript(char **args) {
UI_LoadArenas();
UI_MapCountByGameType(qfalse);
Menu_SetFeederSelection(NULL, FEEDER_ALLMAPS, 0, "createserver");
+ } else if (Q_stricmp(name, "loadServerInfo") == 0) {
+ UI_ServerInfo();
} else if (Q_stricmp(name, "saveControls") == 0) {
Controls_SetConfig(qtrue);
} else if (Q_stricmp(name, "loadControls") == 0) {
@@ -4142,15 +4195,47 @@ static void UI_RunMenuScript(char **args) {
{
if( uiInfo.playerIndex >= 0 && uiInfo.playerIndex < uiInfo.playerCount )
{
- trap_Cmd_ExecuteText( EXEC_APPEND, va( "callvote clientkick %d\n",
+ trap_Cmd_ExecuteText( EXEC_APPEND, va( "callvote kick %d\n",
+ uiInfo.clientNums[ uiInfo.playerIndex ] ) );
+ }
+ }
+ else if( Q_stricmp( name, "voteMute" ) == 0 )
+ {
+ if( uiInfo.playerIndex >= 0 && uiInfo.playerIndex < uiInfo.playerCount )
+ {
+ trap_Cmd_ExecuteText( EXEC_APPEND, va( "callvote mute %d\n",
+ uiInfo.clientNums[ uiInfo.playerIndex ] ) );
+ }
+ }
+ else if( Q_stricmp( name, "voteUnMute" ) == 0 )
+ {
+ if( uiInfo.playerIndex >= 0 && uiInfo.playerIndex < uiInfo.playerCount )
+ {
+ trap_Cmd_ExecuteText( EXEC_APPEND, va( "callvote unmute %d\n",
uiInfo.clientNums[ uiInfo.playerIndex ] ) );
}
}
else if( Q_stricmp( name, "voteTeamKick" ) == 0 )
{
- if( uiInfo.teamIndex >= 0 && uiInfo.teamIndex < uiInfo.playerCount )
+ if( uiInfo.teamIndex >= 0 && uiInfo.teamIndex < uiInfo.myTeamCount )
{
- trap_Cmd_ExecuteText( EXEC_APPEND, va( "callteamvote teamclientkick %d\n",
+ trap_Cmd_ExecuteText( EXEC_APPEND, va( "callteamvote kick %d\n",
+ uiInfo.teamClientNums[ uiInfo.teamIndex ] ) );
+ }
+ }
+ else if( Q_stricmp( name, "voteTeamDenyBuild" ) == 0 )
+ {
+ if( uiInfo.teamIndex >= 0 && uiInfo.teamIndex < uiInfo.myTeamCount )
+ {
+ trap_Cmd_ExecuteText( EXEC_APPEND, va( "callteamvote denybuild %d\n",
+ uiInfo.teamClientNums[ uiInfo.teamIndex ] ) );
+ }
+ }
+ else if( Q_stricmp( name, "voteTeamAllowBuild" ) == 0 )
+ {
+ if( uiInfo.teamIndex >= 0 && uiInfo.teamIndex < uiInfo.myTeamCount )
+ {
+ trap_Cmd_ExecuteText( EXEC_APPEND, va( "callteamvote allowbuild %d\n",
uiInfo.teamClientNums[ uiInfo.teamIndex ] ) );
}
}
@@ -4271,6 +4356,51 @@ static void UI_RunMenuScript(char **args) {
} else if (Q_stricmp(name, "update") == 0) {
if (String_Parse(args, &name2))
UI_Update(name2);
+ } else if (Q_stricmp(name, "InitIgnoreList") == 0) {
+ UI_BuildPlayerList();
+ } else if (Q_stricmp(name, "ToggleIgnore") == 0) {
+ if( uiInfo.ignoreIndex >= 0 && uiInfo.ignoreIndex < uiInfo.playerCount )
+ {
+ if( BG_ClientListTest( &uiInfo.ignoreList[ uiInfo.myPlayerIndex ],
+ uiInfo.clientNums[ uiInfo.ignoreIndex ] ) )
+ {
+ BG_ClientListRemove( &uiInfo.ignoreList[ uiInfo.myPlayerIndex ],
+ uiInfo.clientNums[ uiInfo.ignoreIndex ] );
+ trap_Cmd_ExecuteText( EXEC_NOW, va( "unignore %i\n",
+ uiInfo.clientNums[ uiInfo.ignoreIndex ] ) );
+ }
+ else
+ {
+ BG_ClientListAdd( &uiInfo.ignoreList[ uiInfo.myPlayerIndex ],
+ uiInfo.clientNums[ uiInfo.ignoreIndex ] );
+ trap_Cmd_ExecuteText( EXEC_NOW, va( "ignore %i\n",
+ uiInfo.clientNums[ uiInfo.ignoreIndex ] ) );
+ }
+ }
+ } else if (Q_stricmp(name, "IgnorePlayer") == 0) {
+ if( uiInfo.ignoreIndex >= 0 && uiInfo.ignoreIndex < uiInfo.playerCount )
+ {
+ if( !BG_ClientListTest( &uiInfo.ignoreList[ uiInfo.myPlayerIndex ],
+ uiInfo.clientNums[ uiInfo.ignoreIndex ] ) )
+ {
+ BG_ClientListAdd( &uiInfo.ignoreList[ uiInfo.myPlayerIndex ],
+ uiInfo.clientNums[ uiInfo.ignoreIndex ] );
+ trap_Cmd_ExecuteText( EXEC_NOW, va( "ignore %i\n",
+ uiInfo.clientNums[ uiInfo.ignoreIndex ] ) );
+ }
+ }
+ } else if (Q_stricmp(name, "UnIgnorePlayer") == 0) {
+ if( uiInfo.ignoreIndex >= 0 && uiInfo.ignoreIndex < uiInfo.playerCount )
+ {
+ if( BG_ClientListTest( &uiInfo.ignoreList[ uiInfo.myPlayerIndex ],
+ uiInfo.clientNums[ uiInfo.ignoreIndex ] ) )
+ {
+ BG_ClientListRemove( &uiInfo.ignoreList[ uiInfo.myPlayerIndex ],
+ uiInfo.clientNums[ uiInfo.ignoreIndex ] );
+ trap_Cmd_ExecuteText( EXEC_NOW, va( "unignore %i\n",
+ uiInfo.clientNums[ uiInfo.ignoreIndex ] ) );
+ }
+ }
} else if (Q_stricmp(name, "setPbClStatus") == 0) {
int stat;
if ( Int_Parse( args, &stat ) )
@@ -4917,6 +5047,7 @@ UI_FeederCount
==================
*/
static int UI_FeederCount(float feederID) {
+
if (feederID == FEEDER_HEADS) {
return UI_HeadCountByTeam();
} else if (feederID == FEEDER_Q3HEADS) {
@@ -4943,6 +5074,8 @@ static int UI_FeederCount(float feederID) {
UI_BuildPlayerList();
}
return uiInfo.myTeamCount;
+ } else if (feederID == FEEDER_IGNORE_LIST) {
+ return uiInfo.playerCount;
} else if (feederID == FEEDER_MODS) {
return uiInfo.modCount;
} else if (feederID == FEEDER_DEMOS) {
@@ -5114,6 +5247,22 @@ static const char *UI_FeederItemText(float feederID, int index, int column, qhan
if (index >= 0 && index < uiInfo.myTeamCount) {
return uiInfo.teamNames[index];
}
+ } else if (feederID == FEEDER_IGNORE_LIST) {
+ if (index >= 0 && index < uiInfo.playerCount) {
+ switch( column )
+ {
+ case 1:
+ // am I ignoring him
+ return ( BG_ClientListTest(&uiInfo.ignoreList[ uiInfo.myPlayerIndex ],
+ uiInfo.clientNums[ index ] ) ) ? "X" : "";
+ case 2:
+ // is he ignoring me
+ return ( BG_ClientListTest( &uiInfo.ignoreList[ index ],
+ uiInfo.playerNumber ) ) ? "X" : "";
+ default:
+ return uiInfo.playerNames[index];
+ }
+ }
} else if (feederID == FEEDER_MODS) {
if (index >= 0 && index < uiInfo.modCount) {
if (uiInfo.modList[index].modDescr && *uiInfo.modList[index].modDescr) {
@@ -5277,6 +5426,8 @@ static void UI_FeederSelection(float feederID, int index) {
uiInfo.playerIndex = index;
} else if (feederID == FEEDER_TEAM_LIST) {
uiInfo.teamIndex = index;
+ } else if (feederID == FEEDER_IGNORE_LIST) {
+ uiInfo.ignoreIndex = index;
} else if (feederID == FEEDER_MODS) {
uiInfo.modIndex = index;
} else if (feederID == FEEDER_CINEMATICS) {
@@ -6055,6 +6206,7 @@ vmCvar_t ui_serverStatusTimeOut;
//TA: bank values
vmCvar_t ui_bank;
+vmCvar_t ui_winner;
// bk001129 - made static to avoid aliasing
@@ -6085,6 +6237,7 @@ static cvarTable_t cvarTable[] = {
{ &ui_spSkill, "g_spSkill", "2", CVAR_ARCHIVE },
{ &ui_spSelection, "ui_spSelection", "", CVAR_ROM },
+ { &ui_winner, "ui_winner", "", CVAR_ROM },
{ &ui_browserMaster, "ui_browserMaster", "0", CVAR_ARCHIVE },
{ &ui_browserGameType, "ui_browserGameType", "0", CVAR_ARCHIVE },
diff --git a/src/ui/ui_shared.c b/src/ui/ui_shared.c
index f3132378..2ca88cb6 100644
--- a/src/ui/ui_shared.c
+++ b/src/ui/ui_shared.c
@@ -3436,25 +3436,10 @@ static bind_t g_bindings[] =
{ "weapnext", ']', -1, -1, -1 },
{ "+button3", K_MOUSE3, -1, -1, -1 },
{ "+button4", K_MOUSE4, -1, -1, -1 },
- { "prevTeamMember", 'w', -1, -1, -1 },
- { "nextTeamMember", 'r', -1, -1, -1 },
- { "nextOrder", 't', -1, -1, -1 },
- { "confirmOrder", 'y', -1, -1, -1 },
- { "denyOrder", 'n', -1, -1, -1 },
- { "taskOffense", 'o', -1, -1, -1 },
- { "taskDefense", 'd', -1, -1, -1 },
- { "taskPatrol", 'p', -1, -1, -1 },
- { "taskCamp", 'c', -1, -1, -1 },
- { "taskFollow", 'f', -1, -1, -1 },
- { "taskRetrieve", 'v', -1, -1, -1 },
- { "taskEscort", 'l', -1, -1, -1 },
- { "taskOwnFlag", 'i', -1, -1, -1 },
- { "taskSuicide", 'k', -1, -1, -1 },
- { "tauntKillInsult", K_F1, -1, -1, -1 },
- { "tauntPraise", K_F2, -1, -1, -1 },
- { "tauntTaunt", K_F3, -1, -1, -1 },
- { "tauntDeathInsult", K_F4, -1, -1, -1 },
- { "tauntGauntlet", K_F5, -1, -1, -1 },
+ { "vote yes", K_F1, -1, -1, -1 },
+ { "vote no", K_F2, -1, -1, -1 },
+ { "teamvote yes", K_F3, -1, -1, -1 },
+ { "teamvote no", K_F4, -1, -1, -1 },
{ "scoresUp", K_KP_PGUP, -1, -1, -1 },
{ "scoresDown", K_KP_PGDN, -1, -1, -1 },
// bk001205 - this one below was: '-1'