1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- import json
- import os
- import copy
- def read_json(file_path):
- with open(file_path, 'r') as file:
- return json.load(file)
- def set_gid_in_layer(layer, x, y, gid):
- width = layer['width']
- index = (y+2) * width + x
- if index < len(layer['data']):
- layer['data'][index] = gid
- def update_tiled_json(source_json, tiled_template):
- for item in source_json['LevelData']:
- x, y, z = item['X'], item['Y'], item['Z']
- layer_name = f"Tile_{z}"
- layer = next((l for l in tiled_template['layers'] if l['name'] == layer_name), None)
- if layer:
- set_gid_in_layer(layer, x, y, 1)
- else:
- print(f"Layer {layer_name} not found")
- marks_layer = next((l for l in tiled_template['layers'] if l['name'] == "Marks"), None)
- if marks_layer:
- for item in source_json['StackData']:
- x, y = item['X'], item['Y']
- set_gid_in_layer(marks_layer, x, y, 100)
- return tiled_template
- def write_json(data, file_path):
- with open(file_path, 'w+') as file:
- json.dump(data, file, indent=4)
- def process_files(source_dir, target_dir, template_file):
- tiled_template = read_json(template_file)
- for file_name in os.listdir(source_dir):
- if file_name.endswith('.json'):
- template = copy.deepcopy(tiled_template)
- source_file = os.path.join(source_dir, file_name)
- source_data = read_json(source_file)
- updated_tiled_data = update_tiled_json(source_data, template)
- base_name = os.path.splitext(file_name)[0]
- output_file = os.path.join(target_dir, f"tf_{base_name}.json")
- write_json(updated_tiled_data, output_file)
- # 获取当前工作目录
- current_dir = os.getcwd()
- script_dir = os.path.dirname(os.path.abspath(__file__))
- os.chdir(script_dir)
- # Example usage
- source_dir = '/Users/xulianxin/Documents/develop/game/TileMatch/TileManor.Lv/TileFamily/level_data2'
- target_dir = '../tf_templates'
- template_file = './0000-template.json'
- process_files(source_dir, target_dir, template_file)
- os.chdir(current_dir)
|