From 68769cb7efa2da49d9b3d50d2a71069aa5b98b3a Mon Sep 17 00:00:00 2001 From: tobspr Date: Sun, 17 May 2020 13:24:47 +0200 Subject: [PATCH] Dark mode support and much other stuff --- res/ui/get_on_steam.png | Bin 38720 -> 32855 bytes src/css/adinplay.scss | 4 +-- src/css/application_error.scss | 2 +- src/css/common.scss | 26 ++++++++------ src/css/ingame_hud/building_placer.scss | 14 ++++++-- src/css/ingame_hud/buildings_toolbar.scss | 4 +-- src/css/ingame_hud/dialogs.scss | 36 +++++++++++++++++++- src/css/ingame_hud/game_menu.scss | 5 +-- src/css/ingame_hud/mass_selector.scss | 2 +- src/css/ingame_hud/notifications.scss | 6 +++- src/css/ingame_hud/pinned_shapes.scss | 6 ++++ src/css/ingame_hud/settings_menu.scss | 2 +- src/css/ingame_hud/shop.scss | 16 ++++++--- src/css/ingame_hud/statistics.scss | 8 +++-- src/css/ingame_hud/unlock_notification.scss | 6 ++-- src/css/ingame_hud/vignette_overlay.scss | 5 +++ src/css/main.scss | 2 +- src/css/mixins.scss | 13 +++++++ src/css/states/main_menu.scss | 34 +++++++++++++----- src/css/states/preload.scss | 2 +- src/css/states/settings.scss | 26 ++++++++++++-- src/css/textual_game_state.scss | 2 +- src/css/variables.scss | 3 +- src/js/core/config.js | 4 +-- src/js/game/hud/parts/settings_menu.js | 7 ++-- src/js/game/hud/parts/statistics.js | 2 +- src/js/game/map_chunk_view.js | 5 +-- src/js/game/theme.js | 7 ++-- src/js/game/themes/dark.json | 4 +++ src/js/game/themes/light.json | 5 +++ src/js/profile/application_settings.js | 36 +++++++++++--------- src/js/states/ingame.js | 5 ++- src/js/states/main_menu.js | 9 ++++- src/js/states/settings.js | 6 ++-- translations/base-en.yaml | 12 ++++--- 35 files changed, 243 insertions(+), 83 deletions(-) diff --git a/res/ui/get_on_steam.png b/res/ui/get_on_steam.png index f276031cb47d78343bd9488f827eb4feca3f447b..f8503229d4f58b0a0e69cba013b5645024802284 100644 GIT binary patch delta 30832 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 i`U7P4!L_~r<<(LxgcVqnW-%}@FnGH9xvX span { @include S(font-size, 9px); diff --git a/src/css/ingame_hud/building_placer.scss b/src/css/ingame_hud/building_placer.scss index ab7c8da9..55b2af34 100644 --- a/src/css/ingame_hud/building_placer.scss +++ b/src/css/ingame_hud/building_placer.scss @@ -6,7 +6,7 @@ display: grid; @include S(padding, 6px); - @include S(border-radius, 2px); + @include S(border-radius, $globalBorderRadius); @include S(width, 240px); @include S(grid-column-gap, 5px); @@ -14,6 +14,10 @@ grid-template-columns: 1fr auto; grid-template-rows: auto 1fr; + @include DarkThemeOverride { + background-color: #55585a; + } + .buildingLabel { @include PlainText; @include S(margin-bottom, 2px); @@ -54,7 +58,7 @@ @include S(width, 100px); @include S(height, 100px); background: top left / 100% 100% no-repeat; - @include S(border-radius, 2px); + @include S(border-radius, $globalBorderRadius); } @include StyleBelowWidth(700px) { @@ -77,10 +81,14 @@ .keybinding { position: relative; } + + @include DarkThemeOverride { + color: rgba(#fff, 0.5); + } } .variant { - @include S(border-radius, 4px); + @include S(border-radius, $globalBorderRadius); background: rgba(0, 10, 20, 0.1); display: flex; position: relative; diff --git a/src/css/ingame_hud/buildings_toolbar.scss b/src/css/ingame_hud/buildings_toolbar.scss index e3ba48e0..d9f91fcc 100644 --- a/src/css/ingame_hud/buildings_toolbar.scss +++ b/src/css/ingame_hud/buildings_toolbar.scss @@ -56,10 +56,10 @@ } } - @include S(border-radius, 4px); + @include S(border-radius, $globalBorderRadius); &.selected { - background-color: rgba(74, 163, 223, 0.3) !important; + background-color: rgba($colorBlueBright, 0.3) !important; transform: scale(1.05); .keybinding { color: #111; diff --git a/src/css/ingame_hud/dialogs.scss b/src/css/ingame_hud/dialogs.scss index e2a79ed9..45015115 100644 --- a/src/css/ingame_hud/dialogs.scss +++ b/src/css/ingame_hud/dialogs.scss @@ -21,6 +21,19 @@ } } + @include DarkThemeOverride { + background: rgba(#33363d, 0.9); + @include InlineAnimation(0.12s ease-in-out) { + 0% { + background-color: transparent; + opacity: 0.5; + } + 100% { + background-color: rgba(#33363d, 0.9); + } + } + } + &.visible { .dialogInner { opacity: 1; @@ -43,12 +56,16 @@ @include S(min-width, 300px); max-width: calc(100vw - #{D(40px)}); max-height: calc(100vh - #{D(40px)}); - @include S(border-radius, 4px); + @include S(border-radius, $globalBorderRadius); display: flex; flex-direction: column; @include S(padding, 12px); pointer-events: all; + @include DarkThemeOverride { + background: #333438; + } + &.optionChooserDialog { .optionParent { display: grid; @@ -59,6 +76,16 @@ cursor: pointer; @include S(padding, 10px); background: #eee; + transition: background-color 0.12s ease-in-out; + + &:hover { + background-color: #e7e7e7; + } + + &.active { + background-color: $colorBlueBright; + color: #fff; + } } } } @@ -72,6 +99,7 @@ grid-template-columns: 1fr auto; @include S(margin-bottom, 10px); + @include DarkThemeInvert(); > .closeButton { opacity: 0.7; @include S(width, 20px); @@ -87,6 +115,7 @@ } > .content { + @include PlainText; overflow-y: auto; pointer-events: all; } @@ -101,6 +130,11 @@ @include S(min-width, 60px); @include S(padding, 5px, 15px); + transition: opacity 0.12s ease-in-out; + &:hover { + opacity: 0.9; + } + &.good { background-color: $colorGreenBright; color: #fff; diff --git a/src/css/ingame_hud/game_menu.scss b/src/css/ingame_hud/game_menu.scss index e32adfce..87b6cbef 100644 --- a/src/css/ingame_hud/game_menu.scss +++ b/src/css/ingame_hud/game_menu.scss @@ -27,6 +27,8 @@ position: relative; @include IncreasedClickArea(0px); + @include DarkThemeInvert; + &:hover { opacity: 0.8; } @@ -79,7 +81,6 @@ border-color: rgba(0, 0, 0, 0.1); @include S(padding, 5px, 5px, 5px); - border-radius: 0 0 #{D(4px)} #{D(4px)}; @include S(padding-left, 30px); @include S(margin-right, 3px); @include IncreasedClickArea(0px); @@ -144,7 +145,7 @@ @include S(min-width, 5px); @include S(height, 10px); @include S(padding, 1px, 3px, 2px); - @include S(border-radius, 4px); + @include S(border-radius, $globalBorderRadius); border: #{D(1px)} solid #fff; @include InlineAnimation(1s ease-in-out infinite) { 50% { diff --git a/src/css/ingame_hud/mass_selector.scss b/src/css/ingame_hud/mass_selector.scss index 99027735..3c41893c 100644 --- a/src/css/ingame_hud/mass_selector.scss +++ b/src/css/ingame_hud/mass_selector.scss @@ -4,7 +4,7 @@ left: 50%; transform: translateX(-50%); background: rgba(lighten(#f77, 5), 0.95); - @include S(border-radius, 2px); + @include S(border-radius, $globalBorderRadius); @include S(padding, 6px, 10px); @include SuperSmallText; color: #fff; diff --git a/src/css/ingame_hud/notifications.scss b/src/css/ingame_hud/notifications.scss index cc957e5c..4b8ee767 100644 --- a/src/css/ingame_hud/notifications.scss +++ b/src/css/ingame_hud/notifications.scss @@ -5,13 +5,17 @@ .notification { background: rgba(#333438, 0.8); - @include S(border-radius, 2px); + @include S(border-radius, $globalBorderRadius); @include S(margin-top, 3px); color: #fff; @include SuperSmallText; @include S(padding, 7px, 10px); @include S(width, 150px); + @include DarkThemeOverride { + background-color: rgba(#55595d, 0.8); + } + &[data-icon] { @include S(background-position-x, 8px); background-position-y: center; diff --git a/src/css/ingame_hud/pinned_shapes.scss b/src/css/ingame_hud/pinned_shapes.scss index 4947db29..2e4c8390 100644 --- a/src/css/ingame_hud/pinned_shapes.scss +++ b/src/css/ingame_hud/pinned_shapes.scss @@ -41,6 +41,10 @@ flex-direction: row; grid-column: 2 / 3; @include S(height, 9px); + + @include DarkThemeOverride { + color: #eee; + } } > .goalLabel { @@ -68,6 +72,8 @@ @include S(top, -4px); @include S(left, -4px); background: uiResource("icons/current_goal_marker.png") center center / contain no-repeat; + + @include DarkThemeInvert; } } } diff --git a/src/css/ingame_hud/settings_menu.scss b/src/css/ingame_hud/settings_menu.scss index ade1fda1..70b9897a 100644 --- a/src/css/ingame_hud/settings_menu.scss +++ b/src/css/ingame_hud/settings_menu.scss @@ -27,6 +27,6 @@ @include S(grid-gap, 10px); background: rgba(0, 10, 20, 0.1); @include S(padding, 20px); - @include S(border-radius, 2px); + @include S(border-radius, $globalBorderRadius); } } diff --git a/src/css/ingame_hud/shop.scss b/src/css/ingame_hud/shop.scss index cba6eb33..41834d06 100644 --- a/src/css/ingame_hud/shop.scss +++ b/src/css/ingame_hud/shop.scss @@ -9,7 +9,7 @@ display: grid; grid-template-columns: auto 1fr auto; background: #eee; - @include S(border-radius, 3px); + @include S(border-radius, $globalBorderRadius); @include S(margin-bottom, 4px); @include S(padding, 5px, 10px); @include S(grid-row-gap, 1px); @@ -20,6 +20,10 @@ margin-bottom: 0; } + @include DarkThemeOverride { + background: #55585a; + } + .title { grid-column: 1 / 3; grid-row: 1 / 2; @@ -32,7 +36,7 @@ .tier { @include S(margin-right, 9px); background: $colorGreenBright; - @include S(border-radius, 2px); + @include S(border-radius, $globalBorderRadius); text-transform: uppercase; @include PlainText; color: #fff; @@ -160,19 +164,23 @@ background: #e2e4e6; @include S(line-height, 13px); - @include S(border-radius, 2px); + @include S(border-radius, $globalBorderRadius); @include S(padding, 1px, 2px, 2px); position: relative; text-align: center; @include S(min-width, 50px); overflow: hidden; + @include DarkThemeOverride { + background: #333438; + } + .progressBar { bottom: 0; left: 0; right: 0; top: 0; - @include S(border-radius, 2px); + @include S(border-radius, $globalBorderRadius); position: absolute; display: inline-block; z-index: -1; diff --git a/src/css/ingame_hud/statistics.scss b/src/css/ingame_hud/statistics.scss index f646badd..fe56f393 100644 --- a/src/css/ingame_hud/statistics.scss +++ b/src/css/ingame_hud/statistics.scss @@ -80,10 +80,14 @@ > div { background: #f4f4f4; - @include S(border-radius, 2px); + @include S(border-radius, $globalBorderRadius); @include S(margin-bottom, 4px); display: grid; + @include DarkThemeOverride { + background: #222428; + } + grid-template-columns: 1fr auto; @include S(padding, 5px); &:last-child { @@ -100,7 +104,7 @@ .counter { @include SuperSmallText; - @include S(border-radius, 2px); + @include S(border-radius, $globalBorderRadius); @include S(padding, 0, 3px); } } diff --git a/src/css/ingame_hud/unlock_notification.scss b/src/css/ingame_hud/unlock_notification.scss index 15ffe0e0..597b45f9 100644 --- a/src/css/ingame_hud/unlock_notification.scss +++ b/src/css/ingame_hud/unlock_notification.scss @@ -17,7 +17,7 @@ .dialog { background: rgba(#222428, 0.5); - @include S(border-radius, 4px); + @include S(border-radius, $globalBorderRadius); @include S(padding, 30px); @include InlineAnimation(0.5s ease-in-out) { @@ -54,7 +54,7 @@ @include S(padding, 1px, 6px); @include S(margin, 20px, 0, 20px); - @include S(border-radius, 4px); + @include S(border-radius, $globalBorderRadius); @include InlineAnimation(0.5s ease-in-out) { 0% { transform: translateY(-60vh); @@ -111,7 +111,7 @@ background-position: center center; background-size: cover; background-repeat: no-repeat; - @include S(border-radius, 4px); + @include S(border-radius, $globalBorderRadius); box-shadow: #{D(2px)} #{D(3px)} 0 0 rgba(0, 0, 0, 0.15); } } diff --git a/src/css/ingame_hud/vignette_overlay.scss b/src/css/ingame_hud/vignette_overlay.scss index c973b16e..ce569fd4 100644 --- a/src/css/ingame_hud/vignette_overlay.scss +++ b/src/css/ingame_hud/vignette_overlay.scss @@ -6,4 +6,9 @@ bottom: 0; background: uiResource("vignette.lossless.png") center center / cover no-repeat; pointer-events: none; + + @include DarkThemeOverride { + // Too many artifacts + display: none; + } } diff --git a/src/css/main.scss b/src/css/main.scss index 166eb6f7..a17833c8 100644 --- a/src/css/main.scss +++ b/src/css/main.scss @@ -62,9 +62,9 @@ ingame_HUD_MassSelector, ingame_HUD_BetaOverlay, // Dialogs +ingame_HUD_UnlockNotification, ingame_HUD_Shop, ingame_HUD_Statistics, -ingame_HUD_UnlockNotification, ingame_HUD_SettingsMenu; $zindex: 100; diff --git a/src/css/mixins.scss b/src/css/mixins.scss index 311c176d..dc5eeb86 100644 --- a/src/css/mixins.scss +++ b/src/css/mixins.scss @@ -348,3 +348,16 @@ button, @content; } } + +@mixin DarkThemeOverride { + @at-root body[data-theme="dark"] &, + &[data-theme="dark"] { + @content; + } +} + +@mixin DarkThemeInvert { + @include DarkThemeOverride { + filter: invert(1); + } +} diff --git a/src/css/states/main_menu.scss b/src/css/states/main_menu.scss index af6878e7..b77fdc07 100644 --- a/src/css/states/main_menu.scss +++ b/src/css/states/main_menu.scss @@ -4,9 +4,26 @@ justify-content: center; flex-direction: column; - background: rgb(140, 165, 194) center center / cover !important; + // background: #aaacb4 center center / cover !important; + background: #bbc2cf center center / cover !important; + + .settingsButton { + position: absolute; + @include S(bottom, 30px); + @include S(right, 30px); + @include S(width, 35px); + @include S(height, 35px); + pointer-events: all; + cursor: pointer; + background: uiResource("icons/settings.png") center center / contain no-repeat; + transition: opacity 0.12s ease-in-out; + &:hover { + opacity: 0.9; + } + } .fullscreenBackgroundVideo { + // display: none !important; z-index: -1; position: fixed; right: 50%; @@ -45,7 +62,7 @@ .standaloneBanner { background: rgb(255, 225, 238); - @include S(border-radius, 4px); + @include S(border-radius, $globalBorderRadius); height: 100%; box-sizing: border-box; @include S(padding, 15px); @@ -125,7 +142,7 @@ @include PlainText; background: $colorRedBright; @include S(padding, 10px); - @include S(border-radius, 4px); + @include S(border-radius, $globalBorderRadius); color: #fff; @include S(margin-top, 10px); border: #{D(2px)} solid rgba(0, 10, 20, 0.1); @@ -138,7 +155,7 @@ flex-direction: column; background: #fafafa; @include S(padding, 20px); - @include S(border-radius, 4px); + @include S(border-radius, $globalBorderRadius); // border: #{D(2px)} solid rgba(0, 10, 20, 0.1); height: 100%; width: 100%; @@ -149,7 +166,7 @@ background-color: $colorRedBright; @include PlainText; color: #fff; - @include S(border-radius, 4px); + @include S(border-radius, $globalBorderRadius); @include S(padding, 5px); } @@ -158,9 +175,10 @@ @include S(width, 130px); @include S(padding, 15px, 20px); letter-spacing: 0.3em !important; + + font-weight: bold; color: #fff; background-color: $colorGreenBright; - text-shadow: #{D(1px)} #{D(2px)} 0 rgba(0, 0, 0, 0.1); transition: transform 0.12s ease-in-out; &:hover { transform: scale(1.02); @@ -184,7 +202,7 @@ .savegame { background: #eee; - @include BorderRadius(4px); + @include S(border-radius, $globalBorderRadius); @include S(padding, 5px); display: grid; grid-template-columns: 1fr auto auto; @@ -259,7 +277,7 @@ background: #fafafa; @include S(padding, 5px); @include S(padding-left, 10px); - @include S(border-radius, 4px); + @include S(border-radius, $globalBorderRadius); @include S(margin-left, 10px); @include SuperSmallText(); diff --git a/src/css/states/preload.scss b/src/css/states/preload.scss index d7cb412f..4a16d387 100644 --- a/src/css/states/preload.scss +++ b/src/css/states/preload.scss @@ -32,7 +32,7 @@ @include BoxShadow3D(#fff); @include S(padding, 15px); - @include BorderRadius(4px); + @include S(border-radius, $globalBorderRadius); @include DropShadow; .errorHeader { diff --git a/src/css/states/settings.scss b/src/css/states/settings.scss index f4b6e6b4..0c9ca862 100644 --- a/src/css/states/settings.scss +++ b/src/css/states/settings.scss @@ -8,10 +8,23 @@ @include Heading; } + .versionbar { + @include S(margin-top, 20px); + @include SuperSmallText; + display: grid; + align-items: center; + grid-template-columns: 1fr auto; + .buildVersion { + display: flex; + flex-direction: column; + color: #aaadaf; + } + } + .setting { @include S(padding, 10px); background: #eee; - @include S(border-radius, 2px); + @include S(border-radius, $globalBorderRadius); @include S(margin-bottom, 5px); label { @@ -31,6 +44,15 @@ grid-template-columns: 1fr auto; } + &.disabled { + opacity: 0.3; + pointer-events: none; + * { + pointer-events: none !important; + cursor: default !important; + } + } + .value.enum { background: #fff; @include PlainText; @@ -40,7 +62,7 @@ cursor: pointer; justify-content: center; @include S(min-width, 100px); - @include S(border-radius, 2px); + @include S(border-radius, $globalBorderRadius); @include S(padding, 4px); @include S(padding-right, 15px); diff --git a/src/css/textual_game_state.scss b/src/css/textual_game_state.scss index ffb2a757..d8c980cd 100644 --- a/src/css/textual_game_state.scss +++ b/src/css/textual_game_state.scss @@ -33,7 +33,7 @@ .content { background: #fff; - @include S(border-radius, 2px); + @include S(border-radius, $globalBorderRadius); @include S(padding, 10px); max-height: calc(80vh - #{D(60px)}); overflow-y: auto; diff --git a/src/css/variables.scss b/src/css/variables.scss index 99dc3ea1..03213900 100644 --- a/src/css/variables.scss +++ b/src/css/variables.scss @@ -31,6 +31,7 @@ $mainBgColor: #dee1ea; $accentColorBright: #e1e4ed; $accentColorDark: #7d808a; $colorGreenBright: #66bb6a; +$colorBlueBright: rgb(74, 163, 223); $colorRedBright: #ef5072; $themeColor: #393747; $ingameHudBg: rgba($accentColorBright, 0.1); @@ -39,7 +40,7 @@ $ingameHudBorder: #{D(1.5px)} solid $accentColorDark; $text3dColor: #f4ffff; // Dialog properties -$modalDialogBg: rgba(#666a73, 0.8); +$modalDialogBg: rgba(160, 165, 180, 0.8); $dialogBgColor: lighten($mainBgColor, 10); $lightFontWeight: normal; diff --git a/src/js/core/config.js b/src/js/core/config.js index e7e6c47c..10495e4f 100644 --- a/src/js/core/config.js +++ b/src/js/core/config.js @@ -76,8 +76,8 @@ export const globalConfig = { debug: { /* dev:start */ - fastGameEnter: true, - noArtificialDelays: true, + // fastGameEnter: true, + // noArtificialDelays: true, // disableSavegameWrite: true, showEntityBounds: false, showAcceptorEjectors: false, diff --git a/src/js/game/hud/parts/settings_menu.js b/src/js/game/hud/parts/settings_menu.js index b2c706b7..8dbfee2f 100644 --- a/src/js/game/hud/parts/settings_menu.js +++ b/src/js/game/hud/parts/settings_menu.js @@ -88,8 +88,11 @@ export class HUDSettingsMenu extends BaseHUDPart { // this.background.classList.add("visible"); this.root.app.inputMgr.makeSureAttachedAndOnTop(this.inputReciever); - const totalSecondsPlayed = Math.ceil(this.root.time.now()); - this.timePlayed.querySelector(".playtime").innerText = formatSeconds(totalSecondsPlayed); + const totalMinutesPlayed = Math.ceil(this.root.time.now() / 60); + this.timePlayed.querySelector(".playtime").innerText = T.global.time.xMinutes.replace( + "", + "" + totalMinutesPlayed + ); } close() { diff --git a/src/js/game/hud/parts/statistics.js b/src/js/game/hud/parts/statistics.js index 010d923f..f8cdd0a8 100644 --- a/src/js/game/hud/parts/statistics.js +++ b/src/js/game/hud/parts/statistics.js @@ -56,7 +56,7 @@ export class HUDStatistics extends BaseHUDPart { this.dataSource = source; this.dialogInner.setAttribute("data-datasource", source); - this.sourceExplanation.innerText = T.ingame.statistics.dataSources[source].title; + this.sourceExplanation.innerText = T.ingame.statistics.dataSources[source].description; if (this.visible) { this.rerenderFull(); } diff --git a/src/js/game/map_chunk_view.js b/src/js/game/map_chunk_view.js index 7634db64..411bfba8 100644 --- a/src/js/game/map_chunk_view.js +++ b/src/js/game/map_chunk_view.js @@ -7,6 +7,7 @@ import { Math_max, Math_round } from "../core/builtins"; import { Rectangle } from "../core/rectangle"; import { createLogger } from "../core/logging"; import { smoothenDpi } from "../core/dpi_manager"; +import { THEME } from "./theme"; const logger = createLogger("chunk"); const chunkSizePixels = globalConfig.mapChunkSize * globalConfig.tileSize; @@ -119,9 +120,9 @@ export class MapChunkView extends MapChunk { context.scale(bgDpi, bgDpi); } else { if (this.containedEntities.length > 0) { - context.fillStyle = "#c5ccd6"; + context.fillStyle = THEME.map.chunkOverview.filled; } else { - context.fillStyle = "#a6afbb"; + context.fillStyle = THEME.map.chunkOverview.empty; } context.fillRect(0, 0, 10000, 10000); } diff --git a/src/js/game/theme.js b/src/js/game/theme.js index 198f9797..251f4433 100644 --- a/src/js/game/theme.js +++ b/src/js/game/theme.js @@ -3,5 +3,8 @@ export const THEMES = { light: require("./themes/light.json"), }; -// TODO: Make themes customizable -export const THEME = THEMES.light; +export let THEME = THEMES.light; + +export function applyGameTheme(id) { + THEME = THEMES[id]; +} diff --git a/src/js/game/themes/dark.json b/src/js/game/themes/dark.json index 6d0c1b22..caf28bfb 100644 --- a/src/js/game/themes/dark.json +++ b/src/js/game/themes/dark.json @@ -10,6 +10,10 @@ "red": "#4a3d3f", "green": "#3e4a3d", "blue": "#35384a" + }, + "chunkOverview": { + "empty": "#444856", + "filled": "#646b7d" } }, diff --git a/src/js/game/themes/light.json b/src/js/game/themes/light.json index c3431928..d0a1e9bb 100644 --- a/src/js/game/themes/light.json +++ b/src/js/game/themes/light.json @@ -10,6 +10,11 @@ "red": "#ffbfc1", "green": "#cbffc4", "blue": "#bfdaff" + }, + + "chunkOverview": { + "empty": "#a6afbb", + "filled": "c5ccd6" } }, diff --git a/src/js/profile/application_settings.js b/src/js/profile/application_settings.js index b86ba45d..b45d35b8 100644 --- a/src/js/profile/application_settings.js +++ b/src/js/profile/application_settings.js @@ -6,7 +6,7 @@ import { ReadWriteProxy } from "../core/read_write_proxy"; import { BoolSetting, EnumSetting, BaseSetting } from "./setting_types"; import { createLogger } from "../core/logging"; import { ExplainedResult } from "../core/explained_result"; -import { THEMES } from "../game/theme"; +import { THEMES, THEME, applyGameTheme } from "../game/theme"; const logger = createLogger("application_settings"); @@ -68,26 +68,14 @@ export const allApplicationSettings = [ }, G_IS_STANDALONE ), - new EnumSetting("theme", { - options: Object.keys(THEMES), - valueGetter: theme => theme, - textGetter: theme => theme.substr(0, 1).toUpperCase() + theme.substr(1), - category: categoryApp, - restartRequired: false, - changeCb: - /** - * @param {Application} app - */ - (app, id) => document.body.setAttribute("data-theme", id), - }), + new BoolSetting( "soundsMuted", categoryApp, /** * @param {Application} app */ - (app, value) => app.sound.setSoundsMuted(value), - false + (app, value) => app.sound.setSoundsMuted(value) ), new BoolSetting( "musicMuted", @@ -95,11 +83,25 @@ export const allApplicationSettings = [ /** * @param {Application} app */ - (app, value) => app.sound.setMusicMuted(value), - false + (app, value) => app.sound.setMusicMuted(value) ), // GAME + new EnumSetting("theme", { + options: Object.keys(THEMES), + valueGetter: theme => theme, + textGetter: theme => theme.substr(0, 1).toUpperCase() + theme.substr(1), + category: categoryGame, + restartRequired: false, + changeCb: + /** + * @param {Application} app + */ + (app, id) => { + applyGameTheme(id); + document.body.setAttribute("data-theme", id); + }, + }), ]; export function getApplicationSettingById(id) { diff --git a/src/js/states/ingame.js b/src/js/states/ingame.js index 5e0c8d62..6307a22c 100644 --- a/src/js/states/ingame.js +++ b/src/js/states/ingame.js @@ -148,7 +148,10 @@ export class InGameState extends GameState { * Goes back to the settings state */ goToSettings() { - this.saveThenGoToState("SettingsState"); + this.saveThenGoToState("SettingsState", { + backToStateId: this.key, + backToStatePayload: this.creationPayload, + }); } /** diff --git a/src/js/states/main_menu.js b/src/js/states/main_menu.js index f701fa85..8335e350 100644 --- a/src/js/states/main_menu.js +++ b/src/js/states/main_menu.js @@ -32,6 +32,8 @@ export class MainMenuState extends GameState { return ` + + @@ -191,6 +193,7 @@ export class MainMenuState extends GameState { }); } + this.trackClicks(qs(".settingsButton"), this.onSettingsButtonClicked); this.renderSavegames(); } @@ -281,6 +284,10 @@ export class MainMenuState extends GameState { }); } + onSettingsButtonClicked() { + this.moveToState("SettingsState"); + } + onPlayButtonClicked() { const savegame = this.app.savegameMgr.createNewSavegame(); @@ -288,7 +295,7 @@ export class MainMenuState extends GameState { if (G_IS_DEV) { // TODO - this.moveToState("SettingsState"); + // this.moveToState("SettingsState"); } this.moveToState("InGameState", { diff --git a/src/js/states/settings.js b/src/js/states/settings.js index 48a60273..35d7687c 100644 --- a/src/js/states/settings.js +++ b/src/js/states/settings.js @@ -19,12 +19,12 @@ export class SettingsState extends TextualGameState { ${ this.app.platformWrapper.getSupportsKeyboard() ? ` - + ` : "" } - + @@ -33,7 +33,7 @@ export class SettingsState extends TextualGameState { ${this.getSettingsHtml()}

${T.global.loading} ...
- +
diff --git a/translations/base-en.yaml b/translations/base-en.yaml index 9eb66b86..4543de87 100644 --- a/translations/base-en.yaml +++ b/translations/base-en.yaml @@ -45,6 +45,8 @@ global: minutesAndSecondsShort: m s hoursAndMinutesShort: h s + xMinutes: minutes + keys: tab: TAB control: CTRL @@ -290,11 +292,6 @@ settings: description: >- It is recommended to play the game in fullscreen to get the best experience. Only available in the standalone. - theme: - title: Interface theme - description: >- - Choose the interface theme which also affects the game. Notice that everything except the default theme may lead to graphical issues. - soundsMuted: title: Mute Sounds description: >- @@ -304,3 +301,8 @@ settings: title: Mute Music description: >- If enabled, mutes all music. + + theme: + title: Game theme + description: >- + Choose the game theme which mainly affects the map background. Notice that everything except the light theme may lead to graphical issues.