Changeset View
Changeset View
Standalone View
Standalone View
binaries/data/mods/mod/gui/modmod/modmod.js
Show First 20 Lines • Show All 152 Lines • ▼ Show 20 Lines | function displayModList(listObjectName, folders) | ||||
listObject.list_version = folders.map(folder => g_Mods[folder].version); | listObject.list_version = folders.map(folder => g_Mods[folder].version); | ||||
listObject.list_dependencies = folders.map(folder => g_Mods[folder].dependencies.join(" ")); | listObject.list_dependencies = folders.map(folder => g_Mods[folder].dependencies.join(" ")); | ||||
listObject.list = folders; | listObject.list = folders; | ||||
} | } | ||||
function enableMod() | function enableMod() | ||||
{ | { | ||||
let modsDisabledList = Engine.GetGUIObjectByName("modsDisabledList"); | let modsDisabledList = Engine.GetGUIObjectByName("modsDisabledList"); | ||||
let pos = modsDisabledList.selected; | let pos = modsDisabledList.multiSelected.length ? modsDisabledList.multiSelected[0] : -1; | ||||
if (pos == -1 || !areDependenciesMet(g_ModsDisabled[pos])) | if (pos == -1 || !areDependenciesMet(g_ModsDisabled[pos])) | ||||
return; | return; | ||||
g_ModsEnabled.push(g_ModsDisabled.splice(pos, 1)[0]); | g_ModsEnabled.push(g_ModsDisabled.splice(pos, 1)[0]); | ||||
if (pos >= g_ModsDisabled.length) | if (pos >= g_ModsDisabled.length) | ||||
--pos; | --pos; | ||||
if (pos == -1) | |||||
modsDisabledList.multiSelected = []; | |||||
else | |||||
modsDisabledList.multiSelected = [pos]; | |||||
modsDisabledList.selected = pos; | modsDisabledList.selected = pos; | ||||
displayModLists(); | displayModLists(); | ||||
} | } | ||||
function disableMod() | function disableMod() | ||||
{ | { | ||||
let modsEnabledList = Engine.GetGUIObjectByName("modsEnabledList"); | let modsEnabledList = Engine.GetGUIObjectByName("modsEnabledList"); | ||||
let pos = modsEnabledList.selected; | let pos = modsEnabledList.multiSelected.length ? modsEnabledList.multiSelected[0] : -1; | ||||
if (pos == -1) | if (pos == -1) | ||||
return; | return; | ||||
g_ModsDisabled.push(g_ModsEnabled.splice(pos, 1)[0]); | g_ModsDisabled.push(g_ModsEnabled.splice(pos, 1)[0]); | ||||
// Remove mods that required the removed mod and cascade | // Remove mods that required the removed mod and cascade | ||||
// Sort them, so we know which ones can depend on the removed mod | // Sort them, so we know which ones can depend on the removed mod | ||||
// TODO: Find position where the removed mod would have fit (for now assume idx 0) | // TODO: Find position where the removed mod would have fit (for now assume idx 0) | ||||
sortEnabledMods(); | sortEnabledMods(); | ||||
for (let i = 0; i < g_ModsEnabled.length; ++i) | for (let i = 0; i < g_ModsEnabled.length; ++i) | ||||
if (!areDependenciesMet(g_ModsEnabled[i])) | if (!areDependenciesMet(g_ModsEnabled[i])) | ||||
{ | { | ||||
g_ModsDisabled.push(g_ModsEnabled.splice(i, 1)[0]); | g_ModsDisabled.push(g_ModsEnabled.splice(i, 1)[0]); | ||||
--i; | --i; | ||||
} | } | ||||
modsEnabledList.selected = Math.min(pos, g_ModsEnabled.length - 1); | let newPos = Math.min(pos, g_ModsEnabled.length - 1); | ||||
if (newPos == -1) | |||||
modsEnabledList.multiSelected = []; | |||||
else | |||||
modsEnabledList.multiSelected = [newPos]; | |||||
modsEnabledList.selected = newPos; | |||||
displayModLists(); | displayModLists(); | ||||
} | } | ||||
function applyFilters() | function applyFilters() | ||||
{ | { | ||||
// Save selected rows | // Save selected rows | ||||
let modsDisabledList = Engine.GetGUIObjectByName("modsDisabledList"); | let modsDisabledList = Engine.GetGUIObjectByName("modsDisabledList"); | ||||
let modsEnabledList = Engine.GetGUIObjectByName("modsEnabledList"); | let modsEnabledList = Engine.GetGUIObjectByName("modsEnabledList"); | ||||
let selectedDisabledFolder = modsDisabledList.list_folder[modsDisabledList.selected]; | let selectedDisabledFolder = modsDisabledList.list_folder[modsDisabledList.multiSelected.length ? modsDisabledList.multiSelected[0] : -1]; | ||||
let selectedEnabledFolder = modsEnabledList.list_folder[modsEnabledList.selected]; | let selectedEnabledFolder = modsEnabledList.list_folder[modsEnabledList.multiSelected.length ? modsEnabledList.multiSelected[0] : -1]; | ||||
// Remove selected rows to prevent a link to a non existing item | // Remove selected rows to prevent a link to a non existing item | ||||
modsDisabledList.multiSelected = []; | |||||
modsDisabledList.selected = -1; | modsDisabledList.selected = -1; | ||||
modsEnabledList.multiSelected = []; | |||||
modsEnabledList.selected = -1; | modsEnabledList.selected = -1; | ||||
displayModLists(); | displayModLists(); | ||||
// Restore previously selected rows | // Restore previously selected rows | ||||
modsDisabledList.selected = modsDisabledList.list_folder.indexOf(selectedDisabledFolder); | let disPos = modsDisabledList.list_folder.indexOf(selectedDisabledFolder); | ||||
modsEnabledList.selected = modsEnabledList.list_folder.indexOf(selectedEnabledFolder); | let enPos = modsEnabledList.list_folder.indexOf(selectedEnabledFolder); | ||||
if (enPos == -1) | |||||
modsEnabledList.multiSelected = []; | |||||
else | |||||
modsEnabledList.multiSelected = [enPos]; | |||||
modsEnabledList.selected = enPos; | |||||
if (disPos == -1) | |||||
modsDisabledList.multiSelected = []; | |||||
else | |||||
modsDisabledList.multiSelected = [disPos]; | |||||
modsDisabledList.selected = disPos; | |||||
Engine.GetGUIObjectByName("globalModDescription").caption = ""; | Engine.GetGUIObjectByName("globalModDescription").caption = ""; | ||||
} | } | ||||
function filterMod(folder) | function filterMod(folder) | ||||
{ | { | ||||
let mod = g_Mods[folder]; | let mod = g_Mods[folder]; | ||||
let negateFilter = Engine.GetGUIObjectByName("negateFilter").checked; | let negateFilter = Engine.GetGUIObjectByName("negateFilter").checked; | ||||
Show All 19 Lines | |||||
} | } | ||||
/** | /** | ||||
* Moves an item in the list up or down. | * Moves an item in the list up or down. | ||||
*/ | */ | ||||
function moveCurrItem(objectName, up) | function moveCurrItem(objectName, up) | ||||
{ | { | ||||
let obj = Engine.GetGUIObjectByName(objectName); | let obj = Engine.GetGUIObjectByName(objectName); | ||||
let idx = obj.selected; | let idx = obj.multiSelected.length ? obj.multiSelected[0] : -1; | ||||
if (idx == -1) | if (idx == -1) | ||||
return; | return; | ||||
let num = obj.list.length; | let num = obj.list.length; | ||||
let idx2 = idx + (up ? -1 : 1); | let idx2 = idx + (up ? -1 : 1); | ||||
if (idx2 < 0 || idx2 >= num) | if (idx2 < 0 || idx2 >= num) | ||||
return; | return; | ||||
let tmp = g_ModsEnabled[idx]; | let tmp = g_ModsEnabled[idx]; | ||||
g_ModsEnabled[idx] = g_ModsEnabled[idx2]; | g_ModsEnabled[idx] = g_ModsEnabled[idx2]; | ||||
g_ModsEnabled[idx2] = tmp; | g_ModsEnabled[idx2] = tmp; | ||||
obj.list = g_ModsEnabled; | obj.list = g_ModsEnabled; | ||||
obj.multiSelected = [idx2]; | |||||
obj.selected = idx2; | obj.selected = idx2; | ||||
displayModList("modsEnabledList", g_ModsEnabled); | displayModList("modsEnabledList", g_ModsEnabled); | ||||
} | } | ||||
function areDependenciesMet(folder) | function areDependenciesMet(folder) | ||||
{ | { | ||||
let guiObject = Engine.GetGUIObjectByName("message"); | let guiObject = Engine.GetGUIObjectByName("message"); | ||||
▲ Show 20 Lines • Show All 78 Lines • ▼ Show 20 Lines | |||||
} | } | ||||
function selectedMod(listObjectName) | function selectedMod(listObjectName) | ||||
{ | { | ||||
let listObject = Engine.GetGUIObjectByName(listObjectName); | let listObject = Engine.GetGUIObjectByName(listObjectName); | ||||
let otherListObject = Engine.GetGUIObjectByName(listObjectName == "modsDisabledList" ? | let otherListObject = Engine.GetGUIObjectByName(listObjectName == "modsDisabledList" ? | ||||
"modsEnabledList" : "modsDisabledList"); | "modsEnabledList" : "modsDisabledList"); | ||||
if (listObject.selected != -1) | if (listObject.multiSelected.length) | ||||
{ | { | ||||
otherListObject.multiSelected = []; | |||||
otherListObject.selected = -1; | otherListObject.selected = -1; | ||||
Engine.GetGUIObjectByName("visitWebButton").enabled = true; | Engine.GetGUIObjectByName("visitWebButton").enabled = true; | ||||
let toggleModButton = Engine.GetGUIObjectByName("toggleModButton"); | let toggleModButton = Engine.GetGUIObjectByName("toggleModButton"); | ||||
toggleModButton.caption = listObjectName == "modsDisabledList" ? translate("Enable") : translate("Disable"); | toggleModButton.caption = listObjectName == "modsDisabledList" ? translate("Enable") : translate("Disable"); | ||||
toggleModButton.enabled = true; | toggleModButton.enabled = true; | ||||
toggleModButton.onPress = listObjectName == "modsDisabledList" ? enableMod : disableMod; | toggleModButton.onPress = listObjectName == "modsDisabledList" ? enableMod : disableMod; | ||||
Engine.GetGUIObjectByName("enabledModUp").enabled = listObjectName == "modsEnabledList"; | Engine.GetGUIObjectByName("enabledModUp").enabled = listObjectName == "modsEnabledList"; | ||||
Engine.GetGUIObjectByName("enabledModDown").enabled = listObjectName == "modsEnabledList"; | Engine.GetGUIObjectByName("enabledModDown").enabled = listObjectName == "modsEnabledList"; | ||||
} | } | ||||
let index = listObject.multiSelected.length ? listObject.multiSelected[0] : -1; | |||||
Engine.GetGUIObjectByName("globalModDescription").caption = | Engine.GetGUIObjectByName("globalModDescription").caption = | ||||
listObject.list[listObject.selected] ? | listObject.list[index] ? | ||||
g_Mods[listObject.list[listObject.selected]].description : | g_Mods[listObject.list[index]].description : | ||||
'[color="' + g_ColorNoModSelected + '"]' + translate("No mod has been selected.") + '[/color]'; | '[color="' + g_ColorNoModSelected + '"]' + translate("No mod has been selected.") + '[/color]'; | ||||
} | } | ||||
function visitModWebsite() | function visitModWebsite() | ||||
{ | { | ||||
let modsEnabledList = Engine.GetGUIObjectByName("modsEnabledList"); | let modsEnabledList = Engine.GetGUIObjectByName("modsEnabledList"); | ||||
let modsDisabledList = Engine.GetGUIObjectByName("modsDisabledList"); | let modsDisabledList = Engine.GetGUIObjectByName("modsDisabledList"); | ||||
let list = modsEnabledList.selected == -1 ? modsDisabledList : modsEnabledList; | let list = !modsEnabledList.multiSelected.length ? modsDisabledList : modsEnabledList; | ||||
let folder = list.list_folder[list.selected]; | let index = list.multiSelected.length ? list.multiSelected[0] : -1; | ||||
let folder = list.list_folder[index]; | |||||
let url = folder && g_Mods[folder] && g_Mods[folder].url; | let url = folder && g_Mods[folder] && g_Mods[folder].url; | ||||
if (!url) | if (!url) | ||||
return; | return; | ||||
if (!url.startsWith("http://") && !url.startsWith("https://")) | if (!url.startsWith("http://") && !url.startsWith("https://")) | ||||
url = "http://" + url; | url = "http://" + url; | ||||
openURL(url); | openURL(url); | ||||
} | } |
Wildfire Games · Phabricator