From c3a79b028b4ec8a8bca97f06e65fae72ed7f11a7 Mon Sep 17 00:00:00 2001 From: Giancarmine Salucci Date: Tue, 31 Mar 2026 23:01:15 +0200 Subject: [PATCH] =?UTF-8?q?feat(SCOPONE-0005):=20iteration=204=20=E2=80=94?= =?UTF-8?q?=20sort=20hand=20cards=20by=20suit=20then=20value?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/scenes/GameScene.ts | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/scenes/GameScene.ts b/src/scenes/GameScene.ts index 38a1017..e400033 100644 --- a/src/scenes/GameScene.ts +++ b/src/scenes/GameScene.ts @@ -6,6 +6,14 @@ import { import { chooseMove } from '../game/ai'; import { CardTracker } from '../game/card-tracker'; +// --------------------------------------------------------------------------- +// Suit ordering for hand grouping +// --------------------------------------------------------------------------- +const SUIT_ORDER: Record = { denara: 0, coppe: 1, bastoni: 2, spade: 3 }; +function sortHand(hand: Card[]): void { + hand.sort((a, b) => (SUIT_ORDER[a.suit] - SUIT_ORDER[b.suit]) || (a.value - b.value)); +} + // --------------------------------------------------------------------------- // Layout constants // --------------------------------------------------------------------------- @@ -489,6 +497,7 @@ export class GameScene extends Phaser.Scene { const allCards: Array<{ card: Card; p: number; destX: number; destY: number; face: boolean }> = []; for (let p = 0; p < 4; p++) { + sortHand(this.state.players[p as PlayerIndex].hand); const positions = this.getHandPositions(p as PlayerIndex, this.state.players[p as PlayerIndex].hand.length); this.state.players[p as PlayerIndex].hand.forEach((card, i) => @@ -911,6 +920,7 @@ export class GameScene extends Phaser.Scene { private relayoutHand(playerIdx: PlayerIndex): void { const hand = this.state.players[playerIdx].hand; + sortHand(hand); const positions = this.getHandPositions(playerIdx, hand.length); hand.forEach((card, i) => { const img = this.cardImages.get(card.id);