PageSourceSearch

https://doors-to-manual.netlify.app/js/scenes/WinScene.js

js doors-to-manual.netlify.app collected 2026-10-03 10:39:49 UTC 2,854 bytes, 97 lines download raw bytes

1class WinScene extends Phaser.Scene {
2  constructor() {
3    super({ key: "WinScene" });
4  }
5
6  create(data) {
7    const finalScore = data && typeof data.score === "number" ? data.score : 0;
8
9    this.add.rectangle(CW / 2, CH / 2, CW, CH, 0x000000);
10    this.add
11      .text(CW / 2, 86, "Ladies and Gentlemen, we have safely landed.", {
12        fontFamily: '"Press Start 2P"',
13        fontSize: "10px",
14        color: "#FFFFFF",
15      })
16      .setOrigin(0.5);
17    this.add
18      .text(CW / 2, 132, "DOORS TO MANUAL", {
19        fontFamily: '"Press Start 2P"',
20        fontSize: "22px",
21        color: "#00FF7F",
22      })
23      .setOrigin(0.5);
24    this.add
25      .text(CW / 2, 178, `FINAL SCORE: ${finalScore}`, {
26        fontFamily: '"Press Start 2P"',
27        fontSize: "12px",
28        color: "#FFFF44",
29      })
30      .setOrigin(0.5);
31
32    const playAgainY = 226;
33    let didRestart = false;
34    const restartToStart = () => {
35      if (didRestart || !this.scene.isActive("WinScene")) return;
36      didRestart = true;
37      this.scene.start("CharacterSelectScene");
38    };
39
40    const playAgain = this.add
41      .text(CW / 2, playAgainY, "PLAY AGAIN", {
42        fontFamily: '"Press Start 2P"',
43        fontSize: "12px",
44        color: "#00FF7F",
45        backgroundColor: "#10251a",
46        padding: { x: 14, y: 10 },
47      })
48      .setOrigin(0.5)
49      .setInteractive({ useHandCursor: true });
50    playAgain.on("pointerup", restartToStart);
51
52    const playAgainZone = this.add
53      .zone(CW / 2, playAgainY, 260, 64)
54      .setOrigin(0.5)
55      .setInteractive({ useHandCursor: true });
56    playAgainZone.on("pointerup", restartToStart);
57
58    const exitPortal = this.add
59      .text(CW / 2, CH - 100, "🌀 VIBE JAM PORTAL →", {
60        fontFamily: '"Press Start 2P"',
61        fontSize: "9px",
62        color: "#00FF7F",
63        backgroundColor: "#0a1a0a",
64        padding: { x: 12, y: 8 },
65      })
66      .setOrigin(0.5)
67      .setInteractive({ useHandCursor: true });
68
69    exitPortal.on("pointerdown", () => {
70      window.location.href =
71        "https://vibejam.cc/portal/2026?ref=doors-to-manual.netlify.app";
72    });
73
74    this.tweens.add({
75      targets: exitPortal,
76      alpha: { from: 1, to: 0.5 },
77      duration: 600,
78      yoyo: true,
79      repeat: -1,
80    });
81
82    this.input.keyboard.once("keydown-ENTER", restartToStart);
83    this.input.keyboard.once("keydown-SPACE", restartToStart);
84
85    this.cameras.main.fadeIn(900, 0, 0, 0);
86
87    const phaseEl = document.getElementById("hud-phase");
88    if (phaseEl) phaseEl.textContent = "PHASE: LANDED";
89    const hintEl = document.getElementById("hint-bar");
90    if (hintEl) hintEl.textContent = "Welcome to Vibe Jam City.";
91    const armed = document.getElementById("hud-armed");
92    if (armed) {
93      armed.textContent = "DOORS TO MANUAL";
94      armed.style.color = "#00FF7F";
95    }
96  }
97}

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.