import { THIRDPARTY_URLS } from "../core/config"; import { TextualGameState } from "../core/textual_game_state"; import { MODS } from "../mods/modloader"; import { T } from "../translations"; export class ModsState extends TextualGameState { constructor() { super("ModsState"); } getStateHeaderTitle() { return T.mods.title; } internalGetFullHtml() { let headerHtml = `

${this.getStateHeaderTitle()}

${ (G_IS_STANDALONE || G_IS_DEV) && MODS.mods.length > 0 ? `` : "" } ${ G_IS_STANDALONE || G_IS_DEV ? `` : "" }
`; return ` ${headerHtml}
${this.getInnerHTML()}
`; } getMainContentHTML() { if (!G_IS_STANDALONE && !G_IS_DEV) { return `

${T.mods.noModSupport}

Get on Steam!
`; } if (MODS.mods.length === 0) { return `
${T.mods.modsInfo}
`; } let modsHtml = ``; MODS.mods.forEach(mod => { modsHtml += `
${mod.metadata.name} ${mod.metadata.description} ${T.mods.modWebsite}
${T.mods.version}${mod.metadata.version} ${T.mods.author}${mod.metadata.author}
`; }); return `
${T.mods.modsInfo}
${modsHtml}
`; } onEnter() { const steamLink = this.htmlElement.querySelector(".steamLink"); if (steamLink) { this.trackClicks(steamLink, this.onSteamLinkClicked); } const openModsFolder = this.htmlElement.querySelector(".openModsFolder"); if (openModsFolder) { this.trackClicks(openModsFolder, this.openModsFolder); } const browseMods = this.htmlElement.querySelector(".browseMods"); if (browseMods) { this.trackClicks(browseMods, this.openBrowseMods); } const checkboxes = this.htmlElement.querySelectorAll(".checkbox"); Array.from(checkboxes).forEach(checkbox => { this.trackClicks(checkbox, this.showModTogglingComingSoon); }); } showModTogglingComingSoon() { this.dialogs.showWarning(T.mods.togglingComingSoon.title, T.mods.togglingComingSoon.description); } openModsFolder() { if (!G_IS_STANDALONE) { this.dialogs.showWarning(T.global.error, T.mods.folderOnlyStandalone); return; } ipcRenderer.invoke("open-mods-folder"); } openBrowseMods() { this.app.analytics.trackUiClick("mods_sbrowse_link"); this.app.platformWrapper.openExternalLink(THIRDPARTY_URLS.modBrowser); } onSteamLinkClicked() { this.app.analytics.trackUiClick("mods_steam_link"); this.app.platformWrapper.openExternalLink( THIRDPARTY_URLS.stanaloneCampaignLink + "/shapez_modsettings" ); return false; } getDefaultPreviousState() { return "SettingsState"; } }