Changeset View
Changeset View
Standalone View
Standalone View
binaries/data/mods/public/gui/gamesetup/Controls/GameSettingsFile.js
/** | /** | ||||
* This class provides a way to save game settings to a file and load them. | * This class provides a way to save game settings to a file and load them. | ||||
*/ | */ | ||||
class GameSettingsFile | class GameSettingsFile | ||||
{ | { | ||||
constructor(GameSettingsControl) | constructor(GameSettingsControl) | ||||
{ | { | ||||
this.filename = g_IsNetworked ? | this.filename = g_IsNetworked ? | ||||
this.GameAttributesFileMultiplayer : | this.PersistedSettingsFileMultiplayer : | ||||
this.GameAttributesFileSingleplayer; | this.PersistedSettingsFileSingleplayer; | ||||
this.gameSettingsControl = GameSettingsControl; | this.gameSettingsControl = GameSettingsControl; | ||||
this.engineInfo = Engine.GetEngineInfo(); | this.engineInfo = Engine.GetEngineInfo(); | ||||
this.enabled = Engine.ConfigDB_GetValue("user", this.ConfigName) == "true"; | this.enabled = Engine.ConfigDB_GetValue("user", this.ConfigName) == "true"; | ||||
} | } | ||||
loadFile() | loadFile() | ||||
{ | { | ||||
Engine.ProfileStart("loadPersistMatchSettingsFile"); | Engine.ProfileStart("loadPersistMatchSettingsFile"); | ||||
let data = | let data = | ||||
this.enabled && | this.enabled && | ||||
g_IsController && | g_IsController && | ||||
Engine.FileExists(this.filename) && | Engine.FileExists(this.filename) && | ||||
Engine.ReadJSONFile(this.filename); | Engine.ReadJSONFile(this.filename); | ||||
let gameAttributes = | let persistedSettings = data?.engine_info?.engine_version == this.engineInfo.engine_version && | ||||
data && | hasSameMods(data?.engine_info?.mods, this.engineInfo.mods) && | ||||
data.attributes && | |||||
data.engine_info && | |||||
data.engine_info.engine_version == this.engineInfo.engine_version && | |||||
hasSameMods(data.engine_info.mods, this.engineInfo.mods) && | |||||
data.attributes || {}; | data.attributes || {}; | ||||
Engine.ProfileStop(); | Engine.ProfileStop(); | ||||
return gameAttributes; | return persistedSettings; | ||||
} | } | ||||
/** | /** | ||||
* Delete settings if disabled, so that players are not confronted with old settings after enabling the setting again. | * Delete settings if disabled, so that players are not confronted with old settings after enabling the setting again. | ||||
*/ | */ | ||||
saveFile() | saveFile() | ||||
{ | { | ||||
if (!g_IsController) | if (!g_IsController) | ||||
return; | return; | ||||
Engine.ProfileStart("savePersistMatchSettingsFile"); | Engine.ProfileStart("savePersistMatchSettingsFile"); | ||||
Engine.WriteJSONFile(this.filename, { | Engine.WriteJSONFile(this.filename, { | ||||
"attributes": this.enabled ? this.gameSettingsControl.getSettings() : {}, | "attributes": this.enabled ? this.gameSettingsControl.getSettings() : {}, | ||||
"engine_info": this.engineInfo | "engine_info": this.engineInfo | ||||
}); | }); | ||||
Engine.ProfileStop(); | Engine.ProfileStop(); | ||||
} | } | ||||
} | } | ||||
GameSettingsFile.prototype.ConfigName = | GameSettingsFile.prototype.ConfigName = | ||||
"persistmatchsettings"; | "persistmatchsettings"; | ||||
GameSettingsFile.prototype.GameAttributesFileSingleplayer = | GameSettingsFile.prototype.PersistedSettingsFileSingleplayer = | ||||
"config/matchsettings.json"; | "config/matchsettings.json"; | ||||
GameSettingsFile.prototype.GameAttributesFileMultiplayer = | GameSettingsFile.prototype.PersistedSettingsFileMultiplayer = | ||||
"config/matchsettings.mp.json"; | "config/matchsettings.mp.json"; |
Wildfire Games · Phabricator