1
1
forked from 0ad/0ad

Gamesetup: make sure GameSpeed is a number

The dropdown converted the numbers to string, and the code expected
numbers.

Differential Revision: https://code.wildfiregames.com/D3924
This was SVN commit r25376.
This commit is contained in:
wraitii 2021-05-04 13:59:30 +00:00
parent cdd75deafb
commit 911f49c655
3 changed files with 29 additions and 12 deletions

View File

@ -8,7 +8,7 @@ GameSettings.prototype.Attributes.GameSpeed = class GameSpeed extends GameSettin
toInitAttributes(attribs)
{
attribs.gameSpeed = this.gameSpeed;
attribs.gameSpeed = +this.gameSpeed;
}
fromInitAttributes(attribs)
@ -27,6 +27,6 @@ GameSettings.prototype.Attributes.GameSpeed = class GameSpeed extends GameSettin
setSpeed(speed)
{
this.gameSpeed = speed;
this.gameSpeed = +speed;
}
};

View File

@ -10,6 +10,13 @@ GameSettingControls.GameSpeed = class GameSpeed extends GameSettingControlDropdo
this.render();
}
onLoad()
{
// We may need to reset after deserializing attributes.
this.previousAllowFastForward = undefined;
this.render();
}
onPlayerAssignmentsChange()
{
this.render();
@ -25,17 +32,22 @@ GameSettingControls.GameSpeed = class GameSpeed extends GameSettingControlDropdo
break;
}
if (this.previousAllowFastForward !== allowFastForward)
if (this.previousAllowFastForward === allowFastForward)
{
this.previousAllowFastForward = allowFastForward;
let values = prepareForDropdown(
g_Settings.GameSpeeds.filter(speed => !speed.FastForward || allowFastForward));
this.dropdown.list = values.Title;
this.dropdown.list_data = values.Speed;
this.setSelectedValue(g_GameSettings.gameSpeed.gameSpeed);
return;
}
this.previousAllowFastForward = allowFastForward;
let values = prepareForDropdown(
g_Settings.GameSpeeds.filter(speed => !speed.FastForward || allowFastForward));
let currentSpeed = +this.dropdown.list_data?.[this.dropdown.selected];
let resetToDefault = values.Speed.indexOf(currentSpeed) === -1;
this.setSelectedValue(g_GameSettings.gameSpeed.gameSpeed);
this.dropdown.list = values.Title;
this.dropdown.list_data = values.Speed;
if (resetToDefault)
g_GameSettings.gameSpeed.setSpeed(this.dropdown.list_data[values.Default]);
}
onSelectionChange(itemIdx)

View File

@ -221,8 +221,13 @@ void CGame::RegisterInit(const JS::HandleValue attribs, const std::string& saved
scriptInterface.GetProperty(attribs, "mapType", mapType);
float speed;
if (scriptInterface.HasProperty(attribs, "gameSpeed") && scriptInterface.GetProperty(attribs, "gameSpeed", speed))
SetSimRate(speed);
if (scriptInterface.HasProperty(attribs, "gameSpeed"))
{
if (scriptInterface.GetProperty(attribs, "gameSpeed", speed))
SetSimRate(speed);
else
LOGERROR("GameSpeed could not be parsed.");
}
LDR_BeginRegistering();