From eed0336ec12c1c58f27c6e6bd72ff2297171a7ab Mon Sep 17 00:00:00 2001 From: Cedric Date: Thu, 11 Jun 2026 17:39:07 +0200 Subject: [PATCH] 0.1.8: debug vue --- js/game.js | 9 +++------ test/smoke.js | 7 +++++-- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/js/game.js b/js/game.js index f0eaa6c..70cb4ef 100644 --- a/js/game.js +++ b/js/game.js @@ -447,14 +447,11 @@ function inSight(e) { return inSightAt(e.x, e.y); } -/* Met à jour le brouillard : retire les cases hors de la Vue actuelle - * (ex. quand un bonus de potion expire) puis révèle la zone portée. */ +/* Révèle les cases à portée de la Vue actuelle (ajout uniquement). + * La mémoire (zones déjà explorées, affichées plus sombres) est conservée + * même si la Vue diminue — seuls monstres et trésors hors portée sont masqués. */ function refreshFov() { const r = currentVue(); - for (const key of [...G.seen]) { - const tx = key % MAP_W, ty = Math.floor(key / MAP_W); - if (tileDist(tx, ty) > r) G.seen.delete(key); - } const { x, y } = G.troll; for (let dy = -r; dy <= r; dy++) { for (let dx = -r; dx <= r; dx++) { diff --git a/test/smoke.js b/test/smoke.js index 3acb108..dcaee24 100644 --- a/test/smoke.js +++ b/test/smoke.js @@ -207,17 +207,20 @@ assert(srv.validateLevel({ ...goodLevel, grid: goodGrid.slice(1) }), "grille tro assert(srv.validateLevel({ ...goodLevel, monsters: [{ x: 0, y: 0, type: 0, tpl: 0 }] }), "monstre dans un mur refusé"); assert(srv.validateLevel({ ...goodLevel, items: [{ x: 3, y: 3, kind: "nawak" }] }), "objet inconnu refusé"); -// Vue : le brouillard est rogné quand la portée diminue (fin de potion) +// Vue : mémoire du brouillard conservée, entités seulement à portée actuelle { g.newGame("Test", "Skrim"); const t = g.state.troll; t.x = 5; t.y = 5; + const farKey = 5 * g.MAP_W + 10; t.potionEffects = [{ name: "Test", emoji: "🔭", turnsLeft: 1, vue: 5 }]; g.refreshFov(); assert(g.inSightAt(10, 5), "vue 8 (3+5) doit voir à 5 cases"); + assert(g.state.seen.has(farKey), "case lointaine mémorisée"); t.potionEffects = []; g.refreshFov(); - assert(!g.inSightAt(10, 5), "vue 3 seule ne doit plus voir à 5 cases"); + assert(!g.inSightAt(10, 5), "vue 3 ne voit plus à 5 cases"); + assert(g.state.seen.has(farKey), "mémoire conservée (affichage sombre)"); assert(g.inSightAt(8, 5), "vue 3 voit encore à 3 cases"); }