import type { World, EntityId } from "../../core/types";
import { GAME_CONFIG } from "../../core/config/GameConfig";

export function inBounds(w: World, x: number, y: number): boolean {
  return x >= 0 && y >= 0 && x < w.width && y < w.height;
}

export function idx(w: World, x: number, y: number): number {
  return y * w.width + x;
}

export function isWall(w: World, x: number, y: number): boolean {
  const tile = w.tiles[idx(w, x, y)];
  return tile === GAME_CONFIG.terrain.wall || tile === GAME_CONFIG.terrain.wallDeco;
}

export function isBlocked(w: World, x: number, y: number): boolean {
  if (!inBounds(w, x, y)) return true;
  if (isWall(w, x, y)) return true;

  for (const a of w.actors.values()) {
    if (a.pos.x === x && a.pos.y === y && a.type !== "exp_orb") return true;
  }
  return false;
}


export function isPlayerOnExit(w: World, playerId: EntityId): boolean {
  const p = w.actors.get(playerId);
  if (!p) return false;
  return p.pos.x === w.exit.x && p.pos.y === w.exit.y;
}
