From 4067a0dc7b43e6c83bfdf1db74a1e118d5937bd6 Mon Sep 17 00:00:00 2001 From: Sebastien Benard Date: Wed, 16 Oct 2024 17:38:44 +0200 Subject: [PATCH] ADD IntGrid values abstract enum --- src/ldtk/macro/TypeBuilder.hx | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/src/ldtk/macro/TypeBuilder.hx b/src/ldtk/macro/TypeBuilder.hx index fdf0d33..7dca727 100644 --- a/src/ldtk/macro/TypeBuilder.hx +++ b/src/ldtk/macro/TypeBuilder.hx @@ -606,6 +606,29 @@ class TypeBuilder { switch type { case IntGrid: + // Create IntGrid abstract enum from values + var intType = macro : Int; + var enumTypeDef : TypeDefinition = { + name: l.identifier+"_IntGridValues", + pack: modPack, + doc: "IntGrid values from layer "+l.identifier+" available as an Abstract Enum of Int", + kind: TDAbstract(intType, [AbEnum, AbTo(intType)], [intType], [intType]), + pos: curPos, + fields: [], + } + for(v in l.intGridValues) { + var groupInf = l.intGridValuesGroups.filter( g->g.uid==v.groupUid )[0]; + var groupId = groupInf!=null ? "_"+groupInf.identifier+"_" : "_"; + var enumUid = l.identifier + groupId + ( v.identifier!=null ? v.identifier : Std.string(v.value) ); + enumTypeDef.fields.push({ + name: sanitizeIdentifier(enumUid), + pos: curPos, + kind: FVar(intType, macro $v{v.value}), + }); + } + registerTypeDefinitionModule(enumTypeDef, projectFilePath); + + if( l.tilesetDefUid==null ) { // IntGrid var parentTypePath : TypePath = { pack: [APP_PACKAGE], name:"Layer_IntGrid" }