Files
dusk/tools/mapcompile/entityParser.py

40 lines
1.0 KiB
Python

import sys
from constants import TILE_WIDTH_HEIGHT
ENTITY_TYPE_MAP = {
'templates/NPC.tx': 'ENTITY_TYPE_NPC',
}
def parseEntity(obj, chunkData):
if 'type' in obj:
if obj['type'] not in ENTITY_TYPE_MAP:
print(f"Unknown entity type: {obj['type']}")
return None
entType = ENTITY_TYPE_MAP[obj['type']]
elif 'template' in obj:
if obj['template'] not in ENTITY_TYPE_MAP:
print(f"Unknown entity template: {obj['template']}")
return None
entType = ENTITY_TYPE_MAP[obj['template']]
else:
return None
if 'properties' not in obj:
obj['properties'] = {}
obj['localX'] = obj['x'] - (chunkData['topLeftTileX'] * TILE_WIDTH_HEIGHT)
obj['localY'] = obj['y'] - (chunkData['topLeftTileY'] * TILE_WIDTH_HEIGHT)
obj['dir'] = 'ENTITY_DIR_SOUTH'
obj['type'] = entType
# Handle per-type properties
if entType == 'ENTITY_TYPE_NPC':
obj['data'] = {}
obj['data']['npc'] = {}
obj['data']['npc']['interactType'] = 'NPC_INTERACT_TYPE_TEXT'
obj['data']['npc']['text'] = '"test"'
return obj