1+ import { getLanguageCodes } from './language.mjs' ;
2+ import { InterwikiDataImpl , MetadataImpl } from './metadata.mjs' ;
13import {
24 addPoints ,
35 getBoolProperty ,
@@ -156,14 +158,35 @@ function convertLayer(layer, datamap, convertedLayers, language) {
156158 convertedLayers . add ( layer . id ) ;
157159}
158160
161+ /**
162+ * Retrieves map metadata to store in DataMaps for two-way conversion.
163+ * @param {TileMap } map Tiled map being converted to DataMaps
164+ * @param {string } mapName Filename of the Tiled map
165+ * @returns {MetadataImpl } Map metadata to store in DataMaps
166+ */
167+ function getDataMapsMetadata ( map , mapName ) {
168+ const metadata = new MetadataImpl ( ) ;
169+ for ( const language of getLanguageCodes ( ) ) {
170+ const localizedMapName = getStringProperty ( map , 'name' , language ) ;
171+ if ( ! localizedMapName && language !== 'en' ) {
172+ continue ;
173+ }
174+ metadata . interwiki [ language ] = new InterwikiDataImpl ( {
175+ mapName : localizedMapName || mapName
176+ } ) ;
177+ }
178+ metadata . fileName = mapName ;
179+ return metadata ;
180+ }
181+
159182/**
160183 * Converts a Tiled map to DataMaps format.
161184 * @param {TileMap } map Tiled map to convert to DataMaps
162185 * @param {string } mapName Filename of the Tiled map
163186 * @param {string } language Language to use for localized properties
164187 * @returns {DataMap } Converted DataMap object
165188 */
166- export function convertMap ( map , mapName , language = 'en' ) {
189+ export function convertTiledToDataMaps ( map , mapName , language = 'en' ) {
167190 const /** @type {DataMap } */ datamap = {
168191 $schema : '/extensions/DataMaps/schemas/v17.3.json' ,
169192 backgrounds : [ {
@@ -179,9 +202,7 @@ export function convertMap(map, mapName, language = 'en') {
179202 map . height * map . tileHeight
180203 ]
181204 } ,
182- custom : {
183- mapName : getStringProperty ( map , 'name' , language ) || mapName
184- } ,
205+ custom : getDataMapsMetadata ( map , mapName ) ,
185206 disclaimer : getStringProperty ( map , 'disclaimer' , language ) ,
186207 include : getListProperty ( map , 'include' , language ) ,
187208 markers : { } ,
@@ -208,14 +229,14 @@ export function convertMap(map, mapName, language = 'en') {
208229 */
209230function write ( map , filePath ) {
210231 const mapName = FileInfo . completeBaseName ( FileInfo . fileName ( filePath ) ) ;
211- const convertedMap = convertMap ( map , mapName ) ;
232+ const convertedMap = convertTiledToDataMaps ( map , mapName ) ;
212233 const file = new TextFile ( filePath , TextFile . WriteOnly ) ;
213234 file . write ( `${ JSON . stringify ( convertedMap , null , 4 ) } \n` ) ;
214235 file . commit ( ) ;
215236}
216237
217238export default /** @type {ScriptedMapFormat } */ {
218- extension : 'json ' ,
239+ extension : 'mw-datamaps ' ,
219240 name : 'DataMaps' ,
220241 write
221242} ;
0 commit comments