mirror of
https://github.com/tobspr/shapez.io.git
synced 2026-03-02 03:39:21 +00:00
DLC: Next Puzzle button & Search functionality, other stuff
This commit is contained in:
25
src/js/game/hud/parts/HUDPuzzleNextPuzzle.js
Normal file
25
src/js/game/hud/parts/HUDPuzzleNextPuzzle.js
Normal file
@@ -0,0 +1,25 @@
|
||||
import { makeDiv } from "../../../core/utils";
|
||||
import { T } from "../../../translations";
|
||||
import { PuzzlePlayGameMode } from "../../modes/puzzle_play";
|
||||
import { BaseHUDPart } from "../base_hud_part";
|
||||
|
||||
export class HUDPuzzleNextPuzzle extends BaseHUDPart {
|
||||
createElements(parent) {
|
||||
this.element = makeDiv(parent, "ingame_HUD_PuzzleNextPuzzle");
|
||||
this.button = document.createElement("button");
|
||||
this.button.classList.add("button");
|
||||
this.button.innerText = T.ingame.puzzleCompletion.nextPuzzle;
|
||||
this.element.appendChild(this.button);
|
||||
|
||||
this.trackClicks(this.button, this.nextPuzzle);
|
||||
}
|
||||
|
||||
initialize() {}
|
||||
|
||||
nextPuzzle() {
|
||||
const gameMode = /** @type {PuzzlePlayGameMode} */ (this.root.gameMode);
|
||||
this.root.gameState.moveToState("PuzzleMenuState", {
|
||||
continueQueue: gameMode.nextPuzzles,
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -6,13 +6,8 @@ import { InputReceiver } from "../../../core/input_receiver";
|
||||
import { makeDiv } from "../../../core/utils";
|
||||
import { SOUNDS } from "../../../platform/sound";
|
||||
import { T } from "../../../translations";
|
||||
import { enumColors } from "../../colors";
|
||||
import { ColorItem } from "../../items/color_item";
|
||||
import { finalGameShape, rocketShape } from "../../modes/regular";
|
||||
import { BaseHUDPart } from "../base_hud_part";
|
||||
import { DynamicDomAttach } from "../dynamic_dom_attach";
|
||||
import { ShapeItem } from "../../items/shape_item";
|
||||
import { ShapeDefinition } from "../../shape_definition";
|
||||
|
||||
export class HUDPuzzleCompleteNotification extends BaseHUDPart {
|
||||
initialize() {
|
||||
@@ -68,10 +63,21 @@ export class HUDPuzzleCompleteNotification extends BaseHUDPart {
|
||||
this.menuBtn.classList.add("menu", "styledButton");
|
||||
this.menuBtn.innerText = T.ingame.puzzleCompletion.menuBtn;
|
||||
buttonBar.appendChild(this.menuBtn);
|
||||
|
||||
this.trackClicks(this.menuBtn, () => {
|
||||
this.close(true);
|
||||
});
|
||||
|
||||
const gameMode = /** @type {PuzzlePlayGameMode} */ (this.root.gameMode);
|
||||
if (gameMode.nextPuzzles.length > 0) {
|
||||
this.nextPuzzleBtn = document.createElement("button");
|
||||
this.nextPuzzleBtn.classList.add("nextPuzzle", "styledButton");
|
||||
this.nextPuzzleBtn.innerText = T.ingame.puzzleCompletion.nextPuzzle;
|
||||
buttonBar.appendChild(this.nextPuzzleBtn);
|
||||
|
||||
this.trackClicks(this.nextPuzzleBtn, () => {
|
||||
this.nextPuzzle();
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
updateState() {
|
||||
@@ -93,6 +99,15 @@ export class HUDPuzzleCompleteNotification extends BaseHUDPart {
|
||||
return this.visible;
|
||||
}
|
||||
|
||||
nextPuzzle() {
|
||||
const gameMode = /** @type {PuzzlePlayGameMode} */ (this.root.gameMode);
|
||||
gameMode.trackCompleted(this.userDidLikePuzzle, Math.round(this.timeOfCompletion)).then(() => {
|
||||
this.root.gameState.moveToState("PuzzleMenuState", {
|
||||
continueQueue: gameMode.nextPuzzles,
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
close(toMenu) {
|
||||
/** @type {PuzzlePlayGameMode} */ (this.root.gameMode)
|
||||
.trackCompleted(this.userDidLikePuzzle, Math.round(this.timeOfCompletion))
|
||||
|
||||
Reference in New Issue
Block a user