diff --git a/binaries/data/mods/official/gui/test/2_mainmenu.xml b/binaries/data/mods/official/gui/test/2_mainmenu.xml
index ec4879ec8f..befd274ea0 100644
--- a/binaries/data/mods/official/gui/test/2_mainmenu.xml
+++ b/binaries/data/mods/official/gui/test/2_mainmenu.xml
@@ -1,233 +1,243 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Player Name (temporary):
-
-
-
- Player
-
-
-
-
-
-
-
-
-
- Map Name:
-
-
-
- test01.pmp
-
-
-
- Host Game
-
-
-
-
-
-
-
-
-
-
-
- IP address:
-
-
-
- 127.0.0.1
-
-
-
- Join Game
-
-
-
-
-
-
-
-
-
-
-
-
- Map selection
-
-
-
- Type the name of the map you want to start into the box. The name is relative to /data/mods/official/maps/scenarios/.
-
-
-
- Map Name:
-
-
-
- ph2
-
-
-
- Start Game
-
-
-
-
- Abort
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {buildTime}
+
+
+
+
+
+
+
+ tooltipText
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Player
+
+
+
+
+
+
+
+
+
+
+
+
+
+ test01.pmp
+
+
+
+ Host Game
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 127.0.0.1
+
+
+
+ Join Game
+
+
+
+
+
+
+
+
+
+
+
+
+ Map selection
+
+
+
+ Type the name of the map you want to start into the box. The name is relative to /data/mods/official/maps/scenarios/.
+
+
+
+ Map Name:
+
+
+
+ ph2
+
+
+
+ Start Game
+
+
+
+
+ Abort
+
+
+
+
+
+
+
+
diff --git a/binaries/data/mods/official/gui/test/functions_pregame_load.js b/binaries/data/mods/official/gui/test/functions_pregame_load.js
index 95016d387b..127013d9b9 100644
--- a/binaries/data/mods/official/gui/test/functions_pregame_load.js
+++ b/binaries/data/mods/official/gui/test/functions_pregame_load.js
@@ -1,100 +1,103 @@
-function startLoadingScreen()
-{
-// HACK: Added to increase number of players from its default 2, until we have a session creation screen.
- g_GameAttributes.numPlayers = 9;
-
- // Switch screens from main menu to loading screen.
- GUIObjectHide("PREGAME_GUI");
- GUIObjectUnhide("loading_screen");
- console.write("Loading " + g_GameAttributes.mapFile + " (" + g_GameAttributes.numPlayers + " players) ...");
-
- getGUIObjectByName("loading_screen_titlebar_text").caption = "Loading Scenario ...";
- getGUIObjectByName("loading_screen_progress_bar_text").caption = "... Reticulating splines ...";
- getGUIObjectByName("loading_screen_progress_bar").caption = 80;
- getGUIObjectByName("loading_screen_text").caption = "LOADING " + g_GameAttributes.mapFile + " ...\nPlease wait ...\n(Yes, we know the progress bar doesn't do diddly squat right now)\nJust keep waiting ...\nIt'll get there ...\nAlmost done ...\nTrust me!";
- getGUIObjectByName("loading_screen_tip").caption = "Wise man once say ...\nHe who thinks slow, he act in haste, be rash and quick and foolish. But he that thinks too much, acts too slowly. The stupid always win, Commandersan. Remember that. You are tiny grasshopper.";
-
- // Begin game session.
- setTimeout( loadSession, 200 );
-}
-
-// ====================================================================
-
-function loadSession()
-{
- if (! startGame())
- {
- // Failed to start the game; go back to the main menu. TODO: display an error message.
- GUIObjectHide("loading_screen");
- GUIObjectUnhide("PREGAME_GUI");
- return;
- }
-
- // Create resource pools for each player, etc.
- setupSession();
-
- FlipGUI(GUIType);
-
- // Select session peace track.
- curr_session_playlist_1 = newRandomSound("music", "peace");
- // Fade out main theme and fade in session theme.
- CrossFade(curr_music, curr_session_playlist_1, 0.0001);
-
- // Switch GUI from main menu to game session.
- GUIObjectHide("loading_screen");
- GUIObjectUnhide("SESSION_GUI");
-}
-
-// ====================================================================
-
-function setupSession()
-{
- // Do essentials that can only be done when the session has been loaded ...
- // For example, create the resource types.
- // Initialise Resource Pools by attaching them to the Player object.
- // (CPlayer code takes care of giving a copy to each player.)
- player = new Object(); // I shouldn't need to do this. Need to find the existing Player to add these to.
- player.resource = new Object();
- player.resource.food = 0;
- player.resource.wood = 0;
- player.resource.stone = 0;
- player.resource.ore = 0;
- player.resource.pop = new Object();
- player.resource.pop.curr = 0;
- player.resource.pop.housing = 0;
-
- // Start refreshing the session controls.
- setInterval( getObjectInfo, 1, 1000 );
-}
-
-// ====================================================================
-
-function endSession(closeType)
-{
- // Occurs when the player chooses to close the current game.
-
- switch (closeType)
- {
- case ("return"):
- // If the player has chosen to quit game and return to main menu,
-
- // End the session.
- endGame();
-
- // Fade out current music and return to playing menu theme.
- curr_music = newRandomSound('music', 'theme');
- CrossFade(curr_session_playlist_1, curr_music, 0.0001);
-
- // Swap GUIs to display main menu.
- GUIObjectHide('SESSION_GUI');
- GUIObjectUnhide('PREGAME_GUI');
- break;
- case ("exit"):
- // If the player has chosen to shutdown and immediately return to operating system,
-
- exit();
- break;
- }
-}
-
-// ====================================================================
\ No newline at end of file
+function startLoadingScreen()
+{
+// HACK: Added to increase number of players from its default 2, until we have a session creation screen.
+ g_GameAttributes.numPlayers = 9;
+
+ // Switch screens from main menu to loading screen.
+ GUIObjectHide("PREGAME_GUI");
+ GUIObjectUnhide("loading_screen");
+ console.write("Loading " + g_GameAttributes.mapFile + " (" + g_GameAttributes.numPlayers + " players) ...");
+
+ getGUIObjectByName("loading_screen_titlebar_text").caption = "Loading Scenario ...";
+ getGUIObjectByName("loading_screen_progress_bar_text").caption = "... Reticulating splines ...";
+ getGUIObjectByName("loading_screen_progress_bar").caption = 80;
+ getGUIObjectByName("loading_screen_text").caption = "LOADING " + g_GameAttributes.mapFile + " ...\nPlease wait ...\n(Yes, we know the progress bar doesn't do diddly squat right now)\nJust keep waiting ...\nIt'll get there ...\nAlmost done ...\nTrust me!";
+ getGUIObjectByName("loading_screen_tip").caption = "Wise man once say ...\nHe who thinks slow, he act in haste, be rash and quick and foolish. But he that thinks too much, acts too slowly. The stupid always win, Commandersan. Remember that. You are tiny grasshopper.";
+
+ // Begin game session.
+ setTimeout( loadSession, 200 );
+}
+
+// ====================================================================
+
+function loadSession()
+{
+ if (! startGame())
+ {
+ // Failed to start the game; go back to the main menu. TODO: display an error message.
+ GUIObjectHide("loading_screen");
+ GUIObjectUnhide("PREGAME_GUI");
+ // Show an error message
+ btCaptions = new Array("OK");
+ btCode = new Array("");
+ messageBox(400, 200, "The game could not be started with the given parameters. You probably have entered an invalid map name.", "Error", 0, btCaptions, btCode);
+ }
+
+ // Create resource pools for each player, etc.
+ setupSession();
+
+ FlipGUI(GUIType);
+
+ // Select session peace track.
+ curr_session_playlist_1 = newRandomSound("music", "peace");
+ // Fade out main theme and fade in session theme.
+ CrossFade(curr_music, curr_session_playlist_1, 0.0001);
+
+ // Switch GUI from main menu to game session.
+ GUIObjectHide("loading_screen");
+ GUIObjectUnhide("SESSION_GUI");
+}
+
+// ====================================================================
+
+function setupSession()
+{
+ // Do essentials that can only be done when the session has been loaded ...
+ // For example, create the resource types.
+ // Initialise Resource Pools by attaching them to the Player object.
+ // (CPlayer code takes care of giving a copy to each player.)
+ player = new Object(); // I shouldn't need to do this. Need to find the existing Player to add these to.
+ player.resource = new Object();
+ player.resource.food = 0;
+ player.resource.wood = 0;
+ player.resource.stone = 0;
+ player.resource.ore = 0;
+ player.resource.pop = new Object();
+ player.resource.pop.curr = 0;
+ player.resource.pop.housing = 0;
+
+ // Start refreshing the session controls.
+ setInterval( getObjectInfo, 1, 1000 );
+}
+
+// ====================================================================
+
+function endSession(closeType)
+{
+ // Occurs when the player chooses to close the current game.
+
+ switch (closeType)
+ {
+ case ("return"):
+ // If the player has chosen to quit game and return to main menu,
+
+ // End the session.
+ endGame();
+
+ // Fade out current music and return to playing menu theme.
+ curr_music = newRandomSound('music', 'theme');
+ CrossFade(curr_session_playlist_1, curr_music, 0.0001);
+
+ // Swap GUIs to display main menu.
+ GUIObjectHide('SESSION_GUI');
+ GUIObjectUnhide('PREGAME_GUI');
+ break;
+ case ("exit"):
+ // If the player has chosen to shutdown and immediately return to operating system,
+
+ exit();
+ break;
+ }
+}
+
+// ====================================================================
diff --git a/binaries/data/mods/official/gui/test/functions_pregame_mp.js b/binaries/data/mods/official/gui/test/functions_pregame_mp.js
index a66d6b63cc..25160b60e5 100644
--- a/binaries/data/mods/official/gui/test/functions_pregame_mp.js
+++ b/binaries/data/mods/official/gui/test/functions_pregame_mp.js
@@ -1,90 +1,97 @@
-function initIPHost()
-{
- // IP Host Window background.
- crd_pregame_iphost_bkg_x = -250;
- crd_pregame_iphost_bkg_y = -200;
- crd_pregame_iphost_bkg_width = (crd_pregame_iphost_bkg_x * -1) * 2;
- crd_pregame_iphost_bkg_height = (crd_pregame_iphost_bkg_y * -1) * 2;
-
- // IP Host Window exit button.
- crd_pregame_iphost_exit_button_width = 16;
- crd_pregame_iphost_exit_button_height = crd_pregame_iphost_exit_button_width;
- crd_pregame_iphost_exit_button_x = crd_pregame_iphost_bkg_x+crd_pregame_iphost_bkg_width+10;
- crd_pregame_iphost_exit_button_y = crd_pregame_iphost_bkg_y-25;
-
- // IP Host Window titlebar.
- crd_pregame_iphost_titlebar_width = crd_pregame_iphost_bkg_width;
- crd_pregame_iphost_titlebar_height = 16;
- crd_pregame_iphost_titlebar_x = crd_pregame_iphost_bkg_x;
- crd_pregame_iphost_titlebar_y = crd_pregame_iphost_bkg_y-25;
-}
-
-// ====================================================================
-
-function initMPSessionHost(playerName, mapName)
-{
- var server = createServer();
-
- // Set basic server options, such as:
- // server.port = 20595; // Default is 20595 - you can also explicitly set to -1 for default port
- server.serverPlayerName=playerName;
- server.serverName=playerName+"'s Server";
- server.welcomeMessage="Welcome to "+server.serverName;
-
- // Actually start listening for connections.. This should probably not be
- // done until there's been a dialog for filling in the previous options ;-)
- var success = server.open();
- if(!success) {
- messageBox(400, 200, "Failed to start server. Please review the logfile for more information on the problem.", "Problem", 2, new Array(), new Array());
- }
-
- GUIObjectHide("pregame_mp_ip");
- GUIObjectHide("pregame_subwindow_bkg");
-
- // Need "waiting for more players to join and start game" code here
-
- /*btCaptions = new Array("OK");
- btCode = new Array("");
- messageBox(400, 200, "Data: " + playerName + ";" + mapName + ";", "Test", 0, btCaptions, btCode);*/
-}
-
-// ====================================================================
-
-function initMPSessionClient(playerName, serverIP)
-{
- var client=createClient();
-
- client.playerName=playerName;
-
- client.onStartGame=function () {
- messageBox(400, 200, "The game starts now!!!", "Get Ready!", 2, new Array(), new Array());
- startLoadingScreen();
- };
-
- client.onChat=function (event) {
- messageBox(400, 200, event.message, "Chat Message", 2, new Array(), new Array());
- };
-
- client.onConnectComplete=function (event) {
- messageBox(400, 200, "Result message: "+event.message, "Connect complete", 2, new Array(), new Array());
- };
-
- // Join MP game
- var success = client.beginConnect(serverIP);
- if(!success) {
- messageBox(400, 200, "Failed to join game. Please review the logfile for more information on the problem.", "Failure", 2, new Array(), new Array());
- }
-
- GUIObjectHide("pregame_mp_ip");
- GUIObjectHide("pregame_subwindow_bkg");
-
- // Need "waiting for game to start" code here - it should automatically start if the client recieves the start signal from the server,
- // but I currently don't know how that could be done.
-
- /*btCaptions = new Array("OK");
- btCode = new Array("");
- messageBox(400, 200, "Data: " + playerName + ";" + serverIP + ";", "Test", 0, btCaptions, btCode);*/
-}
-
-// ====================================================================
-
+function initIPHost()
+{
+ // IP Host Window background.
+ crd_pregame_iphost_bkg_x = -250;
+ crd_pregame_iphost_bkg_y = -200;
+ crd_pregame_iphost_bkg_width = (crd_pregame_iphost_bkg_x * -1) * 2;
+ crd_pregame_iphost_bkg_height = (crd_pregame_iphost_bkg_y * -1) * 2;
+
+ // IP Host Window exit button.
+ crd_pregame_iphost_exit_button_width = 16;
+ crd_pregame_iphost_exit_button_height = crd_pregame_iphost_exit_button_width;
+ crd_pregame_iphost_exit_button_x = crd_pregame_iphost_bkg_x+crd_pregame_iphost_bkg_width+10;
+ crd_pregame_iphost_exit_button_y = crd_pregame_iphost_bkg_y-25;
+
+ // IP Host Window titlebar.
+ crd_pregame_iphost_titlebar_width = crd_pregame_iphost_bkg_width;
+ crd_pregame_iphost_titlebar_height = 16;
+ crd_pregame_iphost_titlebar_x = crd_pregame_iphost_bkg_x;
+ crd_pregame_iphost_titlebar_y = crd_pregame_iphost_bkg_y-25;
+}
+
+// ====================================================================
+
+function initMPSessionHost(playerName, mapName)
+{
+ var server = createServer();
+
+ // Set the map to use
+ g_GameAttributes.mapFile = mapName;
+
+ // Set basic server options, such as:
+ // server.port = 20595; // Default is 20595 - you can also explicitly set to -1 for default port
+ server.serverPlayerName=playerName;
+ server.serverName=playerName+"'s Server";
+ server.welcomeMessage="Welcome to "+server.serverName;
+
+ // Actually start listening for connections.. This should probably not be
+ // done until there's been a dialog for filling in the previous options ;-)
+ var success = server.open();
+ if(!success) {
+ messageBox(400, 200, "Failed to start server. Please review the logfile for more information on the problem.", "Problem", 2, new Array(), new Array());
+ }
+
+ server.onChat=function (event) {
+ messageBox(400, 200, event.message, "Chat Message", 2, new Array(), new Array());
+ };
+
+ GUIObjectHide("pregame_mp_ip");
+ GUIObjectHide("pregame_subwindow_bkg");
+
+ // Need "waiting for more players to join and start game" code here
+
+ btCaptions = new Array("OK");
+ btCode = new Array("startGame();");
+ messageBox(400, 200, "Waiting for clients to join - Click OK to start the game.", "Ready", 0, btCaptions, btCode);
+}
+
+// ====================================================================
+
+function initMPSessionClient(playerName, serverIP)
+{
+ var client=createClient();
+
+ client.playerName=playerName;
+
+ client.onStartGame=function () {
+ messageBox(400, 200, "The game starts now!!!", "Get Ready!", 2, new Array(), new Array());
+ startLoadingScreen();
+ };
+
+ client.onChat=function (event) {
+ messageBox(400, 200, event.message, "Chat Message", 2, new Array(), new Array());
+ };
+
+ client.onConnectComplete=function (event) {
+ messageBox(400, 200, "Result message: "+event.message, "Connect complete", 2, new Array(), new Array());
+ };
+
+ // Join MP game
+ var success = client.beginConnect(serverIP);
+ if(!success) {
+ messageBox(400, 200, "Failed to join game. Please review the logfile for more information on the problem.", "Failure", 2, new Array(), new Array());
+ }
+
+ GUIObjectHide("pregame_mp_ip");
+ GUIObjectHide("pregame_subwindow_bkg");
+
+ // Need "waiting for game to start" code here - it should automatically start if the client recieves the start signal from the server,
+ // but I currently don't know how that could be done.
+
+ /*btCaptions = new Array("OK");
+ btCode = new Array("");
+ messageBox(400, 200, "Data: " + playerName + ";" + serverIP + ";", "Test", 0, btCaptions, btCode);*/
+}
+
+// ====================================================================
+
diff --git a/binaries/data/mods/official/gui/test/sprite1.xml b/binaries/data/mods/official/gui/test/sprite1.xml
index 329c8efec3..e306185a14 100644
--- a/binaries/data/mods/official/gui/test/sprite1.xml
+++ b/binaries/data/mods/official/gui/test/sprite1.xml
@@ -298,7 +298,7 @@
-
+