100 lines
3.1 KiB
Python
100 lines
3.1 KiB
Python
|
|
import xml.etree.ElementTree as ET
|
|
|
|
tmx_file = 'assets/maps/Faza1_Finalna_v2.tmx'
|
|
tree = ET.parse(tmx_file)
|
|
root = tree.getroot()
|
|
|
|
# Find the last tileset to calculate the next firstgid
|
|
last_gid = 1
|
|
for tileset in root.findall('tileset'):
|
|
firstgid = int(tileset.get('firstgid'))
|
|
# This logic is a bit flawed if tilesets are not in order, but usuall good enough.
|
|
# Better: finding max(firstgid + tilecount)
|
|
# We will assume existing ones are okay and append to the end.
|
|
|
|
# We need to know the tilecount, which might be in the image dimensions.
|
|
# Simplified: We will just pick a high starting GID for new ones to avoid collision.
|
|
# Existing max GID seems to be around 7000 (from previous logs).
|
|
pass
|
|
|
|
next_gid = 10000
|
|
|
|
new_tilesets = [
|
|
{
|
|
'firstgid': next_gid,
|
|
'name': 'Ground_Tilled',
|
|
'tilewidth': 32,
|
|
'tileheight': 32,
|
|
'tilecount': 1,
|
|
'columns': 1,
|
|
'image': 'tilesets_source/ground/soil_tilled.png',
|
|
'imagewidth': 32,
|
|
'imageheight': 32
|
|
},
|
|
{
|
|
'firstgid': next_gid + 100,
|
|
'name': 'Farming_Potato', // Collection of images approach is better for single sprites, but let's try standard
|
|
'tilewidth': 32,
|
|
'tileheight': 32,
|
|
'tilecount': 5,
|
|
'columns': 5,
|
|
'image': 'tilesets_source/crops/potato_stage5.png', # Placeholder logic: TMX usually links to one image per tileset or a collection.
|
|
# Since we have individual files, we should create a "Collection of Images" tileset or merge them.
|
|
# For simplicity in this script, I will just add single image tilesets for the key items.
|
|
'imagewidth': 32,
|
|
'imageheight': 32
|
|
},
|
|
{
|
|
'firstgid': next_gid + 200,
|
|
'name': 'Props_Farm',
|
|
'tilewidth': 32,
|
|
'tileheight': 32,
|
|
'tilecount': 1,
|
|
'columns': 1,
|
|
'image': 'tilesets_source/props/chest_closed.png',
|
|
'imagewidth': 32,
|
|
'imageheight': 32
|
|
},
|
|
{
|
|
'firstgid': next_gid + 300,
|
|
'name': 'Decals_Blood',
|
|
'tilewidth': 32,
|
|
'tileheight': 32,
|
|
'tilecount': 1,
|
|
'columns': 1,
|
|
'image': 'tilesets_source/decals/blood_pool.png',
|
|
'imagewidth': 32,
|
|
'imageheight': 32
|
|
},
|
|
{
|
|
'firstgid': next_gid + 400,
|
|
'name': 'Collision_Red',
|
|
'tilewidth': 32,
|
|
'tileheight': 32,
|
|
'tilecount': 1,
|
|
'columns': 1,
|
|
'image': 'collision_red.png',
|
|
'imagewidth': 32,
|
|
'imageheight': 32
|
|
}
|
|
]
|
|
|
|
# Append new tilesets
|
|
for ts in new_tilesets:
|
|
new_node = ET.SubElement(root, 'tileset')
|
|
new_node.set('firstgid', str(ts['firstgid']))
|
|
new_node.set('name', ts['name'])
|
|
new_node.set('tilewidth', str(ts['tilewidth']))
|
|
new_node.set('tileheight', str(ts['tileheight']))
|
|
new_node.set('tilecount', str(ts['tilecount']))
|
|
new_node.set('columns', str(ts['columns']))
|
|
|
|
img_node = ET.SubElement(new_node, 'image')
|
|
img_node.set('source', ts['image'])
|
|
img_node.set('width', str(ts['imagewidth']))
|
|
img_node.set('height', str(ts['imageheight']))
|
|
|
|
tree.write(tmx_file)
|
|
print("Done injecting tilesets.")
|