Differential D3243 Diff 16503 binaries/data/mods/public/gui/gamesetup/Pages/GameSetupPage/GameSettings/Single/Dropdowns/Landscape.js
Changeset View
Changeset View
Standalone View
Standalone View
binaries/data/mods/public/gui/gamesetup/Pages/GameSetupPage/GameSettings/Single/Dropdowns/Landscape.js
GameSettingControls.Landscape = class extends GameSettingControlDropdown | GameSettingControls.Landscape = class Landscape extends GameSettingControlDropdown | ||||
{ | { | ||||
constructor(...args) | constructor(...args) | ||||
{ | { | ||||
super(...args); | super(...args); | ||||
this.values = undefined; | this.values = undefined; | ||||
this.mapData = undefined; | g_NewGameSettings.landscape.watch(() => this.render(), ["value", "data"]); | ||||
this.render(); | |||||
} | } | ||||
onHoverChange() | onHoverChange() | ||||
{ | { | ||||
this.dropdown.tooltip = this.values.Description[this.dropdown.hovered] || this.Tooltip; | this.dropdown.tooltip = this.values.Description[this.dropdown.hovered] || this.Tooltip; | ||||
} | } | ||||
onMapChange(mapData) | render() | ||||
{ | { | ||||
this.mapData = mapData; | this.setHidden(!g_NewGameSettings.landscape.data); | ||||
if (!g_NewGameSettings.landscape.data) | |||||
if (mapData && mapData.settings && mapData.settings.Landscapes) | return; | ||||
{ | |||||
let randomItems = []; | |||||
for (let item of this.RandomItems) | |||||
if (item.Id == "random" || mapData.settings.Landscapes.land && mapData.settings.Landscapes.naval) | |||||
randomItems.push({ | |||||
"Id": item.Id, | |||||
"Name": setStringTags(item.Name, this.RandomItemTags), | |||||
"Description": item.Description, | |||||
"Preview": mapData.settings.Preview || this.mapCache.DefaultPreview | |||||
}); | |||||
let randomItems = [{ | |||||
"Id": "random", | |||||
"Name": setStringTags(translateWithContext("landscape selection", "Random"), this.RandomItemTags), | |||||
"Description": translateWithContext("landscape selection", "Select a random landscape.") | |||||
}]; | |||||
let data = g_NewGameSettings.landscape.data; | |||||
let items = []; | |||||
for (let group of data) | |||||
{ | |||||
let itemTag = this.translateItem(group); | |||||
itemTag.Name = setStringTags(itemTag.Name, this.RandomItemTags); | |||||
randomItems.push(itemTag); | |||||
let sort = (item1, item2) => item1.Name > item2.Name; | let sort = (item1, item2) => item1.Name > item2.Name; | ||||
items = items.concat(group.Items.map(this.translateItem).sort(sort)); | |||||
} | |||||
this.values = prepareForDropdown([ | this.values = prepareForDropdown(randomItems.concat(items)); | ||||
...randomItems, | |||||
...mapData.settings.Landscapes.land.map(this.translateItem).sort(sort), | |||||
...mapData.settings.Landscapes.naval.map(this.translateItem).sort(sort) | |||||
]); | |||||
this.dropdown.list = this.values.Name; | this.dropdown.list = this.values.Name; | ||||
this.dropdown.list_data = this.values.Id; | this.dropdown.list_data = this.values.Id; | ||||
} | |||||
else | |||||
this.values = undefined; | |||||
this.setHidden(!this.values); | this.setSelectedValue(g_NewGameSettings.landscape.value); | ||||
} | } | ||||
translateItem(item) | translateItem(item) | ||||
{ | { | ||||
return { | return { | ||||
"Id": item.Id, | "Id": item.Id, | ||||
"Name": translate(item.Name), | "Name": translate(item.Name), | ||||
"Description": translate(item.Description), | "Description": translate(item.Description), | ||||
"Preview": item.Preview | "Preview": item.Preview | ||||
}; | }; | ||||
} | } | ||||
onGameAttributesChange() | |||||
{ | |||||
if (this.values) | |||||
{ | |||||
if (this.values.Id.indexOf(g_GameAttributes.settings.Landscape || undefined) == -1) | |||||
{ | |||||
g_GameAttributes.settings.Landscape = "random"; | |||||
this.gameSettingsControl.updateGameAttributes(); | |||||
} | |||||
let landscapePreview = this.values.Preview[this.values.Id.indexOf(g_GameAttributes.settings.Landscape)]; | |||||
if (!g_GameAttributes.settings.Preview || g_GameAttributes.settings.Preview != landscapePreview) | |||||
g_GameAttributes.settings.Preview = landscapePreview; | |||||
} | |||||
else if (g_GameAttributes.settings.Landscape !== undefined) | |||||
{ | |||||
delete g_GameAttributes.settings.Landscape; | |||||
this.gameSettingsControl.updateGameAttributes(); | |||||
} | |||||
} | |||||
onGameAttributesBatchChange() | |||||
{ | |||||
if (g_GameAttributes.settings.Landscape) | |||||
this.setSelectedValue(g_GameAttributes.settings.Landscape); | |||||
} | |||||
getAutocompleteEntries() | getAutocompleteEntries() | ||||
{ | { | ||||
if (!this.values) | if (!this.values) | ||||
return undefined; | return undefined; | ||||
let entries = []; | let entries = []; | ||||
for (let i = 0; i < this.values.Id.length; ++i) | for (let i = 0; i < this.values.Id.length; ++i) | ||||
if (!this.values.Id[i].startsWith("random")) | if (!this.values.Id[i].startsWith("random")) | ||||
entries.push(this.values.Name[i]); | entries.push(this.values.Name[i]); | ||||
return entries; | return entries; | ||||
} | } | ||||
onSelectionChange(itemIdx) | onSelectionChange(itemIdx) | ||||
{ | { | ||||
g_GameAttributes.settings.Landscape = this.values.Id[itemIdx]; | g_NewGameSettings.landscape.setValue(this.values.Id[itemIdx]); | ||||
this.gameSettingsControl.updateGameAttributes(); | |||||
this.gameSettingsControl.setNetworkGameAttributes(); | this.gameSettingsControl.setNetworkGameAttributes(); | ||||
} | } | ||||
onPickRandomItems() | |||||
{ | |||||
if (!this.mapData) | |||||
return; | |||||
let items; | |||||
let landscapes = this.mapData.settings.Landscapes; | |||||
switch (g_GameAttributes.settings.Landscape || undefined) | |||||
{ | |||||
case "random": | |||||
items = [...landscapes.land, ...landscapes.naval]; | |||||
break; | |||||
case "random_land": | |||||
items = landscapes.land; | |||||
break; | |||||
case "random_naval": | |||||
items = landscapes.naval; | |||||
break; | |||||
default: | |||||
return; | |||||
} | |||||
g_GameAttributes.settings.Landscape = pickRandom(items).Id; | |||||
this.gameSettingsControl.updateGameAttributes(); | |||||
this.gameSettingsControl.pickRandomItems(); | |||||
} | |||||
}; | }; | ||||
GameSettingControls.Landscape.prototype.TitleCaption = | GameSettingControls.Landscape.prototype.TitleCaption = | ||||
translate("Landscape"); | translate("Landscape"); | ||||
GameSettingControls.Landscape.prototype.Tooltip = | GameSettingControls.Landscape.prototype.Tooltip = | ||||
translate("Select one of the landscapes of this map."); | translate("Select one of the landscapes of this map."); | ||||
GameSettingControls.Landscape.prototype.RandomItems = | |||||
[ | |||||
{ | |||||
"Id": "random", | |||||
"Name": translateWithContext("landscape selection", "Random Land or Naval"), | |||||
"Description": translateWithContext("landscape selection", "Select a random land or naval map generation.") | |||||
}, | |||||
{ | |||||
"Id": "random_land", | |||||
"Name": translateWithContext("landscape selection", "Random Land"), | |||||
"Description": translateWithContext("landscape selection", "Select a random land map generation.") | |||||
}, | |||||
{ | |||||
"Id": "random_naval", | |||||
"Name": translateWithContext("landscape selection", "Random Naval"), | |||||
"Description": translateWithContext("landscape selection", "Select a random naval map generation.") | |||||
} | |||||
]; | |||||
GameSettingControls.Landscape.prototype.AutocompleteOrder = 0; | GameSettingControls.Landscape.prototype.AutocompleteOrder = 0; |
Wildfire Games · Phabricator