import { TextualGameState } from "../core/textual_game_state"; import { formatSecondsToTimeAgo } from "../core/utils"; import { allApplicationSettings } from "../profile/application_settings"; import { T } from "../translations"; export class SettingsState extends TextualGameState { constructor() { super("SettingsState"); } getStateHeaderTitle() { return T.settings.title; } getMainContentHTML() { return ` ${this.getSettingsHtml()}
${T.global.loading} ...
`; } getSettingsHtml() { let lastCategory = null; let html = ""; for (let i = 0; i < allApplicationSettings.length; ++i) { const setting = allApplicationSettings[i]; if (setting.categoryId !== lastCategory) { lastCategory = setting.categoryId; if (i !== 0) { html += ""; } html += `${T.settings.categories[lastCategory]}`; html += "
"; } html += setting.getHtml(); } if (lastCategory) { html += "
"; } return html; } renderBuildText() { const labelVersion = this.htmlElement.querySelector(".buildVersion"); const lastBuildMs = new Date().getTime() - G_BUILD_TIME; const lastBuildText = formatSecondsToTimeAgo(lastBuildMs / 1000.0); const version = T.settings.versionBadges[G_APP_ENVIRONMENT]; labelVersion.innerHTML = ` ${G_BUILD_VERSION} @ ${version} @ ${G_BUILD_COMMIT_HASH} ${T.settings.buildDate.replace("", lastBuildText)}
`; } onEnter(payload) { this.renderBuildText(); this.trackClicks(this.htmlElement.querySelector(".about"), this.onAboutClicked, { preventDefault: false, }); const keybindingsButton = this.htmlElement.querySelector(".editKeybindings"); if (keybindingsButton) { this.trackClicks(keybindingsButton, this.onKeybindingsClicked, { preventDefault: false }); } this.initSettings(); } initSettings() { allApplicationSettings.forEach(setting => { const element = this.htmlElement.querySelector("[data-setting='" + setting.id + "']"); setting.bind(this.app, element, this.dialogs); setting.syncValueToElement(); this.trackClicks( element, () => { setting.modify(); }, { preventDefault: false } ); }); } onAboutClicked() { this.moveToStateAddGoBack("AboutState"); } onKeybindingsClicked() { this.moveToStateAddGoBack("KeybindingsState"); } }