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:
parent
cdd75deafb
commit
911f49c655
@ -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;
|
||||
}
|
||||
};
|
||||
|
@ -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)
|
||||
|
@ -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();
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user