0.1.8: debug vue
This commit is contained in:
+3
-6
@@ -447,14 +447,11 @@ function inSight(e) {
|
|||||||
return inSightAt(e.x, e.y);
|
return inSightAt(e.x, e.y);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Met à jour le brouillard : retire les cases hors de la Vue actuelle
|
/* Révèle les cases à portée de la Vue actuelle (ajout uniquement).
|
||||||
* (ex. quand un bonus de potion expire) puis révèle la zone portée. */
|
* 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() {
|
function refreshFov() {
|
||||||
const r = currentVue();
|
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;
|
const { x, y } = G.troll;
|
||||||
for (let dy = -r; dy <= r; dy++) {
|
for (let dy = -r; dy <= r; dy++) {
|
||||||
for (let dx = -r; dx <= r; dx++) {
|
for (let dx = -r; dx <= r; dx++) {
|
||||||
|
|||||||
+5
-2
@@ -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, 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é");
|
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");
|
g.newGame("Test", "Skrim");
|
||||||
const t = g.state.troll;
|
const t = g.state.troll;
|
||||||
t.x = 5; t.y = 5;
|
t.x = 5; t.y = 5;
|
||||||
|
const farKey = 5 * g.MAP_W + 10;
|
||||||
t.potionEffects = [{ name: "Test", emoji: "🔭", turnsLeft: 1, vue: 5 }];
|
t.potionEffects = [{ name: "Test", emoji: "🔭", turnsLeft: 1, vue: 5 }];
|
||||||
g.refreshFov();
|
g.refreshFov();
|
||||||
assert(g.inSightAt(10, 5), "vue 8 (3+5) doit voir à 5 cases");
|
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 = [];
|
t.potionEffects = [];
|
||||||
g.refreshFov();
|
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");
|
assert(g.inSightAt(8, 5), "vue 3 voit encore à 3 cases");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user