[Add] resedit: Load/save systems, Lacking some features.
This commit is contained in:
parent
046f7d8eb9
commit
5346dc540b
@ -9,7 +9,7 @@ def uniq(alist): # Fastest order preserving.
|
|||||||
for a in s:
|
for a in s:
|
||||||
alist.append(a)
|
alist.append(a)
|
||||||
|
|
||||||
def load(xmlfile, tag, has_name=True, do_array=None):
|
def load(xmlfile, tag, has_name=True, do_array=None, do_special=None):
|
||||||
dom = minidom.parse(xmlfile)
|
dom = minidom.parse(xmlfile)
|
||||||
xmlNodes = dom.getElementsByTagName(tag)
|
xmlNodes = dom.getElementsByTagName(tag)
|
||||||
|
|
||||||
@ -23,16 +23,32 @@ def load(xmlfile, tag, has_name=True, do_array=None):
|
|||||||
# Process the nodes.
|
# Process the nodes.
|
||||||
for bignode in filter(lambda x: x.nodeType==x.ELEMENT_NODE, xmlNode.childNodes):
|
for bignode in filter(lambda x: x.nodeType==x.ELEMENT_NODE, xmlNode.childNodes):
|
||||||
# Load the nodes.
|
# Load the nodes.
|
||||||
section = {}
|
|
||||||
|
# Figure out if we need an array or dictionary.
|
||||||
|
if bignode.nodeName in do_array:
|
||||||
array = []
|
array = []
|
||||||
|
use_array = True
|
||||||
|
else:
|
||||||
|
section = {}
|
||||||
|
use_array = False
|
||||||
|
|
||||||
for node in filter(lambda x: x.nodeType==x.ELEMENT_NODE,
|
for node in filter(lambda x: x.nodeType==x.ELEMENT_NODE,
|
||||||
bignode.childNodes):
|
bignode.childNodes):
|
||||||
if bignode.nodeName in do_array: # Big ugly hack to use list instead of array.
|
|
||||||
|
# Big ugly hack to use list instead of array.
|
||||||
|
if bignode.nodeName in do_array:
|
||||||
|
use_array = True
|
||||||
array.append(node.firstChild.data)
|
array.append(node.firstChild.data)
|
||||||
else: # Normal way (but will overwrite lists).
|
|
||||||
|
# Uglier hack for special things.
|
||||||
|
elif do_special != None and bignode.nodeName in do_special.keys():
|
||||||
|
section[node.firstChild.data] = node.attributes[do_special[bignode.nodeName]].value
|
||||||
|
|
||||||
|
# Normal way (but will overwrite lists).
|
||||||
|
else:
|
||||||
section[node.nodeName] = node.firstChild.data
|
section[node.nodeName] = node.firstChild.data
|
||||||
|
|
||||||
if len(array) > 0:
|
if use_array:
|
||||||
mdic[bignode.nodeName] = array
|
mdic[bignode.nodeName] = array
|
||||||
else:
|
else:
|
||||||
mdic[bignode.nodeName] = section
|
mdic[bignode.nodeName] = section
|
||||||
@ -43,7 +59,7 @@ def load(xmlfile, tag, has_name=True, do_array=None):
|
|||||||
dom.unlink()
|
dom.unlink()
|
||||||
return dictionary
|
return dictionary
|
||||||
|
|
||||||
def save(xmlfile, data, basetag, tag, has_name=True, do_array=None):
|
def save(xmlfile, data, basetag, tag, has_name=True, do_array=None, do_special=None):
|
||||||
"""
|
"""
|
||||||
do_array is a DICTIONARY, not a list here
|
do_array is a DICTIONARY, not a list here
|
||||||
"""
|
"""
|
||||||
@ -64,7 +80,16 @@ def save(xmlfile, data, basetag, tag, has_name=True, do_array=None):
|
|||||||
if do_array != None and key2 in do_array.keys():
|
if do_array != None and key2 in do_array.keys():
|
||||||
for text in value2:
|
for text in value2:
|
||||||
node2 = xml.createElement(do_array[key2])
|
node2 = xml.createElement(do_array[key2])
|
||||||
txtnode = xml.createTextNode(text)
|
txtnode = xml.createTextNode(str(text))
|
||||||
|
node2.appendChild(txtnode)
|
||||||
|
node.appendChild(node2)
|
||||||
|
|
||||||
|
# Check to see if we need to run the ULTRA_UBER_HACK.
|
||||||
|
elif do_special != None and key2 in do_special.keys():
|
||||||
|
for key3, value3 in value2.items():
|
||||||
|
node2 = xml.createElement(do_special[key2][0])
|
||||||
|
node2.setAttribute(do_special[key2][1], value3)
|
||||||
|
txtnode = xml.createTextNode(str(key3))
|
||||||
node2.appendChild(txtnode)
|
node2.appendChild(txtnode)
|
||||||
node.appendChild(node2)
|
node.appendChild(node2)
|
||||||
|
|
||||||
@ -72,7 +97,7 @@ def save(xmlfile, data, basetag, tag, has_name=True, do_array=None):
|
|||||||
else:
|
else:
|
||||||
for key3, value3 in value2.items():
|
for key3, value3 in value2.items():
|
||||||
node2 = xml.createElement(key3)
|
node2 = xml.createElement(key3)
|
||||||
txtnode = xml.createTextNode(value3)
|
txtnode = xml.createTextNode(str(value3))
|
||||||
node2.appendChild(txtnode)
|
node2.appendChild(txtnode)
|
||||||
node.appendChild(node2)
|
node.appendChild(node2)
|
||||||
|
|
||||||
|
Binary file not shown.
@ -21,12 +21,13 @@ class space:
|
|||||||
self.loadPlanets(self.planetsXML)
|
self.loadPlanets(self.planetsXML)
|
||||||
|
|
||||||
def loadSystems(self, xmlfile):
|
def loadSystems(self, xmlfile):
|
||||||
self.systems = data.load(xmlfile, "ssys", True, ["jumps","fleets","planets"])
|
self.systems = data.load(xmlfile, "ssys", True,
|
||||||
|
["jumps", "planets"], {"fleets":"chance"} )
|
||||||
|
|
||||||
|
|
||||||
def saveSystems(self, xmlfile):
|
def saveSystems(self, xmlfile):
|
||||||
data.save( "ssys.xml", self.systems, "Systems", "ssys", True,
|
data.save( "ssys.xml", self.systems, "Systems", "ssys", True,
|
||||||
{ "jumps":"jump", "fleets":"fleet", "planets":"planet" })
|
{"jumps":"jump","planets":"planet"}, {"fleets":["fleet","chance"]})
|
||||||
|
|
||||||
def loadPlanets(self, xmlfile):
|
def loadPlanets(self, xmlfile):
|
||||||
self.planets = data.load(xmlfile, "planet", True, ["commodities"])
|
self.planets = data.load(xmlfile, "planet", True, ["commodities"])
|
||||||
@ -383,7 +384,7 @@ class space:
|
|||||||
name = "untitled"
|
name = "untitled"
|
||||||
gen = { "asteroids":0, "interference":0, "stars":100 }
|
gen = { "asteroids":0, "interference":0, "stars":100 }
|
||||||
pos = { "x":0, "y":0 }
|
pos = { "x":0, "y":0 }
|
||||||
new_ssys = { "general":gen, "pos":pos, "jumps":[], "fleets":[], "planets":[] }
|
new_ssys = { "general":gen, "pos":pos, "jumps":[], "fleets":{}, "planets":[] }
|
||||||
self.systems[name] = new_ssys
|
self.systems[name] = new_ssys
|
||||||
self.__create_treSystems()
|
self.__create_treSystems()
|
||||||
self.__selSys(name)
|
self.__selSys(name)
|
||||||
|
Binary file not shown.
Loading…
Reference in New Issue
Block a user