Commit Graph
19 Commits
Author SHA1 Message Date
Kevin L'Hereec 11cba0467b feat: écran de fin de partie + tests unitaires client et E2E Playwright
- Fix: UIScene n'était jamais lancée (active: false, jamais scene.launch)
  donc l'event 'game-over' du serveur n'était jamais affiché — la partie
  semblait ne pas avoir de fin. Remplacé par un panneau Vue dans GameView
  (vainqueur, classement trié, bouton Quitter via vue-router). UIScene.js
  supprimée (code mort).
- Extraction de client/src/utils/hudUtils.js (constantes ATTRS/couleurs et
  gaugePercent) depuis GameView.vue pour les rendre testables isolément.
- Tests unitaires client (Vitest) : store Pinia (game.js) et hudUtils
  (24 tests, client/test/unit/).
- Tests d'intégration E2E (Playwright, e2e/) avec de vrais clients
  Socket.io et rendu Phaser réel dans Chromium :
  * game-flow.spec.js : lobby → démarrage → main de 4 cartes → résolution
  * item-shop.spec.js : boutique, bouton désactivé si jauge insuffisante,
    achat retire l'objet pour tous + effet appliqué + affiché sur la table
  * game-over.spec.js : partie complète (12 tours) → panneau de fin
  webServer démarre automatiquement client+serveur ; ajout d'une route
  GET /health côté Express pour permettre à Playwright de détecter un
  serveur déjà démarré.
- README : documentation des 3 niveaux de tests (unitaires serveur,
  unitaires client, intégration E2E) et de la nouvelle arborescence.
2026-08-21 15:27:44 +02:00
Kevin L'Hereec 6a1c800253 feat: système d'objets achetables (boutique + effets permanents) et refonte visuelle
- Nouveaux personnages illustrés (12 PNG remplacés dans client/public/cards)
- 4 objets achetables (Trébuchet, Charrue, Trousse du Médecin, Sceau Royal)
  avec effets permanents (double_gain, guaranteed_gain, copy_best_in_game),
  stock unique par partie, priorité d'achat tournante entre joueurs
- Boutique en colonne à gauche du plateau : icônes compactes, carte détaillée
  agrandie au survol (taille découplée du displayScale du jeton), bouton
  ACHETER actif/grisé selon la jauge du joueur, retrait immédiat de la
  colonne une fois l'objet acheté (les autres remontent pour combler)
- Objets achetés affichés "posés sur la table" : à côté de la main pour soi,
  sous le slot de jeu pour les adversaires
- Icône du premier joueur (priorité d'achat) dans le HUD Vue
- Refonte des cartes personnage (CardObject) : portrait plein cadre épuré,
  valeurs d'attribut discrètes aux 4 coins
- Fix removePlayer : nettoyage de pendingBuys/pendingPlays et recalage de
  firstPlayerIndex à la déconnexion d'un joueur
- 77 tests unitaires serveur (node:test) : cards, items, Room, RoomManager
- README mis à jour avec les règles complètes du jeu
- .gitignore : exclusion de .idea/ et .serena/ (artefacts d'outils locaux)
2026-08-21 14:53:58 +02:00
kevin.lhereec da06ecaf2d fix: clip card images via Canvas 2D in BootScene, no Phaser mask needed 2026-08-17 14:30:03 +02:00
kevin.lhereec 4d09102464 fix: use BitmapMask inside container so image follows card during animations 2026-08-17 14:25:32 +02:00
kevin.lhereec 0a8c89610b fix: card image clipping via RenderTexture, remove white hover bg 2026-08-17 14:24:42 +02:00
kevin.lhereec c7672b1793 fix: ghost players on back - leaveRoom, store.reset, dynamic lobby slots 2026-08-17 14:18:27 +02:00
kevin.lhereec 6e384d5985 fix: card image cover ratio, title at bottom, badges above image 2026-08-17 14:15:43 +02:00
kevin.lhereec 60b545c42d feat: card portrait images loaded from public/cards/ 2026-08-17 14:11:20 +02:00
kevin.lhereec b46cb707cd feat: draw one card after each turn with slide-in animation 2026-08-17 12:07:47 +02:00
kevin.lhereec ec5a7ec2c3 fix: button depth 100 to stay above cards, fix inactive text color 2026-08-17 12:04:01 +02:00
kevin.lhereec 2b37d8167f fix: play slots count matches actual player count 2026-08-17 12:01:30 +02:00
kevin.lhereec abab58f6a4 fix: add BOTTOM_MARGIN to avoid Windows taskbar overlap 2026-08-17 12:00:43 +02:00
kevin.lhereec 3125823f42 feat: confirm button with pulse animation + ready counter (X/N players) 2026-08-17 11:57:55 +02:00
kevin.lhereec 91a1a9f4f0 feat: gauge scoring system (subtract left neighbor per attribute) 2026-08-17 11:54:23 +02:00
kevin.lhereec 25ab76c4ac fix: per-player phase state so 2nd player can still play after 1st played 2026-08-17 11:50:27 +02:00
kevin.lhereec 78adeb7920 fix: replace npm ci with npm install (no lockfile yet) 2026-08-17 11:45:33 +02:00
kevin.lhereec 8da1d1edc9 feat: dockerize client (nginx) and server (node) with docker-compose 2026-08-17 11:44:07 +02:00
kevin.lhereec 38814668e7 feat: 12 character cards with 4 color-coded attributes (food/war/health/diplo) 2026-08-17 11:41:46 +02:00
kevin.lhereec 1db221e468 feat: initial Regnum project structure (Vue3 + Phaser3 + Socket.io) 2026-08-17 11:34:55 +02:00