@codexo/exojs-tiled 0.15.3 → 0.16.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +59 -66
- package/dist/esm/TiledLayer.d.ts +2 -1
- package/dist/esm/TiledLayer.d.ts.map +1 -0
- package/dist/esm/TiledLayer.js +106 -108
- package/dist/esm/TiledLayer.js.map +1 -1
- package/dist/esm/TiledMap.d.ts +35 -7
- package/dist/esm/TiledMap.d.ts.map +1 -0
- package/dist/esm/TiledMap.js +714 -589
- package/dist/esm/TiledMap.js.map +1 -1
- package/dist/esm/TiledObject.d.ts +7 -0
- package/dist/esm/TiledObject.d.ts.map +1 -0
- package/dist/esm/TiledObject.js +59 -51
- package/dist/esm/TiledObject.js.map +1 -1
- package/dist/esm/TiledTileset.d.ts +11 -4
- package/dist/esm/TiledTileset.d.ts.map +1 -0
- package/dist/esm/TiledTileset.js +81 -70
- package/dist/esm/TiledTileset.js.map +1 -1
- package/dist/esm/data.d.ts +25 -7
- package/dist/esm/data.d.ts.map +1 -0
- package/dist/esm/decodeLayerData.d.ts +2 -1
- package/dist/esm/decodeLayerData.d.ts.map +1 -0
- package/dist/esm/decodeLayerData.js +53 -92
- package/dist/esm/decodeLayerData.js.map +1 -1
- package/dist/esm/gid.d.ts +2 -1
- package/dist/esm/gid.d.ts.map +1 -0
- package/dist/esm/gid.js +15 -24
- package/dist/esm/gid.js.map +1 -1
- package/dist/esm/index.d.ts +1 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +14 -12
- package/dist/esm/loadTiledMap.d.ts +11 -5
- package/dist/esm/loadTiledMap.d.ts.map +1 -0
- package/dist/esm/loadTiledMap.js +82 -91
- package/dist/esm/loadTiledMap.js.map +1 -1
- package/dist/esm/objectAlignment.d.ts +28 -0
- package/dist/esm/objectAlignment.d.ts.map +1 -0
- package/dist/esm/objectAlignment.js +79 -0
- package/dist/esm/objectAlignment.js.map +1 -0
- package/dist/esm/public.d.ts +17 -15
- package/dist/esm/public.d.ts.map +1 -0
- package/dist/esm/public.js +14 -0
- package/dist/esm/tileMapType.d.ts +31 -0
- package/dist/esm/tileMapType.d.ts.map +1 -0
- package/dist/esm/tileMapType.js +42 -0
- package/dist/esm/tileMapType.js.map +1 -0
- package/dist/esm/tiledBuildInfo.d.ts +1 -0
- package/dist/esm/tiledBuildInfo.d.ts.map +1 -0
- package/dist/esm/tiledBuildInfo.js +6 -4
- package/dist/esm/tiledBuildInfo.js.map +1 -1
- package/dist/esm/tiledExtension.d.ts +7 -6
- package/dist/esm/tiledExtension.d.ts.map +1 -0
- package/dist/esm/tiledExtension.js +23 -25
- package/dist/esm/tiledExtension.js.map +1 -1
- package/dist/esm/tiledOptions.d.ts +5 -4
- package/dist/esm/tiledOptions.d.ts.map +1 -0
- package/dist/esm/tiledOptions.js +11 -13
- package/dist/esm/tiledOptions.js.map +1 -1
- package/dist/esm/tiledSourceType.d.ts +24 -0
- package/dist/esm/tiledSourceType.d.ts.map +1 -0
- package/dist/esm/tiledSourceType.js +44 -0
- package/dist/esm/tiledSourceType.js.map +1 -0
- package/dist/esm/url.d.ts +2 -1
- package/dist/esm/url.d.ts.map +1 -0
- package/dist/esm/url.js +26 -37
- package/dist/esm/url.js.map +1 -1
- package/dist/esm/validate.d.ts +11 -10
- package/dist/esm/validate.d.ts.map +1 -0
- package/dist/esm/validate.js +485 -534
- package/dist/esm/validate.js.map +1 -1
- package/dist/esm/wangSets.d.ts +5 -4
- package/dist/esm/wangSets.d.ts.map +1 -0
- package/dist/esm/wangSets.js +90 -115
- package/dist/esm/wangSets.js.map +1 -1
- package/package.json +10 -18
- package/dist/esm/index.js.map +0 -1
- package/dist/esm/register.d.ts +0 -1
- package/dist/esm/register.js +0 -22
- package/dist/esm/register.js.map +0 -1
- package/dist/esm/tiledMapBinding.d.ts +0 -19
- package/dist/esm/tiledMapBinding.js +0 -31
- package/dist/esm/tiledMapBinding.js.map +0 -1
- package/dist/esm/tiledRuntimeMapBinding.d.ts +0 -29
- package/dist/esm/tiledRuntimeMapBinding.js +0 -42
- package/dist/esm/tiledRuntimeMapBinding.js.map +0 -1
package/dist/esm/validate.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate.js","sources":["../../../src/validate.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"validate.js","names":[],"sources":["../../src/validate.ts"],"sourcesContent":["// Runtime validation for Tiled JSON (TMJ/TSJ) data. Every exported function\n// takes `unknown` (the result of `JSON.parse`) and either returns a typed,\n// validated `Tiled*Data` value or throws a {@link TiledFormatError}.\n//\n// There is no fall-through: an unrecognised shape, an unsupported encoding,\n// or an out-of-range value is always a thrown error carrying the source URL\n// and a JSON-path-like field path, never a silently-substituted default.\n\nimport type {\n TiledAnimationFrameData,\n TiledChunkData,\n TiledClassPropertyValueData,\n TiledGroupLayerData,\n TiledImageLayerData,\n TiledLayerData,\n TiledLayerDataBase,\n TiledMapData,\n TiledObjectAlignment,\n TiledObjectData,\n TiledObjectLayerData,\n TiledOrientation,\n TiledPointData,\n TiledPropertyData,\n TiledPropertyType,\n TiledRenderOrder,\n TiledTextData,\n TiledTileData,\n TiledTileLayerData,\n TiledTilesetData,\n TiledTilesetRefData,\n TiledWangColorData,\n TiledWangSetData,\n TiledWangTileData,\n} from './data';\nimport { TILED_OBJECT_ALIGNMENTS } from './objectAlignment';\n\n/**\n * Thrown when a Tiled JSON document does not match the expected shape.\n * `source` is the URL of the file being parsed; `path` is a JSON-path-like\n * pointer (e.g. `layers[2].objects[0].properties[1].value`) to the offending\n * value, or `''` for the document root.\n */\nexport class TiledFormatError extends Error {\n public readonly source: string;\n public readonly path: string;\n\n public constructor(source: string, path: string, message: string) {\n super(`Invalid Tiled data in \"${source}\" at ${path === '' ? '<root>' : path}: ${message}`);\n this.name = 'TiledFormatError';\n this.source = source;\n this.path = path;\n }\n}\n\n// ── Primitive helpers ───────────────────────────────────────────────────────\n\nconst describeValue = (value: unknown): string => {\n if (value === null) return 'null';\n if (Array.isArray(value)) return 'an array';\n return typeof value;\n};\n\nconst joinPath = (path: string, key: string | number): string => {\n if (typeof key === 'number') return `${path}[${key}]`;\n return path === '' ? key : `${path}.${key}`;\n};\n\nconst expectObject = (value: unknown, source: string, path: string): Record<string, unknown> => {\n if (typeof value !== 'object' || value === null || Array.isArray(value)) {\n throw new TiledFormatError(source, path, `expected an object, got ${describeValue(value)}`);\n }\n return value as Record<string, unknown>;\n};\n\nconst expectArray = (value: unknown, source: string, path: string): readonly unknown[] => {\n if (!Array.isArray(value)) {\n throw new TiledFormatError(source, path, `expected an array, got ${describeValue(value)}`);\n }\n return value;\n};\n\nconst expectString = (value: unknown, source: string, path: string): string => {\n if (typeof value !== 'string') {\n throw new TiledFormatError(source, path, `expected a string, got ${describeValue(value)}`);\n }\n return value;\n};\n\nconst expectNumber = (value: unknown, source: string, path: string): number => {\n if (typeof value !== 'number' || !Number.isFinite(value)) {\n throw new TiledFormatError(source, path, `expected a finite number, got ${describeValue(value)}`);\n }\n return value;\n};\n\nconst expectInteger = (value: unknown, source: string, path: string): number => {\n const n = expectNumber(value, source, path);\n if (!Number.isInteger(n)) {\n throw new TiledFormatError(source, path, `expected an integer, got ${n}`);\n }\n return n;\n};\n\nconst expectNonNegativeInteger = (value: unknown, source: string, path: string): number => {\n const n = expectInteger(value, source, path);\n if (n < 0) {\n throw new TiledFormatError(source, path, `expected a non-negative integer, got ${n}`);\n }\n return n;\n};\n\nconst expectPositiveInteger = (value: unknown, source: string, path: string): number => {\n const n = expectInteger(value, source, path);\n if (n <= 0) {\n throw new TiledFormatError(source, path, `expected a positive integer, got ${n}`);\n }\n return n;\n};\n\nconst expectBoolean = (value: unknown, source: string, path: string): boolean => {\n if (typeof value !== 'boolean') {\n throw new TiledFormatError(source, path, `expected a boolean, got ${describeValue(value)}`);\n }\n return value;\n};\n\nconst optionalString = (obj: Record<string, unknown>, key: string, source: string, path: string): string | undefined => {\n const value = obj[key];\n return value === undefined ? undefined : expectString(value, source, joinPath(path, key));\n};\n\nconst optionalNumber = (obj: Record<string, unknown>, key: string, source: string, path: string): number | undefined => {\n const value = obj[key];\n return value === undefined ? undefined : expectNumber(value, source, joinPath(path, key));\n};\n\nconst optionalInteger = (obj: Record<string, unknown>, key: string, source: string, path: string): number | undefined => {\n const value = obj[key];\n return value === undefined ? undefined : expectInteger(value, source, joinPath(path, key));\n};\n\nconst optionalNonNegativeInteger = (obj: Record<string, unknown>, key: string, source: string, path: string): number | undefined => {\n const value = obj[key];\n return value === undefined ? undefined : expectNonNegativeInteger(value, source, joinPath(path, key));\n};\n\nconst optionalBoolean = (obj: Record<string, unknown>, key: string, source: string, path: string): boolean | undefined => {\n const value = obj[key];\n return value === undefined ? undefined : expectBoolean(value, source, joinPath(path, key));\n};\n\nconst mapArray = <T>(value: unknown, source: string, path: string, fn: (item: unknown, itemPath: string) => T): readonly T[] => {\n const arr = expectArray(value, source, path);\n return arr.map((item, i) => fn(item, joinPath(path, i)));\n};\n\nconst optionalMapArray = <T>(value: unknown, source: string, path: string, fn: (item: unknown, itemPath: string) => T): readonly T[] | undefined =>\n value === undefined ? undefined : mapArray(value, source, path, fn);\n\n// ── Custom properties ───────────────────────────────────────────────────────\n\nconst PROPERTY_TYPES: readonly TiledPropertyType[] = ['string', 'int', 'float', 'bool', 'color', 'file', 'object', 'class'];\n\nconst validateTiledClassPropertyValue = (raw: unknown, source: string, path: string): TiledClassPropertyValueData => {\n const obj = expectObject(raw, source, path);\n const result: Record<string, string | number | boolean | TiledClassPropertyValueData> = {};\n for (const [key, value] of Object.entries(obj)) {\n const memberPath = joinPath(path, key);\n if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {\n result[key] = value;\n } else if (typeof value === 'object' && value !== null && !Array.isArray(value)) {\n result[key] = validateTiledClassPropertyValue(value, source, memberPath);\n } else {\n throw new TiledFormatError(source, memberPath, `expected a string, number, boolean, or nested object, got ${describeValue(value)}`);\n }\n }\n return result;\n};\n\n/** @internal */\nexport const validateTiledPropertyData = (raw: unknown, source: string, path: string): TiledPropertyData => {\n const obj = expectObject(raw, source, path);\n const name = expectString(obj.name, source, joinPath(path, 'name'));\n const typePath = joinPath(path, 'type');\n const typeName = obj.type === undefined ? 'string' : expectString(obj.type, source, typePath);\n\n if (!PROPERTY_TYPES.includes(typeName as TiledPropertyType)) {\n throw new TiledFormatError(source, typePath, `unknown property type \"${typeName}\"`);\n }\n\n const type = typeName as TiledPropertyType;\n const propertytype = optionalString(obj, 'propertytype', source, path);\n const valuePath = joinPath(path, 'value');\n let value: TiledPropertyData['value'];\n\n switch (type) {\n case 'string':\n case 'color':\n case 'file':\n value = expectString(obj.value, source, valuePath);\n break;\n case 'int':\n case 'float':\n case 'object':\n value = expectNumber(obj.value, source, valuePath);\n break;\n case 'bool':\n value = expectBoolean(obj.value, source, valuePath);\n break;\n case 'class':\n value = validateTiledClassPropertyValue(obj.value, source, valuePath);\n break;\n }\n\n return { name, type, propertytype, value };\n};\n\nconst validateTiledPropertiesArray = (value: unknown, source: string, path: string): readonly TiledPropertyData[] | undefined =>\n optionalMapArray(value, source, path, (item, itemPath) => validateTiledPropertyData(item, source, itemPath));\n\n// ── Points / animation frames ───────────────────────────────────────────────\n\nconst validateTiledPointData = (raw: unknown, source: string, path: string): TiledPointData => {\n const obj = expectObject(raw, source, path);\n return {\n x: expectNumber(obj.x, source, joinPath(path, 'x')),\n y: expectNumber(obj.y, source, joinPath(path, 'y')),\n };\n};\n\nconst validateTiledPointArray = (value: unknown, source: string, path: string): readonly TiledPointData[] =>\n mapArray(value, source, path, (item, itemPath) => validateTiledPointData(item, source, itemPath));\n\n/** @internal */\nexport const validateTiledAnimationFrameData = (raw: unknown, source: string, path: string): TiledAnimationFrameData => {\n const obj = expectObject(raw, source, path);\n return {\n tileid: expectNonNegativeInteger(obj.tileid, source, joinPath(path, 'tileid')),\n duration: expectNonNegativeInteger(obj.duration, source, joinPath(path, 'duration')),\n };\n};\n\n// ── Text objects ─────────────────────────────────────────────────────────────\n\nconst HALIGN_VALUES: ReadonlyArray<TiledTextData['halign']> = ['center', 'right', 'justify', 'left'];\nconst VALIGN_VALUES: ReadonlyArray<TiledTextData['valign']> = ['center', 'bottom', 'top'];\n\nconst validateTiledTextData = (raw: unknown, source: string, path: string): TiledTextData => {\n const obj = expectObject(raw, source, path);\n const text = expectString(obj.text, source, joinPath(path, 'text'));\n\n let halign: TiledTextData['halign'];\n if (obj.halign !== undefined) {\n const value = expectString(obj.halign, source, joinPath(path, 'halign'));\n if (!HALIGN_VALUES.includes(value as TiledTextData['halign'])) {\n throw new TiledFormatError(source, joinPath(path, 'halign'), `unknown horizontal alignment \"${value}\"`);\n }\n halign = value as TiledTextData['halign'];\n }\n\n let valign: TiledTextData['valign'];\n if (obj.valign !== undefined) {\n const value = expectString(obj.valign, source, joinPath(path, 'valign'));\n if (!VALIGN_VALUES.includes(value as TiledTextData['valign'])) {\n throw new TiledFormatError(source, joinPath(path, 'valign'), `unknown vertical alignment \"${value}\"`);\n }\n valign = value as TiledTextData['valign'];\n }\n\n return {\n text,\n bold: optionalBoolean(obj, 'bold', source, path),\n color: optionalString(obj, 'color', source, path),\n fontfamily: optionalString(obj, 'fontfamily', source, path),\n halign,\n italic: optionalBoolean(obj, 'italic', source, path),\n kerning: optionalBoolean(obj, 'kerning', source, path),\n pixelsize: optionalNonNegativeInteger(obj, 'pixelsize', source, path),\n strikeout: optionalBoolean(obj, 'strikeout', source, path),\n underline: optionalBoolean(obj, 'underline', source, path),\n valign,\n wrap: optionalBoolean(obj, 'wrap', source, path),\n };\n};\n\n// ── Objects ──────────────────────────────────────────────────────────────────\n\n/** @internal */\nexport const validateTiledObjectData = (raw: unknown, source: string, path: string): TiledObjectData => {\n const obj = expectObject(raw, source, path);\n\n return {\n id: expectNonNegativeInteger(obj.id, source, joinPath(path, 'id')),\n name: expectString(obj.name, source, joinPath(path, 'name')),\n // Tiled 1.9 renamed the object's `type` member to `class` and 1.10 renamed\n // it back, so a file written by either version carries only one of the two.\n // Requiring `type` would reject every 1.9-authored map outright.\n type: optionalString(obj, 'type', source, path) ?? '',\n class: optionalString(obj, 'class', source, path),\n x: expectNumber(obj.x, source, joinPath(path, 'x')),\n y: expectNumber(obj.y, source, joinPath(path, 'y')),\n width: expectNumber(obj.width, source, joinPath(path, 'width')),\n height: expectNumber(obj.height, source, joinPath(path, 'height')),\n rotation: expectNumber(obj.rotation, source, joinPath(path, 'rotation')),\n visible: expectBoolean(obj.visible, source, joinPath(path, 'visible')),\n gid: optionalNonNegativeInteger(obj, 'gid', source, path),\n point: optionalBoolean(obj, 'point', source, path),\n ellipse: optionalBoolean(obj, 'ellipse', source, path),\n polygon: obj.polygon === undefined ? undefined : validateTiledPointArray(obj.polygon, source, joinPath(path, 'polygon')),\n polyline: obj.polyline === undefined ? undefined : validateTiledPointArray(obj.polyline, source, joinPath(path, 'polyline')),\n text: obj.text === undefined ? undefined : validateTiledTextData(obj.text, source, joinPath(path, 'text')),\n template: optionalString(obj, 'template', source, path),\n properties: validateTiledPropertiesArray(obj.properties, source, joinPath(path, 'properties')),\n };\n};\n\n// ── Layers ───────────────────────────────────────────────────────────────────\n\nconst LAYER_TYPES = ['tilelayer', 'objectgroup', 'imagelayer', 'group'] as const;\nconst SUPPORTED_TILE_LAYER_ENCODINGS = new Set<string>(['csv']);\nconst DRAW_ORDERS: ReadonlyArray<NonNullable<TiledObjectLayerData['draworder']>> = ['topdown', 'index'];\n\nconst validateTiledLayerBase = (obj: Record<string, unknown>, source: string, path: string): TiledLayerDataBase => ({\n id: expectNonNegativeInteger(obj.id, source, joinPath(path, 'id')),\n name: expectString(obj.name, source, joinPath(path, 'name')),\n class: optionalString(obj, 'class', source, path),\n visible: expectBoolean(obj.visible, source, joinPath(path, 'visible')),\n opacity: expectNumber(obj.opacity, source, joinPath(path, 'opacity')),\n x: expectNumber(obj.x, source, joinPath(path, 'x')),\n y: expectNumber(obj.y, source, joinPath(path, 'y')),\n offsetx: optionalNumber(obj, 'offsetx', source, path),\n offsety: optionalNumber(obj, 'offsety', source, path),\n parallaxx: optionalNumber(obj, 'parallaxx', source, path),\n parallaxy: optionalNumber(obj, 'parallaxy', source, path),\n tintcolor: optionalString(obj, 'tintcolor', source, path),\n properties: validateTiledPropertiesArray(obj.properties, source, joinPath(path, 'properties')),\n});\n\nconst validateTiledGidArray = (value: unknown, source: string, path: string): readonly number[] =>\n mapArray(value, source, path, (item, itemPath) => expectNonNegativeInteger(item, source, itemPath));\n\nconst validateTiledChunkData = (raw: unknown, source: string, path: string): TiledChunkData => {\n const obj = expectObject(raw, source, path);\n return {\n x: expectInteger(obj.x, source, joinPath(path, 'x')),\n y: expectInteger(obj.y, source, joinPath(path, 'y')),\n width: expectPositiveInteger(obj.width, source, joinPath(path, 'width')),\n height: expectPositiveInteger(obj.height, source, joinPath(path, 'height')),\n data: validateTiledGidArray(obj.data, source, joinPath(path, 'data')),\n };\n};\n\nconst validateTiledTileLayerData = (obj: Record<string, unknown>, base: TiledLayerDataBase, source: string, path: string): TiledTileLayerData => {\n // Validation runs AFTER the async decode pass (`decodeLayerData.ts`), which\n // turns base64/gzip/zlib `data` into a plain GID array and strips these\n // markers. Reaching here with them still set means the data was not decoded\n // (e.g. validate was called directly) - reject rather than mis-parse.\n if (obj.compression !== undefined) {\n throw new TiledFormatError(\n source,\n joinPath(path, 'compression'),\n `compressed tile layer data is not supported (compression: ${JSON.stringify(obj.compression)})`,\n );\n }\n\n const encoding = obj.encoding;\n if (encoding !== undefined && !(typeof encoding === 'string' && SUPPORTED_TILE_LAYER_ENCODINGS.has(encoding))) {\n throw new TiledFormatError(\n source,\n joinPath(path, 'encoding'),\n `unsupported tile layer encoding ${JSON.stringify(encoding)} (only plain CSV/array data is supported)`,\n );\n }\n\n const width = expectNonNegativeInteger(obj.width, source, joinPath(path, 'width'));\n const height = expectNonNegativeInteger(obj.height, source, joinPath(path, 'height'));\n\n const hasData = obj.data !== undefined;\n const hasChunks = obj.chunks !== undefined;\n\n if (hasData === hasChunks) {\n throw new TiledFormatError(source, path, hasData ? 'tile layer has both \"data\" and \"chunks\"' : 'tile layer has neither \"data\" nor \"chunks\"');\n }\n\n return {\n ...base,\n type: 'tilelayer',\n width,\n height,\n data: hasData ? validateTiledGidArray(obj.data, source, joinPath(path, 'data')) : undefined,\n chunks: hasChunks ? mapArray(obj.chunks, source, joinPath(path, 'chunks'), (item, itemPath) => validateTiledChunkData(item, source, itemPath)) : undefined,\n };\n};\n\nconst validateTiledObjectLayerData = (obj: Record<string, unknown>, base: TiledLayerDataBase, source: string, path: string): TiledObjectLayerData => {\n let draworder: TiledObjectLayerData['draworder'];\n if (obj.draworder !== undefined) {\n const value = expectString(obj.draworder, source, joinPath(path, 'draworder'));\n if (!DRAW_ORDERS.includes(value as NonNullable<TiledObjectLayerData['draworder']>)) {\n throw new TiledFormatError(source, joinPath(path, 'draworder'), `unknown draw order \"${value}\"`);\n }\n draworder = value as TiledObjectLayerData['draworder'];\n }\n\n return {\n ...base,\n type: 'objectgroup',\n draworder,\n objects: mapArray(obj.objects, source, joinPath(path, 'objects'), (item, itemPath) => validateTiledObjectData(item, source, itemPath)),\n };\n};\n\nconst validateTiledImageLayerData = (obj: Record<string, unknown>, base: TiledLayerDataBase, source: string, path: string): TiledImageLayerData => ({\n ...base,\n type: 'imagelayer',\n image: obj.image === undefined ? '' : expectString(obj.image, source, joinPath(path, 'image')),\n repeatx: optionalBoolean(obj, 'repeatx', source, path),\n repeaty: optionalBoolean(obj, 'repeaty', source, path),\n});\n\nconst validateTiledGroupLayerData = (obj: Record<string, unknown>, base: TiledLayerDataBase, source: string, path: string): TiledGroupLayerData => ({\n ...base,\n type: 'group',\n layers: mapArray(obj.layers, source, joinPath(path, 'layers'), (item, itemPath) => validateTiledLayerData(item, source, itemPath)),\n});\n\n/** @internal */\nexport const validateTiledLayerData = (raw: unknown, source: string, path: string): TiledLayerData => {\n const obj = expectObject(raw, source, path);\n const type = expectString(obj.type, source, joinPath(path, 'type'));\n const base = validateTiledLayerBase(obj, source, path);\n\n switch (type) {\n case 'tilelayer':\n return validateTiledTileLayerData(obj, base, source, path);\n case 'objectgroup':\n return validateTiledObjectLayerData(obj, base, source, path);\n case 'imagelayer':\n return validateTiledImageLayerData(obj, base, source, path);\n case 'group':\n return validateTiledGroupLayerData(obj, base, source, path);\n default: {\n const known: readonly string[] = LAYER_TYPES;\n throw new TiledFormatError(source, joinPath(path, 'type'), `unknown layer type \"${type}\" (expected one of ${known.join(', ')})`);\n }\n }\n};\n\n/**\n * Walks a layer tree and ensures every tile layer's `data`/`chunks` choice\n * matches the map's `infinite` flag. Tiled itself is consistent across an\n * entire map; a mismatch indicates a hand-edited or corrupt file.\n * @internal\n */\nexport const checkTiledLayerInfiniteConsistency = (layers: readonly TiledLayerData[], infinite: boolean, source: string, path: string): void => {\n for (let i = 0; i < layers.length; i++) {\n const layer = layers[i];\n if (layer === undefined) continue;\n const layerPath = joinPath(path, i);\n\n if (layer.type === 'tilelayer') {\n const hasChunks = layer.chunks !== undefined;\n if (hasChunks !== infinite) {\n throw new TiledFormatError(\n source,\n layerPath,\n infinite ? 'tile layer is missing \"chunks\" on an infinite map' : 'tile layer has \"chunks\" on a finite map (expected \"data\")',\n );\n }\n } else if (layer.type === 'group') {\n checkTiledLayerInfiniteConsistency(layer.layers, infinite, source, joinPath(layerPath, 'layers'));\n }\n }\n};\n\n// ── Tile definitions ─────────────────────────────────────────────────────────\n\n/** @internal */\nexport const validateTiledTileData = (raw: unknown, source: string, path: string): TiledTileData => {\n const obj = expectObject(raw, source, path);\n\n let objectgroup: TiledObjectLayerData | undefined;\n if (obj.objectgroup !== undefined) {\n const objectgroupPath = joinPath(path, 'objectgroup');\n const layer = validateTiledLayerData(obj.objectgroup, source, objectgroupPath);\n if (layer.type !== 'objectgroup') {\n throw new TiledFormatError(source, objectgroupPath, `expected an \"objectgroup\" layer, got \"${layer.type}\"`);\n }\n objectgroup = layer;\n }\n\n return {\n id: expectNonNegativeInteger(obj.id, source, joinPath(path, 'id')),\n type: optionalString(obj, 'type', source, path),\n properties: validateTiledPropertiesArray(obj.properties, source, joinPath(path, 'properties')),\n animation: optionalMapArray(obj.animation, source, joinPath(path, 'animation'), (item, itemPath) =>\n validateTiledAnimationFrameData(item, source, itemPath),\n ),\n objectgroup,\n image: optionalString(obj, 'image', source, path),\n imagewidth: optionalNonNegativeInteger(obj, 'imagewidth', source, path),\n imageheight: optionalNonNegativeInteger(obj, 'imageheight', source, path),\n };\n};\n\n// ── Wangsets ─────────────────────────────────────────────────────────────────\n\nconst validateTiledWangColorData = (raw: unknown, source: string, path: string): TiledWangColorData => {\n const obj = expectObject(raw, source, path);\n return {\n name: expectString(obj.name, source, joinPath(path, 'name')),\n color: expectString(obj.color, source, joinPath(path, 'color')),\n tile: expectInteger(obj.tile, source, joinPath(path, 'tile')),\n probability: expectNumber(obj.probability, source, joinPath(path, 'probability')),\n };\n};\n\nconst validateTiledWangTileData = (raw: unknown, source: string, path: string): TiledWangTileData => {\n const obj = expectObject(raw, source, path);\n const tileid = expectNonNegativeInteger(obj.tileid, source, joinPath(path, 'tileid'));\n const wangid = mapArray(obj.wangid, source, joinPath(path, 'wangid'), (item, itemPath) => expectNonNegativeInteger(item, source, itemPath));\n return { tileid, wangid };\n};\n\nconst validateTiledWangSetData = (raw: unknown, source: string, path: string): TiledWangSetData => {\n const obj = expectObject(raw, source, path);\n return {\n name: expectString(obj.name, source, joinPath(path, 'name')),\n // type is accepted as any string - unknown values are treated as-is per spec\n type: expectString(obj.type, source, joinPath(path, 'type')),\n tile: expectInteger(obj.tile, source, joinPath(path, 'tile')),\n colors: mapArray(obj.colors, source, joinPath(path, 'colors'), (item, itemPath) => validateTiledWangColorData(item, source, itemPath)),\n wangtiles: mapArray(obj.wangtiles, source, joinPath(path, 'wangtiles'), (item, itemPath) => validateTiledWangTileData(item, source, itemPath)),\n properties: validateTiledPropertiesArray(obj.properties, source, joinPath(path, 'properties')),\n };\n};\n\nconst validateTiledWangSets = (value: unknown, source: string, path: string): readonly TiledWangSetData[] | undefined =>\n optionalMapArray(value, source, path, (item, itemPath) => validateTiledWangSetData(item, source, itemPath));\n\n// ── Tilesets ─────────────────────────────────────────────────────────────────\n\nconst validateTiledVersion = (value: unknown, source: string, path: string): string | number => {\n if (typeof value !== 'string' && typeof value !== 'number') {\n throw new TiledFormatError(source, path, `expected a string or number, got ${describeValue(value)}`);\n }\n return value;\n};\n\nconst validateTiledObjectAlignment = (obj: Record<string, unknown>, source: string, path: string): TiledObjectAlignment | undefined => {\n const value = obj.objectalignment;\n if (value === undefined) return undefined;\n\n const alignmentPath = joinPath(path, 'objectalignment');\n const name = expectString(value, source, alignmentPath);\n if (!TILED_OBJECT_ALIGNMENTS.includes(name as TiledObjectAlignment)) {\n throw new TiledFormatError(source, alignmentPath, `unknown object alignment \"${name}\" (expected one of ${TILED_OBJECT_ALIGNMENTS.join(', ')})`);\n }\n\n return name as TiledObjectAlignment;\n};\n\n/** @internal */\nexport const validateTiledTilesetData = (obj: Record<string, unknown>, source: string, path: string): TiledTilesetData => ({\n name: expectString(obj.name, source, joinPath(path, 'name')),\n class: optionalString(obj, 'class', source, path),\n tilewidth: expectPositiveInteger(obj.tilewidth, source, joinPath(path, 'tilewidth')),\n tileheight: expectPositiveInteger(obj.tileheight, source, joinPath(path, 'tileheight')),\n tilecount: expectNonNegativeInteger(obj.tilecount, source, joinPath(path, 'tilecount')),\n columns: expectNonNegativeInteger(obj.columns, source, joinPath(path, 'columns')),\n spacing: optionalNonNegativeInteger(obj, 'spacing', source, path),\n margin: optionalNonNegativeInteger(obj, 'margin', source, path),\n image: optionalString(obj, 'image', source, path),\n imagewidth: optionalNonNegativeInteger(obj, 'imagewidth', source, path),\n imageheight: optionalNonNegativeInteger(obj, 'imageheight', source, path),\n tileoffset: obj.tileoffset === undefined ? undefined : validateTiledPointData(obj.tileoffset, source, joinPath(path, 'tileoffset')),\n objectalignment: validateTiledObjectAlignment(obj, source, path),\n tiles: optionalMapArray(obj.tiles, source, joinPath(path, 'tiles'), (item, itemPath) => validateTiledTileData(item, source, itemPath)),\n wangsets: validateTiledWangSets(obj.wangsets, source, joinPath(path, 'wangsets')),\n properties: validateTiledPropertiesArray(obj.properties, source, joinPath(path, 'properties')),\n tiledversion: optionalString(obj, 'tiledversion', source, path),\n version: obj.version === undefined ? undefined : validateTiledVersion(obj.version, source, joinPath(path, 'version')),\n});\n\n/**\n * Validates one entry of a map's `tilesets` array: either `{ firstgid,\n * source }` (external `.tsj`) or `{ firstgid, ...embedded tileset fields }`.\n * @internal\n */\nexport const validateTiledTilesetRefData = (raw: unknown, source: string, path: string): TiledTilesetRefData => {\n const obj = expectObject(raw, source, path);\n const firstgid = expectPositiveInteger(obj.firstgid, source, joinPath(path, 'firstgid'));\n\n if ('source' in obj) {\n return { firstgid, source: expectString(obj.source, source, joinPath(path, 'source')) };\n }\n\n return { ...validateTiledTilesetData(obj, source, path), firstgid };\n};\n\n// ── Map ──────────────────────────────────────────────────────────────────────\n\nconst ORIENTATIONS: readonly TiledOrientation[] = ['orthogonal', 'isometric', 'staggered', 'hexagonal'];\nconst RENDER_ORDERS: readonly TiledRenderOrder[] = ['right-down', 'right-up', 'left-down', 'left-up'];\n\n/**\n * Validates the root of a `.tmj` file. Throws {@link TiledFormatError} on\n * any structural problem, including unsupported tile-layer encodings and\n * `infinite`/`data`/`chunks` inconsistencies.\n * @internal\n */\nexport const validateTiledMapData = (raw: unknown, source: string): TiledMapData => {\n const obj = expectObject(raw, source, '');\n\n const type = expectString(obj.type, source, 'type');\n if (type !== 'map') {\n throw new TiledFormatError(source, 'type', `expected \"map\", got \"${type}\"`);\n }\n\n const version = validateTiledVersion(obj.version, source, 'version');\n\n const orientationValue = expectString(obj.orientation, source, 'orientation');\n if (!ORIENTATIONS.includes(orientationValue as TiledOrientation)) {\n throw new TiledFormatError(source, 'orientation', `unknown orientation \"${orientationValue}\" (expected one of ${ORIENTATIONS.join(', ')})`);\n }\n const orientation = orientationValue as TiledOrientation;\n\n let renderorder: TiledRenderOrder | undefined;\n if (obj.renderorder !== undefined) {\n const value = expectString(obj.renderorder, source, 'renderorder');\n if (!RENDER_ORDERS.includes(value as TiledRenderOrder)) {\n throw new TiledFormatError(source, 'renderorder', `unknown render order \"${value}\" (expected one of ${RENDER_ORDERS.join(', ')})`);\n }\n renderorder = value as TiledRenderOrder;\n }\n\n const infinite = expectBoolean(obj.infinite, source, 'infinite');\n const layers = mapArray(obj.layers, source, 'layers', (item, itemPath) => validateTiledLayerData(item, source, itemPath));\n checkTiledLayerInfiniteConsistency(layers, infinite, source, 'layers');\n\n return {\n type: 'map',\n version,\n tiledversion: optionalString(obj, 'tiledversion', source, ''),\n class: optionalString(obj, 'class', source, ''),\n orientation,\n renderorder,\n width: expectNonNegativeInteger(obj.width, source, 'width'),\n height: expectNonNegativeInteger(obj.height, source, 'height'),\n tilewidth: expectPositiveInteger(obj.tilewidth, source, 'tilewidth'),\n tileheight: expectPositiveInteger(obj.tileheight, source, 'tileheight'),\n infinite,\n compressionlevel: optionalInteger(obj, 'compressionlevel', source, ''),\n nextlayerid: optionalNonNegativeInteger(obj, 'nextlayerid', source, ''),\n nextobjectid: optionalNonNegativeInteger(obj, 'nextobjectid', source, ''),\n backgroundcolor: optionalString(obj, 'backgroundcolor', source, ''),\n layers,\n tilesets: mapArray(obj.tilesets, source, 'tilesets', (item, itemPath) => validateTiledTilesetRefData(item, source, itemPath)),\n properties: validateTiledPropertiesArray(obj.properties, source, 'properties'),\n };\n};\n\n/**\n * Validates a standalone `.tsj` tileset file's root object.\n * @internal\n */\nexport const validateTiledTilesetFileData = (raw: unknown, source: string): TiledTilesetData =>\n validateTiledTilesetData(expectObject(raw, source, ''), source, '');\n"],"mappings":"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"}
|
package/dist/esm/wangSets.d.ts
CHANGED
|
@@ -6,7 +6,7 @@ import type { TiledWangSetData } from './data';
|
|
|
6
6
|
*
|
|
7
7
|
* ## Supported types
|
|
8
8
|
*
|
|
9
|
-
* - **`'corner'`**
|
|
9
|
+
* - **`'corner'`** - Maps the four corner positions of each `wangtile` to the
|
|
10
10
|
* four corner bits of the 8-bit blob mask and returns a `WangSet` of type
|
|
11
11
|
* `'blob'`. Only color index `> 0` in the Tiled wangid is treated as "this
|
|
12
12
|
* terrain"; color index `0` means unset (not this terrain).
|
|
@@ -22,7 +22,7 @@ import type { TiledWangSetData } from './data';
|
|
|
22
22
|
* the presence/absence of any color (> 0 = set) is used; which specific
|
|
23
23
|
* color is set is ignored.
|
|
24
24
|
*
|
|
25
|
-
* - **`'edge'`**
|
|
25
|
+
* - **`'edge'`** - Maps the four edge positions to the 4-bit edge mask and
|
|
26
26
|
* returns a `WangSet` of type `'edge'`.
|
|
27
27
|
*
|
|
28
28
|
* Tiled edge wangid position → WangSet edge bit mapping:
|
|
@@ -31,7 +31,7 @@ import type { TiledWangSetData } from './data';
|
|
|
31
31
|
* - `wangid[4]` (bottom) → bit 2 (value 4)
|
|
32
32
|
* - `wangid[6]` (left) → bit 3 (value 8)
|
|
33
33
|
*
|
|
34
|
-
* - **`'mixed'` / unknown**
|
|
34
|
+
* - **`'mixed'` / unknown** - Returns `null`; mixed wangsets interleave corner
|
|
35
35
|
* and edge semantics in a way that cannot be faithfully represented by
|
|
36
36
|
* a single blob or edge mask without additional heuristics.
|
|
37
37
|
*
|
|
@@ -40,4 +40,5 @@ import type { TiledWangSetData } from './data';
|
|
|
40
40
|
* tileset list (forwarded to {@link WangSet} as-is).
|
|
41
41
|
* @returns A {@link WangSet}, or `null` when the wangset type is unsupported.
|
|
42
42
|
*/
|
|
43
|
-
export declare
|
|
43
|
+
export declare const tiledWangSetToWangSet: (wangSet: TiledWangSetData, tilesetIndex: number) => WangSet | null;
|
|
44
|
+
//# sourceMappingURL=wangSets.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wangSets.d.ts","sourceRoot":"","sources":["../../src/wangSets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAEhD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,QAAQ,CAAC;AAE/C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,eAAO,MAAM,qBAAqB,GAAI,SAAS,gBAAgB,EAAE,cAAc,MAAM,KAAG,OAAO,GAAG,IAWjG,CAAC"}
|
package/dist/esm/wangSets.js
CHANGED
|
@@ -1,127 +1,102 @@
|
|
|
1
|
-
import { WangSet } from
|
|
1
|
+
import { WangSet } from "@codexo/exojs-tilemap";
|
|
2
2
|
|
|
3
|
+
//#region src/wangSets.ts
|
|
3
4
|
/**
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
return convertEdgeWangSet(wangSet, tilesetIndex);
|
|
49
|
-
}
|
|
50
|
-
// 'mixed' or any unknown type cannot be faithfully mapped.
|
|
51
|
-
return null;
|
|
52
|
-
}
|
|
53
|
-
// ── Corner → blob ─────────────────────────────────────────────────────────────
|
|
54
|
-
//
|
|
55
|
-
// Tiled corner wangid positions (indices into the 8-element wangid array):
|
|
56
|
-
// Index order: [top(0), topright(1), right(2), bottomright(3), bottom(4), bottomleft(5), left(6), topleft(7)]
|
|
57
|
-
//
|
|
58
|
-
// WangSet blob bitmask values (bit layout: bit0=TL, bit1=T, bit2=TR, bit3=L, bit4=R, bit5=BL, bit6=B, bit7=BR):
|
|
59
|
-
// topleft → wangid[7] → blob bit 0 (value 1)
|
|
60
|
-
// topright → wangid[1] → blob bit 2 (value 4)
|
|
61
|
-
// bottomleft → wangid[5] → blob bit 5 (value 32)
|
|
62
|
-
// bottomright → wangid[3] → blob bit 7 (value 128)
|
|
5
|
+
* Best-effort conversion of a {@link TiledWangSetData} to a runtime
|
|
6
|
+
* {@link WangSet} from `@codexo/exojs-tilemap`.
|
|
7
|
+
*
|
|
8
|
+
* ## Supported types
|
|
9
|
+
*
|
|
10
|
+
* - **`'corner'`** - Maps the four corner positions of each `wangtile` to the
|
|
11
|
+
* four corner bits of the 8-bit blob mask and returns a `WangSet` of type
|
|
12
|
+
* `'blob'`. Only color index `> 0` in the Tiled wangid is treated as "this
|
|
13
|
+
* terrain"; color index `0` means unset (not this terrain).
|
|
14
|
+
*
|
|
15
|
+
* Tiled corner wangid position → WangSet blob bit mapping:
|
|
16
|
+
* - `wangid[7]` (top-left) → bit 0 (value 1)
|
|
17
|
+
* - `wangid[1]` (top-right) → bit 2 (value 4)
|
|
18
|
+
* - `wangid[5]` (bottom-left) → bit 5 (value 32)
|
|
19
|
+
* - `wangid[3]` (bottom-right) → bit 7 (value 128)
|
|
20
|
+
*
|
|
21
|
+
* This is a best-effort conversion accurate for the common **single-color**
|
|
22
|
+
* corner terrain (blob-style). Multi-color terrains are accepted but only
|
|
23
|
+
* the presence/absence of any color (> 0 = set) is used; which specific
|
|
24
|
+
* color is set is ignored.
|
|
25
|
+
*
|
|
26
|
+
* - **`'edge'`** - Maps the four edge positions to the 4-bit edge mask and
|
|
27
|
+
* returns a `WangSet` of type `'edge'`.
|
|
28
|
+
*
|
|
29
|
+
* Tiled edge wangid position → WangSet edge bit mapping:
|
|
30
|
+
* - `wangid[0]` (top) → bit 0 (value 1)
|
|
31
|
+
* - `wangid[2]` (right) → bit 1 (value 2)
|
|
32
|
+
* - `wangid[4]` (bottom) → bit 2 (value 4)
|
|
33
|
+
* - `wangid[6]` (left) → bit 3 (value 8)
|
|
34
|
+
*
|
|
35
|
+
* - **`'mixed'` / unknown** - Returns `null`; mixed wangsets interleave corner
|
|
36
|
+
* and edge semantics in a way that cannot be faithfully represented by
|
|
37
|
+
* a single blob or edge mask without additional heuristics.
|
|
38
|
+
*
|
|
39
|
+
* @param wangSet The raw {@link TiledWangSetData} parsed from a `.tsj` file.
|
|
40
|
+
* @param tilesetIndex The index of the owning tileset within the layer's
|
|
41
|
+
* tileset list (forwarded to {@link WangSet} as-is).
|
|
42
|
+
* @returns A {@link WangSet}, or `null` when the wangset type is unsupported.
|
|
43
|
+
*/
|
|
44
|
+
const tiledWangSetToWangSet = (wangSet, tilesetIndex) => {
|
|
45
|
+
if (wangSet.type === "corner") return convertCornerWangSet(wangSet, tilesetIndex);
|
|
46
|
+
if (wangSet.type === "edge") return convertEdgeWangSet(wangSet, tilesetIndex);
|
|
47
|
+
return null;
|
|
48
|
+
};
|
|
63
49
|
const cornerIndexTopLeft = 7;
|
|
64
50
|
const cornerIndexTopRight = 1;
|
|
65
51
|
const cornerIndexBottomRight = 3;
|
|
66
52
|
const cornerIndexBottomLeft = 5;
|
|
67
|
-
const blobBitTopLeft = 1;
|
|
68
|
-
const blobBitTopRight = 4;
|
|
69
|
-
const blobBitBottomLeft = 32;
|
|
70
|
-
const blobBitBottomRight = 128;
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
return new WangSet({ tilesetIndex, blobMap, type: 'blob' });
|
|
89
|
-
}
|
|
90
|
-
// ── Edge → edge ───────────────────────────────────────────────────────────────
|
|
91
|
-
//
|
|
92
|
-
// Tiled edge wangid positions:
|
|
93
|
-
// Index order: [top(0), topright(1), right(2), bottomright(3), bottom(4), bottomleft(5), left(6), topleft(7)]
|
|
94
|
-
//
|
|
95
|
-
// WangSet edge bitmask values (bit layout: bit0=T, bit1=R, bit2=B, bit3=L):
|
|
96
|
-
// top → wangid[0] → edge bit 0 (value 1)
|
|
97
|
-
// right → wangid[2] → edge bit 1 (value 2)
|
|
98
|
-
// bottom → wangid[4] → edge bit 2 (value 4)
|
|
99
|
-
// left → wangid[6] → edge bit 3 (value 8)
|
|
53
|
+
const blobBitTopLeft = 1;
|
|
54
|
+
const blobBitTopRight = 4;
|
|
55
|
+
const blobBitBottomLeft = 32;
|
|
56
|
+
const blobBitBottomRight = 128;
|
|
57
|
+
const convertCornerWangSet = (wangSet, tilesetIndex) => {
|
|
58
|
+
const blobMap = /* @__PURE__ */ new Map();
|
|
59
|
+
for (const wangTile of wangSet.wangtiles) {
|
|
60
|
+
const id = wangTile.wangid;
|
|
61
|
+
let mask = 0;
|
|
62
|
+
if ((id[cornerIndexTopLeft] ?? 0) > 0) mask |= blobBitTopLeft;
|
|
63
|
+
if ((id[cornerIndexTopRight] ?? 0) > 0) mask |= blobBitTopRight;
|
|
64
|
+
if ((id[cornerIndexBottomLeft] ?? 0) > 0) mask |= blobBitBottomLeft;
|
|
65
|
+
if ((id[cornerIndexBottomRight] ?? 0) > 0) mask |= blobBitBottomRight;
|
|
66
|
+
blobMap.set(mask, wangTile.tileid);
|
|
67
|
+
}
|
|
68
|
+
return new WangSet({
|
|
69
|
+
tilesetIndex,
|
|
70
|
+
blobMap,
|
|
71
|
+
type: "blob"
|
|
72
|
+
});
|
|
73
|
+
};
|
|
100
74
|
const edgeIndexTop = 0;
|
|
101
75
|
const edgeIndexRight = 2;
|
|
102
76
|
const edgeIndexBottom = 4;
|
|
103
77
|
const edgeIndexLeft = 6;
|
|
104
|
-
const edgeBitTop = 1;
|
|
105
|
-
const edgeBitRight = 2;
|
|
106
|
-
const edgeBitBottom = 4;
|
|
107
|
-
const edgeBitLeft = 8;
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
}
|
|
78
|
+
const edgeBitTop = 1;
|
|
79
|
+
const edgeBitRight = 2;
|
|
80
|
+
const edgeBitBottom = 4;
|
|
81
|
+
const edgeBitLeft = 8;
|
|
82
|
+
const convertEdgeWangSet = (wangSet, tilesetIndex) => {
|
|
83
|
+
const blobMap = /* @__PURE__ */ new Map();
|
|
84
|
+
for (const wangTile of wangSet.wangtiles) {
|
|
85
|
+
const id = wangTile.wangid;
|
|
86
|
+
let mask = 0;
|
|
87
|
+
if ((id[edgeIndexTop] ?? 0) > 0) mask |= edgeBitTop;
|
|
88
|
+
if ((id[edgeIndexRight] ?? 0) > 0) mask |= edgeBitRight;
|
|
89
|
+
if ((id[edgeIndexBottom] ?? 0) > 0) mask |= edgeBitBottom;
|
|
90
|
+
if ((id[edgeIndexLeft] ?? 0) > 0) mask |= edgeBitLeft;
|
|
91
|
+
blobMap.set(mask, wangTile.tileid);
|
|
92
|
+
}
|
|
93
|
+
return new WangSet({
|
|
94
|
+
tilesetIndex,
|
|
95
|
+
blobMap,
|
|
96
|
+
type: "edge"
|
|
97
|
+
});
|
|
98
|
+
};
|
|
125
99
|
|
|
100
|
+
//#endregion
|
|
126
101
|
export { tiledWangSetToWangSet };
|
|
127
|
-
//# sourceMappingURL=wangSets.js.map
|
|
102
|
+
//# sourceMappingURL=wangSets.js.map
|
package/dist/esm/wangSets.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wangSets.js","sources":["
|
|
1
|
+
{"version":3,"file":"wangSets.js","names":[],"sources":["../../src/wangSets.ts"],"sourcesContent":["import { WangSet } from '@codexo/exojs-tilemap';\n\nimport type { TiledWangSetData } from './data';\n\n/**\n * Best-effort conversion of a {@link TiledWangSetData} to a runtime\n * {@link WangSet} from `@codexo/exojs-tilemap`.\n *\n * ## Supported types\n *\n * - **`'corner'`** - Maps the four corner positions of each `wangtile` to the\n * four corner bits of the 8-bit blob mask and returns a `WangSet` of type\n * `'blob'`. Only color index `> 0` in the Tiled wangid is treated as \"this\n * terrain\"; color index `0` means unset (not this terrain).\n *\n * Tiled corner wangid position → WangSet blob bit mapping:\n * - `wangid[7]` (top-left) → bit 0 (value 1)\n * - `wangid[1]` (top-right) → bit 2 (value 4)\n * - `wangid[5]` (bottom-left) → bit 5 (value 32)\n * - `wangid[3]` (bottom-right) → bit 7 (value 128)\n *\n * This is a best-effort conversion accurate for the common **single-color**\n * corner terrain (blob-style). Multi-color terrains are accepted but only\n * the presence/absence of any color (> 0 = set) is used; which specific\n * color is set is ignored.\n *\n * - **`'edge'`** - Maps the four edge positions to the 4-bit edge mask and\n * returns a `WangSet` of type `'edge'`.\n *\n * Tiled edge wangid position → WangSet edge bit mapping:\n * - `wangid[0]` (top) → bit 0 (value 1)\n * - `wangid[2]` (right) → bit 1 (value 2)\n * - `wangid[4]` (bottom) → bit 2 (value 4)\n * - `wangid[6]` (left) → bit 3 (value 8)\n *\n * - **`'mixed'` / unknown** - Returns `null`; mixed wangsets interleave corner\n * and edge semantics in a way that cannot be faithfully represented by\n * a single blob or edge mask without additional heuristics.\n *\n * @param wangSet The raw {@link TiledWangSetData} parsed from a `.tsj` file.\n * @param tilesetIndex The index of the owning tileset within the layer's\n * tileset list (forwarded to {@link WangSet} as-is).\n * @returns A {@link WangSet}, or `null` when the wangset type is unsupported.\n */\nexport const tiledWangSetToWangSet = (wangSet: TiledWangSetData, tilesetIndex: number): WangSet | null => {\n if (wangSet.type === 'corner') {\n return convertCornerWangSet(wangSet, tilesetIndex);\n }\n\n if (wangSet.type === 'edge') {\n return convertEdgeWangSet(wangSet, tilesetIndex);\n }\n\n // 'mixed' or any unknown type cannot be faithfully mapped.\n return null;\n};\n\n// ── Corner → blob ─────────────────────────────────────────────────────────────\n//\n// Tiled corner wangid positions (indices into the 8-element wangid array):\n// Index order: [top(0), topright(1), right(2), bottomright(3), bottom(4), bottomleft(5), left(6), topleft(7)]\n//\n// WangSet blob bitmask values (bit layout: bit0=TL, bit1=T, bit2=TR, bit3=L, bit4=R, bit5=BL, bit6=B, bit7=BR):\n// topleft → wangid[7] → blob bit 0 (value 1)\n// topright → wangid[1] → blob bit 2 (value 4)\n// bottomleft → wangid[5] → blob bit 5 (value 32)\n// bottomright → wangid[3] → blob bit 7 (value 128)\n\nconst cornerIndexTopLeft = 7;\nconst cornerIndexTopRight = 1;\nconst cornerIndexBottomRight = 3;\nconst cornerIndexBottomLeft = 5;\n\nconst blobBitTopLeft = 1; // bit 0\nconst blobBitTopRight = 4; // bit 2\nconst blobBitBottomLeft = 32; // bit 5\nconst blobBitBottomRight = 128; // bit 7\n\nconst convertCornerWangSet = (wangSet: TiledWangSetData, tilesetIndex: number): WangSet => {\n const blobMap = new Map<number, number>();\n\n for (const wangTile of wangSet.wangtiles) {\n const id = wangTile.wangid;\n let mask = 0;\n\n if ((id[cornerIndexTopLeft] ?? 0) > 0) mask |= blobBitTopLeft;\n if ((id[cornerIndexTopRight] ?? 0) > 0) mask |= blobBitTopRight;\n if ((id[cornerIndexBottomLeft] ?? 0) > 0) mask |= blobBitBottomLeft;\n if ((id[cornerIndexBottomRight] ?? 0) > 0) mask |= blobBitBottomRight;\n\n // Last writer wins when two wangtiles produce the same mask\n // (shouldn't happen in well-formed data, but be lenient).\n blobMap.set(mask, wangTile.tileid);\n }\n\n return new WangSet({ tilesetIndex, blobMap, type: 'blob' });\n};\n\n// ── Edge → edge ───────────────────────────────────────────────────────────────\n//\n// Tiled edge wangid positions:\n// Index order: [top(0), topright(1), right(2), bottomright(3), bottom(4), bottomleft(5), left(6), topleft(7)]\n//\n// WangSet edge bitmask values (bit layout: bit0=T, bit1=R, bit2=B, bit3=L):\n// top → wangid[0] → edge bit 0 (value 1)\n// right → wangid[2] → edge bit 1 (value 2)\n// bottom → wangid[4] → edge bit 2 (value 4)\n// left → wangid[6] → edge bit 3 (value 8)\n\nconst edgeIndexTop = 0;\nconst edgeIndexRight = 2;\nconst edgeIndexBottom = 4;\nconst edgeIndexLeft = 6;\n\nconst edgeBitTop = 1; // bit 0\nconst edgeBitRight = 2; // bit 1\nconst edgeBitBottom = 4; // bit 2\nconst edgeBitLeft = 8; // bit 3\n\nconst convertEdgeWangSet = (wangSet: TiledWangSetData, tilesetIndex: number): WangSet => {\n const blobMap = new Map<number, number>();\n\n for (const wangTile of wangSet.wangtiles) {\n const id = wangTile.wangid;\n let mask = 0;\n\n if ((id[edgeIndexTop] ?? 0) > 0) mask |= edgeBitTop;\n if ((id[edgeIndexRight] ?? 0) > 0) mask |= edgeBitRight;\n if ((id[edgeIndexBottom] ?? 0) > 0) mask |= edgeBitBottom;\n if ((id[edgeIndexLeft] ?? 0) > 0) mask |= edgeBitLeft;\n\n blobMap.set(mask, wangTile.tileid);\n }\n\n return new WangSet({ tilesetIndex, blobMap, type: 'edge' });\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4CA,MAAa,yBAAyB,SAA2B,iBAAyC;CACxG,IAAI,QAAQ,SAAS,UACnB,OAAO,qBAAqB,SAAS,YAAY;CAGnD,IAAI,QAAQ,SAAS,QACnB,OAAO,mBAAmB,SAAS,YAAY;CAIjD,OAAO;AACT;AAaA,MAAM,qBAAqB;AAC3B,MAAM,sBAAsB;AAC5B,MAAM,yBAAyB;AAC/B,MAAM,wBAAwB;AAE9B,MAAM,iBAAiB;AACvB,MAAM,kBAAkB;AACxB,MAAM,oBAAoB;AAC1B,MAAM,qBAAqB;AAE3B,MAAM,wBAAwB,SAA2B,iBAAkC;CACzF,MAAM,0BAAU,IAAI,IAAoB;CAExC,KAAK,MAAM,YAAY,QAAQ,WAAW;EACxC,MAAM,KAAK,SAAS;EACpB,IAAI,OAAO;EAEX,KAAK,GAAG,uBAAuB,KAAK,GAAG,QAAQ;EAC/C,KAAK,GAAG,wBAAwB,KAAK,GAAG,QAAQ;EAChD,KAAK,GAAG,0BAA0B,KAAK,GAAG,QAAQ;EAClD,KAAK,GAAG,2BAA2B,KAAK,GAAG,QAAQ;EAInD,QAAQ,IAAI,MAAM,SAAS,MAAM;CACnC;CAEA,OAAO,IAAI,QAAQ;EAAE;EAAc;EAAS,MAAM;CAAO,CAAC;AAC5D;AAaA,MAAM,eAAe;AACrB,MAAM,iBAAiB;AACvB,MAAM,kBAAkB;AACxB,MAAM,gBAAgB;AAEtB,MAAM,aAAa;AACnB,MAAM,eAAe;AACrB,MAAM,gBAAgB;AACtB,MAAM,cAAc;AAEpB,MAAM,sBAAsB,SAA2B,iBAAkC;CACvF,MAAM,0BAAU,IAAI,IAAoB;CAExC,KAAK,MAAM,YAAY,QAAQ,WAAW;EACxC,MAAM,KAAK,SAAS;EACpB,IAAI,OAAO;EAEX,KAAK,GAAG,iBAAiB,KAAK,GAAG,QAAQ;EACzC,KAAK,GAAG,mBAAmB,KAAK,GAAG,QAAQ;EAC3C,KAAK,GAAG,oBAAoB,KAAK,GAAG,QAAQ;EAC5C,KAAK,GAAG,kBAAkB,KAAK,GAAG,QAAQ;EAE1C,QAAQ,IAAI,MAAM,SAAS,MAAM;CACnC;CAEA,OAAO,IAAI,QAAQ;EAAE;EAAc;EAAS,MAAM;CAAO,CAAC;AAC5D"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@codexo/exojs-tiled",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.16.0",
|
|
4
4
|
"description": "Tiled map format asset extension for ExoJS.",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -8,9 +8,7 @@
|
|
|
8
8
|
"directory": "packages/exojs-tiled"
|
|
9
9
|
},
|
|
10
10
|
"type": "module",
|
|
11
|
-
"sideEffects":
|
|
12
|
-
"./dist/esm/register.js"
|
|
13
|
-
],
|
|
11
|
+
"sideEffects": false,
|
|
14
12
|
"main": "./dist/esm/index.js",
|
|
15
13
|
"module": "./dist/esm/index.js",
|
|
16
14
|
"types": "./dist/esm/index.d.ts",
|
|
@@ -20,11 +18,6 @@
|
|
|
20
18
|
"import": "./dist/esm/index.js",
|
|
21
19
|
"default": "./dist/esm/index.js"
|
|
22
20
|
},
|
|
23
|
-
"./register": {
|
|
24
|
-
"types": "./dist/esm/register.d.ts",
|
|
25
|
-
"import": "./dist/esm/register.js",
|
|
26
|
-
"default": "./dist/esm/register.js"
|
|
27
|
-
},
|
|
28
21
|
"./package.json": "./package.json"
|
|
29
22
|
},
|
|
30
23
|
"files": [
|
|
@@ -33,23 +26,22 @@
|
|
|
33
26
|
"LICENSE"
|
|
34
27
|
],
|
|
35
28
|
"peerDependencies": {
|
|
36
|
-
"@codexo/exojs": "0.
|
|
37
|
-
|
|
38
|
-
"dependencies": {
|
|
39
|
-
"@codexo/exojs-tilemap": "0.15.3"
|
|
29
|
+
"@codexo/exojs": "0.16.x",
|
|
30
|
+
"@codexo/exojs-tilemap": "0.16.x"
|
|
40
31
|
},
|
|
41
32
|
"devDependencies": {
|
|
42
|
-
"@codexo/exojs": "0.
|
|
43
|
-
"@codexo/exojs-
|
|
33
|
+
"@codexo/exojs-config": "0.0.0",
|
|
34
|
+
"@codexo/exojs-tilemap": "0.16.0",
|
|
35
|
+
"@codexo/exojs": "0.16.0"
|
|
44
36
|
},
|
|
45
37
|
"license": "MIT",
|
|
46
38
|
"publishConfig": {
|
|
47
39
|
"access": "public"
|
|
48
40
|
},
|
|
49
41
|
"scripts": {
|
|
50
|
-
"build": "tsx ../../
|
|
51
|
-
"build:dev": "tsx ../../
|
|
52
|
-
"typecheck": "tsc --noEmit",
|
|
42
|
+
"build": "tsx ../../scripts/build-extension.ts",
|
|
43
|
+
"build:dev": "tsx ../../scripts/build-extension.ts --dev",
|
|
44
|
+
"typecheck": "tsc --noEmit && tsc --noEmit -p tsconfig.test.json",
|
|
53
45
|
"lint": "eslint \"src/**/*.ts\" \"test/**/*.ts\"",
|
|
54
46
|
"test": "vitest run --root ../.. --project=exojs-tiled"
|
|
55
47
|
}
|
package/dist/esm/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;"}
|
package/dist/esm/register.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './public';
|
package/dist/esm/register.js
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { ExtensionRegistry } from '@codexo/exojs/extensions';
|
|
2
|
-
import { tiledExtension } from './tiledExtension.js';
|
|
3
|
-
export { tiledBuildInfo } from './tiledBuildInfo.js';
|
|
4
|
-
export { tiledMapBinding } from './tiledMapBinding.js';
|
|
5
|
-
export { tiledRuntimeMapBinding } from './tiledRuntimeMapBinding.js';
|
|
6
|
-
export { ObjectLayer, TILE_TRANSFORM_IDENTITY, TileLayer, TileLayerNode, TileMap, TileMapBand, TileMapNode, TileMapView, TileSet, WangSet, tilemapExtension } from '@codexo/exojs-tilemap';
|
|
7
|
-
export { TiledGroupLayer, TiledImageLayer, TiledLayer, TiledObjectLayer, TiledTileLayer, createTiledLayer } from './TiledLayer.js';
|
|
8
|
-
export { TiledMap } from './TiledMap.js';
|
|
9
|
-
export { TiledObject } from './TiledObject.js';
|
|
10
|
-
export { TiledTileset } from './TiledTileset.js';
|
|
11
|
-
export { tiledWangSetToWangSet } from './wangSets.js';
|
|
12
|
-
export { TiledFormatError } from './validate.js';
|
|
13
|
-
|
|
14
|
-
// @codexo/exojs-tiled/register — explicit registration entry.
|
|
15
|
-
// Importing this entry registers the default tiledExtension descriptor
|
|
16
|
-
// in the global ExtensionRegistry. Subsequently constructed Applications
|
|
17
|
-
// that use global defaults will receive the Tiled extension.
|
|
18
|
-
// This is the only side-effectful entry in this package.
|
|
19
|
-
ExtensionRegistry.register(tiledExtension);
|
|
20
|
-
|
|
21
|
-
export { tiledExtension };
|
|
22
|
-
//# sourceMappingURL=register.js.map
|
package/dist/esm/register.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"register.js","sources":["../../../src/register.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AAMA,iBAAiB,CAAC,QAAQ,CAAC,cAAc,CAAC;;;;"}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { TiledMap } from './TiledMap';
|
|
2
|
-
import { type TiledLoadOptions } from './tiledOptions';
|
|
3
|
-
/**
|
|
4
|
-
* Declarative asset binding for {@link TiledMap}.
|
|
5
|
-
*
|
|
6
|
-
* Token-only: `loader.load(TiledMap, 'world.tmj')` resolves through this
|
|
7
|
-
* binding, but no `extensions` are claimed, so a plain
|
|
8
|
-
* `loader.load('world.tmj')` does not resolve to `TiledMap`. The `.tmj`
|
|
9
|
-
* extension (and generic `.json` Tiled loading) is reserved for the
|
|
10
|
-
* format-independent `TileMap` runtime asset binding.
|
|
11
|
-
*/
|
|
12
|
-
export declare const tiledMapBinding: {
|
|
13
|
-
type: typeof TiledMap;
|
|
14
|
-
typeNames: string[];
|
|
15
|
-
create(): {
|
|
16
|
-
getIdentityKey(req: import("@codexo/exojs").AssetLoadRequest<TiledLoadOptions>): string;
|
|
17
|
-
load(req: import("@codexo/exojs").AssetLoadRequest<TiledLoadOptions>, ctx: import("@codexo/exojs").AssetLoaderContext): Promise<TiledMap>;
|
|
18
|
-
};
|
|
19
|
-
};
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import { loadTiledMap } from './loadTiledMap.js';
|
|
2
|
-
import { TiledMap } from './TiledMap.js';
|
|
3
|
-
import { resolveTiledOptions } from './tiledOptions.js';
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Declarative asset binding for {@link TiledMap}.
|
|
7
|
-
*
|
|
8
|
-
* Token-only: `loader.load(TiledMap, 'world.tmj')` resolves through this
|
|
9
|
-
* binding, but no `extensions` are claimed, so a plain
|
|
10
|
-
* `loader.load('world.tmj')` does not resolve to `TiledMap`. The `.tmj`
|
|
11
|
-
* extension (and generic `.json` Tiled loading) is reserved for the
|
|
12
|
-
* format-independent `TileMap` runtime asset binding.
|
|
13
|
-
*/
|
|
14
|
-
const tiledMapBinding = {
|
|
15
|
-
type: TiledMap,
|
|
16
|
-
typeNames: ['tiledMap'],
|
|
17
|
-
create() {
|
|
18
|
-
return {
|
|
19
|
-
getIdentityKey(req) {
|
|
20
|
-
const o = resolveTiledOptions(req.options);
|
|
21
|
-
return `${req.source}|${o.format}`;
|
|
22
|
-
},
|
|
23
|
-
async load(req, ctx) {
|
|
24
|
-
return loadTiledMap(req.source, ctx);
|
|
25
|
-
},
|
|
26
|
-
};
|
|
27
|
-
},
|
|
28
|
-
};
|
|
29
|
-
|
|
30
|
-
export { tiledMapBinding };
|
|
31
|
-
//# sourceMappingURL=tiledMapBinding.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tiledMapBinding.js","sources":["../../../src/tiledMapBinding.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;AAMA;;;;;;;;AAQG;AACI,MAAM,eAAe,GAAG;AAC7B,IAAA,IAAI,EAAE,QAAQ;IACd,SAAS,EAAE,CAAC,UAAU,CAAC;IACvB,MAAM,GAAA;QACJ,OAAO;AACL,YAAA,cAAc,CAAC,GAAG,EAAA;gBAChB,MAAM,CAAC,GAAG,mBAAmB,CAAC,GAAG,CAAC,OAAO,CAAC;gBAC1C,OAAO,CAAA,EAAG,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,CAAA,CAAE;YACpC,CAAC;AACD,YAAA,MAAM,IAAI,CAAC,GAAG,EAAE,GAAG,EAAA;gBACjB,OAAO,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC;YACtC,CAAC;SACiD;IACtD,CAAC;;;;;"}
|