Freeze world input while skill tree console is open

- Add `skillWindow` to the full-screen click guard so clicks don't
  steer the ship or fold panels while the skill tree is open.
- Include the skill window in the shared `_frozen` condition so the
  world parks (throttle/velocity cleared) behind it, matching the
  class console and level-up marquee contract.
This commit is contained in:
Brian Fertig 2026-09-27 10:47:24 -06:00
parent ea8b58e9c4
commit c423bfa8ab
3 changed files with 7 additions and 1 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.7 MiB

After

Width:  |  Height:  |  Size: 6.0 MiB

Binary file not shown.

View File

@ -1988,6 +1988,8 @@ export class GameScene extends Phaser.Scene {
if (this.questWindow && this.questWindow.isOpen) return;
// The ship console (depth 80) — the same full-screen contract.
if (this.shipWindow && this.shipWindow.isOpen) return;
// The skill tree console (depth 80) — the same full-screen contract.
if (this.skillWindow && this.skillWindow.isOpen) return;
// Sub-bar OPEN: a click INSIDE it is its own (the panel or one of
// its buttons — the buttons fire on their own pointerdown). ANY
// click OUTSIDE — world, deck, HUD, compass — folds it back down
@ -2765,11 +2767,15 @@ export class GameScene extends Phaser.Scene {
// The CLASS CONSOLE's freeze (js/ui/ClassWindow.js): picking a class is a
// decision, not an overlay on top of the fight — the world holds exactly
// the way it does for a comm's ACK and the level-up marquee.
// The SKILL TREE console's freeze (js/ui/SkillWindow.js): ranking skills
// and binding seats is a decision the same way — the world holds behind
// it (the cabinet idiom), and its clicks never steer the ship.
const _frozen =
_commsPaused ||
this.levelMarquee?.active === true ||
!!this._jumping ||
this.classWindow?.isOpen === true;
this.classWindow?.isOpen === true ||
this.skillWindow?.isOpen === true;
// The freeze's PARKING (the ack pause's onPause is the same contract
// for its own freeze): while ANY freeze holds, the action is parked
// dead EVERY frame — the ship (target + throttle cleared, velocity