[ioquake3] 72/136: Automatically get initial Internet servers in Team Arena UI
Simon McVittie
smcv at debian.org
Thu Jun 15 09:09:11 UTC 2017
This is an automated email from the git hooks/post-receive script.
smcv pushed a commit to branch debian/master
in repository ioquake3.
commit e8f092637c7fd286555e84a2754f9599d30bb42b
Author: Zack Middleton <zack at cloemail.com>
Date: Thu Jun 1 13:35:09 2017 -0500
Automatically get initial Internet servers in Team Arena UI
Having to manually request the list, with two buttons (get new
list, refresh list) is somewhat confusing. Also since it looks
like there are no servers, users might not try to figure out
how to get the server list.
The first time viewing a master server list in Team Arena UI,
automatically request a new server list. After that the cache
will be available with a timestamp of the last refresh time.
I think this will make it easier to understand how the menu
works.
This may cause unneeded updating of the server cache because the
last refresh timestamp is per-fs_game but the server cache is
shared by all games. This will only occur once for each game
though so it's not a big concern.
---
code/ui/ui_main.c | 29 ++++++++++++++++++-----------
1 file changed, 18 insertions(+), 11 deletions(-)
diff --git a/code/ui/ui_main.c b/code/ui/ui_main.c
index 8bb3522..63d90eb 100644
--- a/code/ui/ui_main.c
+++ b/code/ui/ui_main.c
@@ -114,7 +114,7 @@ static int gamecodetoui[] = {4,2,3,0,5,1,6};
static int uitogamecode[] = {4,6,2,3,1,5,7};
-static void UI_StartServerRefresh(qboolean full);
+static void UI_StartServerRefresh(qboolean full, qboolean force);
static void UI_StopServerRefresh( void );
static void UI_DoServerRefresh( void );
static void UI_FeederSelection(float feederID, int index);
@@ -2503,9 +2503,7 @@ static qboolean UI_NetSource_HandleKey(int flags, float *special, int key) {
}
UI_BuildServerDisplayList(qtrue);
- if (!(ui_netSource.integer >= UIAS_GLOBAL1 && ui_netSource.integer <= UIAS_GLOBAL5)) {
- UI_StartServerRefresh(qtrue);
- }
+ UI_StartServerRefresh(qtrue, qfalse);
trap_Cvar_SetValue( "ui_netSource", ui_netSource.integer);
return qtrue;
}
@@ -3277,10 +3275,10 @@ static void UI_RunMenuScript(char **args) {
} else if (Q_stricmp(name, "resetScores") == 0) {
UI_ClearScores();
} else if (Q_stricmp(name, "RefreshServers") == 0) {
- UI_StartServerRefresh(qtrue);
+ UI_StartServerRefresh(qtrue, qtrue);
UI_BuildServerDisplayList(qtrue);
} else if (Q_stricmp(name, "RefreshFilter") == 0) {
- UI_StartServerRefresh(qfalse);
+ UI_StartServerRefresh(qfalse, qtrue);
UI_BuildServerDisplayList(qtrue);
} else if (Q_stricmp(name, "RunSPDemo") == 0) {
if (uiInfo.demoAvailable) {
@@ -3322,9 +3320,8 @@ static void UI_RunMenuScript(char **args) {
uiInfo.nextServerStatusRefresh = 0;
uiInfo.nextFindPlayerRefresh = 0;
} else if (Q_stricmp(name, "UpdateFilter") == 0) {
- if (ui_netSource.integer == UIAS_LOCAL) {
- UI_StartServerRefresh(qtrue);
- }
+ // UpdateFilter is called when server broser menu is opened and when a favorite server is deleted.
+ UI_StartServerRefresh(qtrue, qfalse);
UI_BuildServerDisplayList(qtrue);
UI_FeederSelection(FEEDER_SERVERS, 0);
} else if (Q_stricmp(name, "ServerStatus") == 0) {
@@ -5949,12 +5946,22 @@ static void UI_DoServerRefresh( void )
UI_StartServerRefresh
=================
*/
-static void UI_StartServerRefresh(qboolean full)
+static void UI_StartServerRefresh(qboolean full, qboolean force)
{
char *ptr;
int lanSource;
-
qtime_t q;
+
+ // This function is called with force=qfalse when server browser menu opens or net source changes.
+ // Automatically update local and favorite servers.
+ // Only update master server list the first time because the server info cache will be available after that.
+ if ( !force && ( ui_netSource.integer >= UIAS_GLOBAL1 && ui_netSource.integer <= UIAS_GLOBAL5 ) ) {
+ char *value = UI_Cvar_VariableString( va( "ui_lastServerRefresh_%i", ui_netSource.integer ) );
+ if ( value[0] != 0 ) {
+ return; // should have cached list
+ }
+ }
+
trap_RealTime(&q);
trap_Cvar_Set( va("ui_lastServerRefresh_%i", ui_netSource.integer), va("%s-%i, %i at %i:%i", MonthAbbrev[q.tm_mon],q.tm_mday, 1900+q.tm_year,q.tm_hour,q.tm_min));
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-games/ioquake3.git
More information about the Pkg-games-commits
mailing list