1
1
forked from 0ad/0ad

Split VictoryDuration in RelicDuration and WonderDuration

As proposed by leper in 35377c51a7
refs #4014

Reviewed By: elexis
Differential Revision: https://code.wildfiregames.com/D874
This was SVN commit r20122.
This commit is contained in:
bb 2017-09-06 08:44:26 +00:00
parent a46b44e4dc
commit 63ca7ad672
6 changed files with 39 additions and 22 deletions

View File

@ -233,9 +233,9 @@ function getGameDescription(extended = false)
"victory condition", "victory condition",
"Wonder (%(min)s minute)", "Wonder (%(min)s minute)",
"Wonder (%(min)s minutes)", "Wonder (%(min)s minutes)",
g_GameAttributes.settings.VictoryDuration g_GameAttributes.settings.WonderDuration
), ),
{ "min": g_GameAttributes.settings.VictoryDuration } { "min": g_GameAttributes.settings.WonderDuration }
); );
let isCaptureTheRelic = g_VictoryConditions.Name[victoryIdx] == "capture_the_relic"; let isCaptureTheRelic = g_VictoryConditions.Name[victoryIdx] == "capture_the_relic";
@ -245,9 +245,9 @@ function getGameDescription(extended = false)
"victory condition", "victory condition",
"Capture the Relic (%(min)s minute)", "Capture the Relic (%(min)s minute)",
"Capture the Relic (%(min)s minutes)", "Capture the Relic (%(min)s minutes)",
g_GameAttributes.settings.VictoryDuration g_GameAttributes.settings.RelicDuration
), ),
{ "min": g_GameAttributes.settings.VictoryDuration } { "min": g_GameAttributes.settings.RelicDuration }
); );
titles.push({ titles.push({

View File

@ -360,7 +360,8 @@ var g_OptionOrderGUI = {
"gameSpeed", "gameSpeed",
"victoryCondition", "victoryCondition",
"relicCount", "relicCount",
"victoryDuration", "relicDuration",
"wonderDuration",
"populationCap", "populationCap",
"startingResources", "startingResources",
"ceasefire", "ceasefire",
@ -598,20 +599,33 @@ var g_Dropdowns = {
"enabled": () => g_GameAttributes.mapType != "scenario", "enabled": () => g_GameAttributes.mapType != "scenario",
"initOrder": 1000 "initOrder": 1000
}, },
"victoryDuration": { "relicDuration": {
"title": () => translate("Victory Duration"), "title": () => translate("Relic Duration"),
"tooltip": (hoverIdx) => translate("Number of minutes until the player has won."), "tooltip": (hoverIdx) => translate("Minutes until the player has achieved Relic Victory."),
"labels": () => g_VictoryDurations.Title, "labels": () => g_VictoryDurations.Title,
"ids": () => g_VictoryDurations.Duration, "ids": () => g_VictoryDurations.Duration,
"default": () => g_VictoryDurations.Default, "default": () => g_VictoryDurations.Default,
"defined": () => g_GameAttributes.settings.VictoryDuration !== undefined, "defined": () => g_GameAttributes.settings.RelicDuration !== undefined,
"get": () => g_GameAttributes.settings.VictoryDuration, "get": () => g_GameAttributes.settings.RelicDuration,
"select": (idx) => { "select": (idx) => {
g_GameAttributes.settings.VictoryDuration = g_VictoryDurations.Duration[idx]; g_GameAttributes.settings.RelicDuration = g_VictoryDurations.Duration[idx];
}, },
"hidden": () => "hidden": () => g_GameAttributes.settings.GameType != "capture_the_relic",
g_GameAttributes.settings.GameType != "wonder" && "enabled": () => g_GameAttributes.mapType != "scenario",
g_GameAttributes.settings.GameType != "capture_the_relic", "initOrder": 1000
},
"wonderDuration": {
"title": () => translate("Wonder Duration"),
"tooltip": (hoverIdx) => translate("Minutes until the player has achieved Wonder Victory."),
"labels": () => g_VictoryDurations.Title,
"ids": () => g_VictoryDurations.Duration,
"default": () => g_VictoryDurations.Default,
"defined": () => g_GameAttributes.settings.WonderDuration !== undefined,
"get": () => g_GameAttributes.settings.WonderDuration,
"select": (idx) => {
g_GameAttributes.settings.WonderDuration = g_VictoryDurations.Duration[idx];
},
"hidden": () => g_GameAttributes.settings.GameType != "wonder",
"enabled": () => g_GameAttributes.mapType != "scenario", "enabled": () => g_GameAttributes.mapType != "scenario",
"initOrder": 1000 "initOrder": 1000
}, },
@ -1729,7 +1743,8 @@ function selectMap(name)
if (g_GameAttributes.mapType == "scenario") if (g_GameAttributes.mapType == "scenario")
{ {
delete g_GameAttributes.settings.VictoryDuration; delete g_GameAttributes.settings.RelicDuration;
delete g_GameAttributes.settings.WonderDuration;
delete g_GameAttributes.settings.LastManStanding; delete g_GameAttributes.settings.LastManStanding;
delete g_GameAttributes.settings.RegicideGarrison; delete g_GameAttributes.settings.RegicideGarrison;
} }

View File

@ -122,7 +122,7 @@ Trigger.prototype.StartCaptureTheRelicCountdown = function(playerAndAllies)
let cmpPlayer = QueryOwnerInterface(this.relics[0], IID_Player); let cmpPlayer = QueryOwnerInterface(this.relics[0], IID_Player);
let cmpEndGameManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_EndGameManager); let cmpEndGameManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_EndGameManager);
let captureTheRelicDuration = cmpEndGameManager.GetGameTypeSettings().victoryDuration || 0; let captureTheRelicDuration = cmpEndGameManager.GetGameTypeSettings().relicDuration;
let isTeam = playerAndAllies.length > 1; let isTeam = playerAndAllies.length > 1;
this.ownRelicsVictoryMessage = cmpGuiInterface.AddTimeNotification({ this.ownRelicsVictoryMessage = cmpGuiInterface.AddTimeNotification({

View File

@ -38,7 +38,7 @@ Trigger.prototype.CheckWonderVictory = function(data)
let cmpPlayer = QueryOwnerInterface(ent, IID_Player); let cmpPlayer = QueryOwnerInterface(ent, IID_Player);
let cmpEndGameManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_EndGameManager); let cmpEndGameManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_EndGameManager);
let wonderDuration = cmpEndGameManager.GetGameTypeSettings().victoryDuration || 0; let wonderDuration = cmpEndGameManager.GetGameTypeSettings().wonderDuration;
messages.otherMessage = cmpGuiInterface.AddTimeNotification({ messages.otherMessage = cmpGuiInterface.AddTimeNotification({
"message": markForTranslation("%(_player_)s will win in %(time)s."), "message": markForTranslation("%(_player_)s will win in %(time)s."),

View File

@ -4,7 +4,7 @@ Engine.LoadComponentScript("EndGameManager.js");
let cmpEndGameManager = ConstructComponent(SYSTEM_ENTITY, "EndGameManager"); let cmpEndGameManager = ConstructComponent(SYSTEM_ENTITY, "EndGameManager");
let playerEnt1 = 1; let playerEnt1 = 1;
let victoryDuration = 2 * 60 * 1000; let wonderDuration = 2 * 60 * 1000;
AddMock(SYSTEM_ENTITY, IID_PlayerManager, { AddMock(SYSTEM_ENTITY, IID_PlayerManager, {
"GetNumPlayers": () => 4 "GetNumPlayers": () => 4
@ -23,7 +23,7 @@ AddMock(playerEnt1, IID_Player, {
TS_ASSERT_EQUALS(cmpEndGameManager.skipAlliedVictoryCheck, true); TS_ASSERT_EQUALS(cmpEndGameManager.skipAlliedVictoryCheck, true);
cmpEndGameManager.SetAlliedVictory(true); cmpEndGameManager.SetAlliedVictory(true);
TS_ASSERT_EQUALS(cmpEndGameManager.GetAlliedVictory(), true); TS_ASSERT_EQUALS(cmpEndGameManager.GetAlliedVictory(), true);
cmpEndGameManager.SetGameType("wonder", { "victoryDuration": victoryDuration }); cmpEndGameManager.SetGameType("wonder", { "wonderDuration": wonderDuration });
TS_ASSERT_EQUALS(cmpEndGameManager.skipAlliedVictoryCheck, false); TS_ASSERT_EQUALS(cmpEndGameManager.skipAlliedVictoryCheck, false);
TS_ASSERT(cmpEndGameManager.GetGameType() == "wonder"); TS_ASSERT(cmpEndGameManager.GetGameType() == "wonder");
TS_ASSERT_EQUALS(cmpEndGameManager.GetGameTypeSettings().victoryDuration, victoryDuration); TS_ASSERT_EQUALS(cmpEndGameManager.GetGameTypeSettings().wonderDuration, wonderDuration);

View File

@ -47,8 +47,10 @@ function LoadMapSettings(settings)
let gameTypeSettings = {}; let gameTypeSettings = {};
if (settings.GameType && settings.GameType == "capture_the_relic") if (settings.GameType && settings.GameType == "capture_the_relic")
gameTypeSettings.relicCount = settings.RelicCount; gameTypeSettings.relicCount = settings.RelicCount;
if (settings.VictoryDuration) if (settings.GameType && settings.GameType == "capture_the_relic")
gameTypeSettings.victoryDuration = settings.VictoryDuration * 60 * 1000; gameTypeSettings.relicDuration = settings.RelicDuration * 60 * 1000;
if (settings.GameType && settings.GameType == "wonder")
gameTypeSettings.wonderDuration = settings.WonderDuration * 60 * 1000;
if (settings.GameType && settings.GameType == "regicide") if (settings.GameType && settings.GameType == "regicide")
gameTypeSettings.regicideGarrison = settings.RegicideGarrison; gameTypeSettings.regicideGarrison = settings.RegicideGarrison;
if (settings.GameType) if (settings.GameType)