12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- import json
- import math
- import xml.etree.ElementTree as ET
- import re
- import os
- import plistlib
- # 转换盘子显示名称到sprite名称
- # ‘plate_wh_03_8_三角圆弧’ 转换成sprite名称 plate_wh_03_8.png
- def tranformDName2SName(displayName):
- startpos = 0
- for i in [1,2,3,4]:
- startpos = displayName.index('_', startpos) + 1
- if startpos == -1:
- break
- if startpos == -1:
- return displayName
- else:
- return displayName[0:startpos-1]+".png"
- # 盘子情况(孔位)转JSON
- def readOnePlateWithHoles( name ):
- redfilename = "../ccb/盘子上位置情况/" + name
- plate_obj = {} # position always 0,0 in center and no size property!
- with open(redfilename,'rb') as fileobject:
- plist_root = plistlib.load(fileobject,fmt=plistlib.FMT_XML)
- children = plist_root['nodeGraph']['children']
- ichild = 0
- plate_obj["holes"] = []
- for child in children:
- ichild = ichild + 1
- if ichild==1:
- name1 = child["displayName"]
- # 把显示名称 ‘plate_wh_03_8_三角圆弧’ 转换成sprite名称 plate_wh_03_8.png
- name2 = tranformDName2SName(name1)
- plate_obj["name"] = name2
- else:
- hole1 = {}
- hole1["x"] = child["properties"][0]["value"][0]
- hole1["y"] = child["properties"][0]["value"][1]
- plate_obj["holes"].append(hole1)
- return plate_obj
- # 模板转JSON
- def readTemplate( name ):
- redfilename = "../关卡/关卡模板/" + name
- template_obj = {} # 长宽永远为640x720 左下角为坐标原点 盘子坐标都是盘子的中心坐标
- template_obj["name"] = name
- template_obj["plates"] = []
- with open(redfilename, 'rb') as fileobject:
- plist_root = plistlib.load(fileobject, fmt=plistlib.FMT_XML)
- children = plist_root['nodeGraph']['children'][0]["children"]
- for child in children:
- name1 = child["displayName"]+".red"
- plate_obj = readOnePlateWithHoles( name1 )
- plate_obj["x"] = child["properties"][0]["value"][0]
- plate_obj["y"] = child["properties"][0]["value"][1]
- template_obj["plates"].append(plate_obj)
- return template_obj
- # 写入JSON文件
- def writeJsonFile( obj, jsonbasename ):
- fullname = "../config/模板JSON/" + jsonbasename
- with open(fullname,'w') as fileobject:
- fileobject.write(json.dumps(obj,ensure_ascii=False))
- ## 程序入口 --------------------------------------
- #读取 关卡/关卡模板/ 下面全部red文件,转换成json写入模板json文件夹。
- for (root,dirs,files) in os.walk('../关卡/关卡模板',topdown=True):
- for fname in files:
- if( "模板" in fname and ".red" in fname ):
- template_name = fname
- out_name = template_name.replace(".red","_PnH.json")
- print("read ", template_name)
- template_obj = readTemplate(template_name)
- print("write ", out_name)
- writeJsonFile(template_obj, out_name)
- print("done")
|