diff --git a/binaries/data/mods/public/gui/gamesetup/gamesetup.js b/binaries/data/mods/public/gui/gamesetup/gamesetup.js
index 8630699e40..ea317caf60 100644
--- a/binaries/data/mods/public/gui/gamesetup/gamesetup.js
+++ b/binaries/data/mods/public/gui/gamesetup/gamesetup.js
@@ -3,11 +3,10 @@
const DEFAULT_NETWORKED_MAP = "Acropolis 01";
const DEFAULT_OFFLINE_MAP = "Acropolis 01";
+const VICTORY_DEFAULTIDX = 1;
+
// TODO: Move these somewhere like simulation\data\game_types.json, Atlas needs them too
// Translation: Type of victory condition.
-const VICTORY_TEXT = [translateWithContext("victory", "Conquest"), translateWithContext("victory", "Wonder"), translateWithContext("victory", "None")];
-const VICTORY_DATA = ["conquest", "wonder", "endless"];
-const VICTORY_DEFAULTIDX = 0;
const POPULATION_CAP = ["50", "100", "150", "200", "250", "300", translate("Unlimited")];
const POPULATION_CAP_DATA = [50, 100, 150, 200, 250, 300, 10000];
const POPULATION_CAP_DEFAULTIDX = 5;
@@ -158,6 +157,8 @@ function initMain()
mapFilters.list_data = getFilterIds();
g_GameAttributes.mapFilter = "default";
+
+
// Setup controls for host only
if (g_IsController)
{
@@ -221,12 +222,16 @@ function initMain()
}
var victoryConditions = Engine.GetGUIObjectByName("victoryCondition");
- victoryConditions.list = VICTORY_TEXT;
- victoryConditions.list_data = VICTORY_DATA;
+ var victories = getVictoryConditions();
+ victoryConditions.list = victories.text;
+ victoryConditions.list_data = victories.data;
victoryConditions.onSelectionChange = function()
{ // Update attributes so other players can see change
if (this.selected != -1)
- g_GameAttributes.settings.GameType = VICTORY_DATA[this.selected];
+ {
+ g_GameAttributes.settings.GameType = victories.data[this.selected];
+ g_GameAttributes.settings.VictoryScripts = victories.scripts[this.selected];
+ }
if (!g_IsInGuiUpdate)
updateGameAttributes();
@@ -924,6 +929,10 @@ function launchGame()
if (g_GameAttributes.map == "random")
selectMap(Engine.GetGUIObjectByName("mapSelection").list_data[Math.floor(Math.random() *
(Engine.GetGUIObjectByName("mapSelection").list.length - 1)) + 1]);
+ if (!g_GameAttributes.settings.TriggerScripts)
+ g_GameAttributes.settings.TriggerScripts = g_GameAttributes.settings.VictoryScripts;
+ else
+ g_GameAttributes.settings.TriggerScripts = g_GameAttributes.settings.VictoryScripts.concat(g_GameAttrbutes.settings.TriggerScripts);
g_GameStarted = true;
g_GameAttributes.settings.mapType = g_GameAttributes.mapType;
var numPlayers = g_GameAttributes.settings.PlayerData.length;
@@ -1061,7 +1070,8 @@ function onGameAttributesChange()
// We have to check for undefined on these properties as not all maps define them.
var sizeIdx = (mapSettings.Size !== undefined && g_MapSizes.tiles.indexOf(mapSettings.Size) != -1 ? g_MapSizes.tiles.indexOf(mapSettings.Size) : g_MapSizes["default"]);
var speedIdx = (g_GameAttributes.gameSpeed !== undefined && g_GameSpeeds.speeds.indexOf(g_GameAttributes.gameSpeed) != -1) ? g_GameSpeeds.speeds.indexOf(g_GameAttributes.gameSpeed) : g_GameSpeeds["default"];
- var victoryIdx = (mapSettings.GameType !== undefined && VICTORY_DATA.indexOf(mapSettings.GameType) != -1 ? VICTORY_DATA.indexOf(mapSettings.GameType) : VICTORY_DEFAULTIDX);
+ var victories = getVictoryConditions();
+ var victoryIdx = (mapSettings.GameType !== undefined && victories.data.indexOf(mapSettings.GameType) != -1 ? victories.data.indexOf(mapSettings.GameType) : VICTORY_DEFAULTIDX);
enableCheats.checked = (mapSettings.CheatsEnabled === undefined || !mapSettings.CheatsEnabled ? false : true)
enableCheatsText.caption = (enableCheats.checked ? "Yes" : "No");
if (mapSettings.RatingEnabled !== undefined)
@@ -1138,7 +1148,7 @@ function onGameAttributesChange()
mapSizeText.caption = g_MapSizes.names[sizeIdx];
revealMapText.caption = (mapSettings.RevealMap ? translate("Yes") : translate("No"));
exploreMapText.caption = (mapSettings.ExporeMap ? translate("Yes") : translate("No"));
- victoryConditionText.caption = VICTORY_TEXT[victoryIdx];
+ victoryConditionText.caption = victories.text[victoryIdx];
lockTeamsText.caption = (mapSettings.LockTeams ? translate("Yes") : translate("No"));
}
@@ -1194,7 +1204,7 @@ function onGameAttributesChange()
revealMapText.caption = (mapSettings.RevealMap ? translate("Yes") : translate("No"));
exploreMapText.caption = (mapSettings.ExploreMap ? translate("Yes") : translate("No"));
- victoryConditionText.caption = VICTORY_TEXT[victoryIdx];
+ victoryConditionText.caption = victories.text[victoryIdx];
lockTeamsText.caption = (mapSettings.LockTeams ? translate("Yes") : translate("No"));
}
@@ -1225,7 +1235,7 @@ function onGameAttributesChange()
mapSizeText.caption = translate("Default");
revealMapText.caption = (mapSettings.RevealMap ? translate("Yes") : translate("No"));
exploreMapText.caption = (mapSettings.ExploreMap ? translate("Yes") : translate("No"));
- victoryConditionText.caption = VICTORY_TEXT[victoryIdx];
+ victoryConditionText.caption = victories.text[victoryIdx];
lockTeamsText.caption = (mapSettings.LockTeams ? translate("Yes") : translate("No"));
Engine.GetGUIObjectByName("populationCap").selected = POPULATION_CAP_DEFAULTIDX;
@@ -1847,3 +1857,18 @@ function sendRegisterGameStanza()
};
Engine.SendRegisterGame(gameData);
}
+
+function getVictoryConditions()
+{
+ var r = {};
+ r.text = [translate("None")];
+ r.data = ["endless"];
+ r.scripts = [[]];
+ for (var vc in g_VictoryConditions)
+ {
+ r.data.push(vc);
+ r.text.push(g_VictoryConditions[vc].name);
+ r.scripts.push(g_VictoryConditions[vc].scripts);
+ }
+ return r;
+}
diff --git a/binaries/data/mods/public/gui/gamesetup/gamesetup.xml b/binaries/data/mods/public/gui/gamesetup/gamesetup.xml
index b8ae4679ea..65d964a5ea 100644
--- a/binaries/data/mods/public/gui/gamesetup/gamesetup.xml
+++ b/binaries/data/mods/public/gui/gamesetup/gamesetup.xml
@@ -7,6 +7,7 @@
+