diff --git a/src/css/ingame_hud/puzzle_complete_notification.scss b/src/css/ingame_hud/puzzle_complete_notification.scss index 43cdc776..eb7ddf6f 100644 --- a/src/css/ingame_hud/puzzle_complete_notification.scss +++ b/src/css/ingame_hud/puzzle_complete_notification.scss @@ -13,7 +13,7 @@ & { /* @load-async */ - background: rgba(#333538, 0.98) uiResource("dialog_bg_pattern.png") top left / #{D(10px)} repeat; + background: rgba(#333538, 0.95) uiResource("dialog_bg_pattern.png") top left / #{D(10px)} repeat; } @include InlineAnimation(0.1s ease-in-out) { @@ -130,6 +130,12 @@ align-items: center; @include S(margin-bottom, 10px); + > .desc { + @include SuperSmallText; + opacity: 0.4; + @include S(margin-bottom, 4px); + } + > .shapes { @include S(margin-top, 10px); display: flex; diff --git a/src/css/states/puzzle_menu.scss b/src/css/states/puzzle_menu.scss index e247252d..a5b4b509 100644 --- a/src/css/states/puzzle_menu.scss +++ b/src/css/states/puzzle_menu.scss @@ -62,8 +62,8 @@ > .puzzles { display: grid; - grid-template-columns: repeat(auto-fit, minmax(D(150px), 1fr)); - @include S(grid-auto-rows, 120px); + grid-template-columns: repeat(auto-fit, minmax(D(130px), 1fr)); + @include S(grid-auto-rows, 90px); @include S(grid-gap, 3px); @include S(margin-top, 10px); @include S(padding-right, 4px); @@ -74,7 +74,7 @@ > .puzzle { width: 100%; - @include S(height, 120px); + @include S(height, 90px); background: #f3f3f8; @include S(border-radius, $globalBorderRadius); @@ -112,6 +112,12 @@ white-space: nowrap; text-overflow: ellipsis; overflow: hidden; + align-self: center; + justify-self: center; + width: 100%; + box-sizing: border-box; + @include S(padding, 2px, 5px); + @include S(height, 17px); } > .icon { @@ -119,8 +125,8 @@ grid-row: 2 / 3; align-self: center; justify-self: center; - @include S(width, 70px); - @include S(height, 70px); + @include S(width, 45px); + @include S(height, 45px); canvas { width: 100%; @@ -154,8 +160,8 @@ color: #000; justify-self: start; font-weight: bold; - @include S(margin-right, 10px); - @include S(padding-left, 14px); + @include S(margin-right, 5px); + @include S(padding-left, 12px); opacity: 0.7; display: inline-flex; align-items: center; @@ -176,7 +182,7 @@ color: #000; justify-self: start; font-weight: bold; - @include S(padding-left, 14px); + @include S(padding-left, 12px); opacity: 0.7; @include DarkThemeInvert; @@ -202,11 +208,15 @@ > .stats, > .author, > .title { - opacity: 0.5; + opacity: 0.3; } background: #fafafa; + @include DarkThemeOverride { + background: rgba(0, 0, 0, 0.05); + } + &::after { content: ""; position: absolute; diff --git a/src/js/game/buildings/balancer.js b/src/js/game/buildings/balancer.js index 7d6f3d0b..38a568e1 100644 --- a/src/js/game/buildings/balancer.js +++ b/src/js/game/buildings/balancer.js @@ -92,9 +92,11 @@ export class MetaBalancerBuilding extends MetaBuilding { * @param {GameRoot} root */ getAvailableVariants(root) { - let available = [defaultBuildingVariant]; + const deterministic = root.gameMode.getIsDeterministic(); - if (root.hubGoals.isRewardUnlocked(enumHubGoalRewards.reward_merger)) { + let available = deterministic ? [] : [defaultBuildingVariant]; + + if (!deterministic && root.hubGoals.isRewardUnlocked(enumHubGoalRewards.reward_merger)) { available.push(enumBalancerVariants.merger, enumBalancerVariants.mergerInverse); } diff --git a/src/js/game/game_mode.js b/src/js/game/game_mode.js index d515ca72..8abeafba 100644 --- a/src/js/game/game_mode.js +++ b/src/js/game/game_mode.js @@ -175,6 +175,11 @@ export class GameMode extends BasicSerializableObject { return false; } + /** @returns {boolean} */ + getIsDeterministic() { + return false; + } + /** @returns {number | undefined} */ getFixedTickrate() { return; diff --git a/src/js/game/hud/parts/puzzle_complete_notification.js b/src/js/game/hud/parts/puzzle_complete_notification.js index 5941a1f3..4b366243 100644 --- a/src/js/game/hud/parts/puzzle_complete_notification.js +++ b/src/js/game/hud/parts/puzzle_complete_notification.js @@ -32,7 +32,7 @@ export class HUDPuzzleCompleteNotification extends BaseHUDPart { this.root.signals.puzzleComplete.add(this.show, this); - this.selectionLiked = null; + this.selectionLiked = false; this.selectionDifficulty = null; this.timeOfCompletion = 0; } @@ -69,20 +69,13 @@ export class HUDPuzzleCompleteNotification extends BaseHUDPart { this.buttonLikeYes.classList.add("liked-yes"); likeButtons.appendChild(this.buttonLikeYes); this.trackClicks(this.buttonLikeYes, () => { - this.selectionLiked = true; - this.updateState(); - }); - - this.buttonLikeNo = document.createElement("button"); - this.buttonLikeNo.classList.add("liked-no"); - likeButtons.appendChild(this.buttonLikeNo); - this.trackClicks(this.buttonLikeNo, () => { - this.selectionLiked = false; + this.selectionLiked = !this.selectionLiked; this.updateState(); }); const stepDifficulty = makeDiv(this.elemContents, null, ["step", "stepDifficulty"]); makeDiv(stepDifficulty, null, ["title"], T.ingame.puzzleCompletion.titleRating); + makeDiv(stepDifficulty, null, ["desc"], T.ingame.puzzleCompletion.titleRatingDesc); const shapeContainer = makeDiv(stepDifficulty, null, ["shapes"]); @@ -135,7 +128,6 @@ export class HUDPuzzleCompleteNotification extends BaseHUDPart { updateState() { this.buttonLikeYes.classList.toggle("active", this.selectionLiked === true); - this.buttonLikeNo.classList.toggle("active", this.selectionLiked === false); this.difficultyElements.forEach((canvas, index) => canvas.classList.toggle("active", index === this.selectionDifficulty) ); @@ -165,7 +157,9 @@ export class HUDPuzzleCompleteNotification extends BaseHUDPart { /** @type {PuzzlePlayGameMode} */ (this.root.gameMode) .trackCompleted(this.selectionLiked, this.selectionDifficulty, Math.round(this.timeOfCompletion)) .then(() => { - this.root.gameState.moveToState("PuzzleMenuState"); + // this.root.gameState.moveToState("PuzzleMenuState"); + this.visible = false; + this.cleanup(); }); } diff --git a/src/js/game/hud/parts/puzzle_play_metadata.js b/src/js/game/hud/parts/puzzle_play_metadata.js index ec521cc8..a29f9779 100644 --- a/src/js/game/hud/parts/puzzle_play_metadata.js +++ b/src/js/game/hud/parts/puzzle_play_metadata.js @@ -51,6 +51,14 @@ export class HUDPuzzlePlayMetadata extends BaseHUDPart { : T.puzzleMenu.difficultyNotDetermined } +