Display the gamestart time in the lobby. Patch by Imarok, combined with d7d0a7f869 fixes #3476.

XPartaMupp patch reviewed by scythetwirler.

This was SVN commit r18601.
This commit is contained in:
elexis 2016-08-14 09:03:30 +00:00
parent 416049e4b4
commit e4000d11cf
4 changed files with 28 additions and 7 deletions

View File

@ -615,13 +615,30 @@ function updateGameSelection()
return;
Engine.GetGUIObjectByName("sgMapName").caption = translateMapTitle(game.niceMapName);
Engine.GetGUIObjectByName("sgNbPlayers").caption = sprintf(
let sgGameStartTime = Engine.GetGUIObjectByName("sgGameStartTime");
let sgNbPlayers = Engine.GetGUIObjectByName("sgNbPlayers");
let sgPlayersNames = Engine.GetGUIObjectByName("sgPlayersNames");
let playersNamesSize = sgPlayersNames.size;
playersNamesSize.top = game.startTime ? sgGameStartTime.size.bottom : sgNbPlayers.size.bottom;
playersNamesSize.rtop = game.startTime ? sgGameStartTime.size.rbottom : sgNbPlayers.size.rbottom;
sgPlayersNames.size = playersNamesSize;
sgGameStartTime.hidden = !game.startTime;
if (game.startTime)
sgGameStartTime.caption = sprintf(
translate("Game started at %(time)s"), {
"time": Engine.FormatMillisecondsIntoDateString(+game.startTime*1000, translate("HH:mm"))
});
sgNbPlayers.caption = sprintf(
translate("Players: %(current)s/%(total)s"), {
"current": game.nbp,
"total": game.maxnbp
});
Engine.GetGUIObjectByName("sgPlayersNames").caption = formatPlayerInfo(stringifiedTeamListToPlayerData(game.players));
sgPlayersNames.caption = formatPlayerInfo(stringifiedTeamListToPlayerData(game.players));
Engine.GetGUIObjectByName("sgMapSize").caption = translateMapSize(game.mapSize);
let mapTypeIdx = g_MapTypes.Name.indexOf(game.mapType);

View File

@ -137,16 +137,18 @@
<object size="5 284 100%-5 285" type="image" sprite="ModernWhiteLine" z="25"/>
<!-- Map Description -->
<object type="image" sprite="ModernDarkBoxWhite" size="3% 290 97% 75%">
<object type="image" sprite="ModernDarkBoxWhite" size="3% 290 97% 65%">
<object name="sgMapDescription" size="0 0 100% 100%" type="text" style="ModernText" font="sans-12"/>
</object>
<object type="image" sprite="ModernDarkBoxWhite" size="3% 75%+5 97% 99%">
<object type="image" sprite="ModernDarkBoxWhite" size="3% 65%+5 97% 99%">
<!-- Number of Players -->
<object name="sgNbPlayers" size="3% 3% 97% 12%" type="text" style="ModernLeftLabelText" text_align="center"/>
<object name="sgNbPlayers" size="3% 3% 97% 3%+15" type="text" style="ModernLeftLabelText" text_align="center"/>
<!-- Game Start Time -->
<object name="sgGameStartTime" size="3%+24 6% 97% 3%+35" type="text" style="ModernLeftLabelText" text_align="center"/>
<!-- Player Names -->
<object name="sgPlayersNames" size="0 15% 100% 100%" type="text" style="MapPlayerList"/>
<object name="sgPlayersNames" size="0 0 100% 100%" type="text" style="MapPlayerList"/>
</object>
</object>
<object name="joinGameButton" type="button" style="ModernButtonRed" size="0 100%-85 100% 100%-60" hidden="true">

View File

@ -502,7 +502,7 @@ void XmppClient::GUIGetGameList(ScriptInterface& scriptInterface, JS::MutableHan
JSAutoRequest rq(cx);
scriptInterface.Eval("([])", ret);
const char* stats[] = { "name", "ip", "port", "state", "nbp", "maxnbp", "players", "mapName", "niceMapName", "mapSize", "mapType", "victoryCondition" };
const char* stats[] = { "name", "ip", "port", "state", "nbp", "maxnbp", "players", "mapName", "niceMapName", "mapSize", "mapType", "victoryCondition", "startTime" };
for(const glooxwrapper::Tag* const& t : m_GameList)
{
JS::RootedValue game(cx);

View File

@ -307,6 +307,8 @@ class GameList():
self.gameList[JID]['state'] = 'running'
self.gameList[JID]['nbp'] = data['nbp']
self.gameList[JID]['players'] = data['players']
if 'startTime' not in self.gameList[JID]:
self.gameList[JID]['startTime'] = str(round(time.time()))
## Class which manages different game reports from clients ##
## and calls leaderboard functions as appropriate. ##