Skip to content

feat(editor): add bidirectional WorldEditor (.map/.inf/.dat) importer, exporter, and diff validator (resolves #23) - #45

Open
AngelVD97 wants to merge 1 commit into
Bitcoindefi:mainfrom
AngelVD97:feat/worldeditor-map-converter
Open

feat(editor): add bidirectional WorldEditor (.map/.inf/.dat) importer, exporter, and diff validator (resolves #23)#45
AngelVD97 wants to merge 1 commit into
Bitcoindefi:mainfrom
AngelVD97:feat/worldeditor-map-converter

Conversation

@AngelVD97

Copy link
Copy Markdown

Resumen

Resuelve #23 (Bounty $100 USD vía GrantFox).

Esta PR implementa el módulo de importación, exportación y validación/diff bidireccional entre mapas del editor oficial de escritorio de Argentum Online (VB6 WorldEditor: formatos .map, .inf y .dat) y las estructuras MapData del cliente web de OpenAO.


Acceptance Criteria Checklist

  • Importación completa: Lee binarios .map (versión, flags de bloqueo, capas gráficas 1..4 y triggers), .inf (salidas/teleports [X-Y], NPCs [NPCN] y objetos [OBJN]), y .dat (nombre, música, zona segura/PK y flags).
  • Reporte explícito de diagnóstico: Genera métricas de tiles procesados, capas extraídas y advertencias para triggers o formatos no estándar sin fallar en silencio (diagnostics.warnings y diagnostics.unsupportedTriggers).
  • Exportación inversa: Serializa cualquier MapData de OpenAO de vuelta a binarios .map compatibles con WorldEditor de escritorio y archivos .inf/.dat correspondientes.
  • Validador de Diff: Compara mapas tile por tile (validateAndDiffMaps) para certificar fidelidad del 100% en conversiones de ida y vuelta.
  • Test suite automatizado: Suite completa en frontend/scripts/test_map_converter.mjs verificando exportación, re-importación, reporte de diagnósticos y diff con 0 desajustes.
  • Documentación de licencia AGPL-3.0: Incluida en frontend/docs/WORLDEDITOR_LICENSE.md, detallando compatibilidad legal cleanroom y especificaciones técnicas de los formatos binarios.

Resultados de los Tests

node frontend/scripts/test_map_converter.mjs
==================================================
 OpenAO WorldEditor Map Converter Test Suite 
==================================================
[*] Building sample map data with 4 layers, NPCs, and tile exits...
[*] Exporting to classic .map, .inf, and .dat formats...
[PASS] Export produced binary (.map: 30010 bytes), .inf, and .dat.
[*] Re-importing generated files back to MapData...
[PASS] Import parsed all 10,000 tiles, perimeter blocks, exits, and metadata correctly.
[*] Performing tile-by-tile diff validation...
[PASS] Diff validator confirmed 100% roundtrip fidelity (0 mismatched tiles).
[*] Testing diagnostic reporting for custom triggers...
[PASS] Diagnostics correctly reported non-standard triggers without crashing.

--------------------------------------------------
  ALL MAP CONVERTER TESTS PASSED (100% GREEN) 
--------------------------------------------------

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant