nitro-docker/assets/translation/FurnitureDataTranslator.py

69 lines
2.7 KiB
Python

import json
todo_types = ["roomitemtypes", "wallitemtypes"]
# Furnidata id = items_base.sprite_id
# Productdata classname = catalog_items.catalog_name
# Furnidata classname = items_base.item_name/public_name
# items_base.id = catalog_items.items_id which is different from sprite id and furnidata id
def normalize_classnames(classname):
return str(classname).replace("_", "").replace(" ", "")
# Create a dictionary mapping classname to name and description
furniture_dict = {}
with open('gamedata/furnidata.json', 'r', encoding='utf-8') as f:
furniture_data = json.load(f)
for todo_type in todo_types:
for furnitype in furniture_data[todo_type]["furnitype"]:
classname = normalize_classnames(furnitype['classname'])
furniture_dict[classname] = {
"name": furnitype['name'],
"description": furnitype['description'],
"specialtype": furnitype['specialtype'],
}
with open('gamedata/productdata.json', 'r', encoding='utf-8') as f:
product_data = json.load(f)
for product in product_data["productdata"]["product"]:
classname = normalize_classnames(product['code'])
furniture_dict[classname] = {
"name": product['name'],
"description": product['description'],
}
orig_furniture_data = {}
# Load the JSON file
with open('../assets/gamedata/FurnitureData.json', 'r', encoding='utf-8') as f:
orig_furniture_data = json.load(f)
# Replace the name and description values with values from the XML file
for todo_type in todo_types:
for furnitype in orig_furniture_data[todo_type]["furnitype"]:
classname = normalize_classnames(furnitype['classname'])
if classname in furniture_dict:
furnitype['name'] = furniture_dict[classname]['name']
furnitype['description'] = furniture_dict[classname]['description']
if "specialtype" in furniture_dict[classname]:
furnitype['specialtype'] = furniture_dict[classname]['specialtype']
orig_product_dict = {}
# Load the JSON file
with open('../assets/gamedata/ProductData.json', 'r', encoding='utf-8') as f:
orig_product_dict = json.load(f)
for product in orig_product_dict["productdata"]["product"]:
classname = normalize_classnames(product['code'])
if classname in furniture_dict:
product['name'] = furniture_dict[classname]['name']
product['description'] = furniture_dict[classname]['description']
# Save the updated JSON file
with open('../assets/gamedata/FurnitureData.json', 'w') as f:
json.dump(orig_furniture_data, f, separators=(',', ':'))
with open('../assets/gamedata/ProductData.json', 'w') as f:
json.dump(orig_product_dict, f, separators=(',', ':'))