diff --git a/public/assets/images/game-icons.png b/public/assets/images/game-icons.png index 2e48c98..9116fde 100644 Binary files a/public/assets/images/game-icons.png and b/public/assets/images/game-icons.png differ diff --git a/public/assets/images/game-icons.psd b/public/assets/images/game-icons.psd index 0654719..e6e89e8 100644 Binary files a/public/assets/images/game-icons.psd and b/public/assets/images/game-icons.psd differ diff --git a/public/src/games/yatzi/YatziGame.js b/public/src/games/yatzi/YatziGame.js index 7e2feba..9942fa2 100644 --- a/public/src/games/yatzi/YatziGame.js +++ b/public/src/games/yatzi/YatziGame.js @@ -135,7 +135,7 @@ export default class YatziGame extends Phaser.Scene { // ─── Left panel (title + status) ────────────────────────────────────── buildLeftPanel() { - this.add.text(LEFT_CX, 56, 'Yatzi', { + this.add.text(LEFT_CX, 56, 'Zahtzee', { fontFamily: 'Righteous', fontSize: '60px', color: COLORS.textHex, }).setOrigin(0.5); @@ -220,7 +220,7 @@ export default class YatziGame extends Phaser.Scene { this.buildSummaryRow(grid, y, 'Lower subtotal', 'lowerSubtotal', colW); y += SC_SUMMARY_H; // Yahtzee bonus - this.buildSummaryRow(grid, y, 'Yahtzee bonus', 'yahtzeeBonus', colW); + this.buildSummaryRow(grid, y, 'Zahtzee bonus', 'yahtzeeBonus', colW); y += SC_SUMMARY_H; // Grand total this.drawRowDivider(grid, y); @@ -540,7 +540,7 @@ export default class YatziGame extends Phaser.Scene { showBonusToast() { if (this.toastText) this.toastText.destroy(); - this.toastText = this.add.text(LEFT_CX, 380, '+100 Yahtzee Bonus!', { + this.toastText = this.add.text(LEFT_CX, 380, '+100 Zahtzee Bonus!', { fontFamily: 'Righteous', fontSize: '32px', color: COLORS.goldHex, }).setOrigin(0.5).setDepth(DEPTH.toast); this.tweens.add({ diff --git a/public/src/games/yatzi/YatziLogic.js b/public/src/games/yatzi/YatziLogic.js index 0a78047..0843294 100644 --- a/public/src/games/yatzi/YatziLogic.js +++ b/public/src/games/yatzi/YatziLogic.js @@ -33,7 +33,7 @@ export const CATEGORY_LABELS = { fullHouse: 'Full House', smallStraight: 'Sm. Straight', largeStraight: 'Lg. Straight', - yahtzee: 'Yahtzee', + yahtzee: 'Zahtzee', chance: 'Chance', }; diff --git a/public/src/scenes/GameMenuScene.js b/public/src/scenes/GameMenuScene.js index 88d9813..83c0628 100644 --- a/public/src/scenes/GameMenuScene.js +++ b/public/src/scenes/GameMenuScene.js @@ -6,6 +6,8 @@ import { addFullscreenButton } from '../ui/FullscreenButton.js'; import { playMenuMusic, stopMenuMusic } from '../ui/MenuMusic.js'; import { TutorialModal } from '../ui/TutorialModal.js'; +let _lastCategory = null; + const CATEGORIES = [ { key: 'tabletop', label: 'Tabletop' }, { key: 'cards', label: 'Cards & Dice' }, @@ -80,12 +82,14 @@ export default class GameMenuScene extends Phaser.Scene { this._tabIcons[key] = icon; }); - this.showCategory(activeCats[0].key); + const startKey = activeCats.find(c => c.key === _lastCategory) ? _lastCategory : activeCats[0].key; + this.showCategory(startKey); new Button(this, cx, GAME_HEIGHT - 100, 'Back', () => this.scene.start('Landing'), { variant: 'ghost' }); } showCategory(key) { + _lastCategory = key; for (const [k, btn] of Object.entries(this._tabs)) { btn.setActive(k === key); } diff --git a/server/games/registry.js b/server/games/registry.js index 1d69b46..d6d7387 100644 --- a/server/games/registry.js +++ b/server/games/registry.js @@ -29,7 +29,7 @@ registerGame({ slug: 'backgammon', name: 'Backgammon', category: 'ta registerGame({ slug: 'parchisi', name: 'Parchisi', category: 'tabletop', minPlayers: 1, maxPlayers: 4, minOpponents: 3, maxOpponents: 3, iconFrame: 1 }); registerGame({ slug: 'blackjack', name: 'Blackjack', category: 'casino', cardGame: true, minPlayers: 1, maxPlayers: 7, minOpponents: 0, maxOpponents: 6, iconFrame: 2 }); registerGame({ slug: 'holdem', name: "Texas Hold 'Em", category: 'casino', cardGame: true, minPlayers: 2, maxPlayers: 8, minOpponents: 3, maxOpponents: 7, iconFrame: 3 }); -registerGame({ slug: 'yatzi', name: 'Yatzi', category: 'tabletop', minPlayers: 1, maxPlayers: 4, minOpponents: 1, maxOpponents: 3, iconFrame: 4 }); +registerGame({ slug: 'yatzi', name: 'Zahtzee', category: 'cards', minPlayers: 1, maxPlayers: 4, minOpponents: 1, maxOpponents: 3, iconFrame: 4 }); registerGame({ slug: 'skipbo', name: 'Skip-Bo', category: 'cards', cardGame: true, minPlayers: 1, maxPlayers: 4, minOpponents: 1, maxOpponents: 3, iconFrame: 5 }); registerGame({ slug: 'phase10', name: 'Phase 10', category: 'cards', cardGame: true, minPlayers: 1, maxPlayers: 4, minOpponents: 1, maxOpponents: 3, iconFrame: 6 }); registerGame({ slug: 'chinesecheckers', name: 'Chinese Checkers', category: 'tabletop', minPlayers: 6, maxPlayers: 6, minOpponents: 5, maxOpponents: 5, iconFrame: 7 });