0.1.8: debug vue

This commit is contained in:
Cedric
2026-06-11 17:39:07 +02:00
parent b8015c8a38
commit eed0336ec1
2 changed files with 8 additions and 8 deletions
+3 -6
View File
@@ -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++) {
+5 -2
View File
@@ -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");
}