Skip to content

Etapa 2: API de colocacion y movimiento de NPCs en mapa #8

Description

@leocagli

Parte de #2 (modo construcción). Depende de la capa de persistencia.

Problema

api/src/lib/mapNpcStorage.ts lee la colocación de NPCs de cada mapa y valida el modelo, pero no ofrece ninguna forma de modificarla. Poner un NPC nuevo hoy requiere editar npcs.json a mano y reiniciar.

Modelo de datos actual

type MapNpcPlacement = {
    mapNum: number;
    x: number;
    y: number;
    npcIndex: number;
    movement?: number;
}

Validación existente: enteros, x > 0, y > 0, npcIndex > 0.

Alcance

  1. Poner un NPC en (mapa, x, y) con su npcIndex y patrón de movimiento.
  2. Mover un NPC ya colocado a otra coordenada.
  3. Sacar un NPC de un mapa.
  4. Listar los NPCs de un mapa.

Validaciones necesarias

  • El npcIndex existe en el catálogo de NPCs (hay 340 plantillas cargadas en DB)
  • La coordenada está dentro de la grilla y no es un tile bloqueado: un NPC dentro de una pared no puede moverse ni ser atacado
  • No apilar dos NPCs en el mismo tile, salvo que el juego lo permita explícitamente
  • Límite de NPCs por mapa, para no poder tirar abajo el server llenando un mapa de criaturas

Criterios de aceptación

  • Poner, mover y sacar NPCs funciona y persiste
  • Un npcIndex inexistente devuelve error de validación
  • Colocar sobre un tile bloqueado se rechaza
  • Se respeta el límite por mapa
  • Los NPCs colocados aparecen en el juego tras recargar el mapa
  • Tests de integración

Archivos relevantes

  • api/src/lib/mapNpcStorage.ts (lectura y validación existentes)
  • api/src/mapas_source/mapa_<n>/npcs.json
  • api/src/repositories/gameNpcs.ts (catálogo de plantillas de NPC)

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

GrantFox OSSIssue tracked in GrantFox OSSMaybe RewardedIssue may be eligible for a GrantFox rewardThird CampaignCampaign: Third CampaignbountyIssue con recompensa asignadaenhancementNew feature or requestetapa-2-mundoEtapa 2 - NPCs, objetos, edificios y salidasgrantfoxPublicada en la campana de GrantFoxmodo-construccionModo construccion in-game: editor de mapas en el navegadorreward-50-usdRecompensa 50 USD - complejidad media

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions