From a0fe785fe2cafe648c21b3cdcdf8996329f1afdd Mon Sep 17 00:00:00 2001 From: Allanis <allanis@saracraft.net> Date: Wed, 19 Jun 2013 21:55:13 +0100 Subject: [PATCH] [Add] <resedit> hacked together chance for multiple fleets with differenct chance of the same type. --- utils/resedit/data.py | 28 ++++++++++++++++------------ utils/resedit/space.py | 19 +++++++++++++------ 2 files changed, 29 insertions(+), 18 deletions(-) diff --git a/utils/resedit/data.py b/utils/resedit/data.py index c162c7e..02c3c7f 100644 --- a/utils/resedit/data.py +++ b/utils/resedit/data.py @@ -33,11 +33,12 @@ def load_Tag(node, do_array=None, do_special=None): i = 0 # Figure out if we need an array or dic. - if do_array != None and node.nodeName in do_array: - array = [] + array = [] + section = {} + if(do_array != None and node.nodeName in do_array) or \ + (do_special != None and node.nodeName in do_special): use_array = True else: - section = {} use_array = False for child in filter(lambda x: x.nodeType == x.ELEMENT_NODE, node.childNodes): @@ -50,13 +51,14 @@ def load_Tag(node, do_array=None, do_special=None): section[child.nodeName] = children # Big ugly hack to use list instead of array. - elif use_array: + elif use_array and node.nodeName in do_array: array.append(child.firstChild.data) # Uglier hack for special things. - elif do_special != None and node.nodeName in do_special.keys(): + elif use_array and do_special != None and node.nodeName in do_special.keys(): section[child.firstChild.data] = \ child.attributes[do_special[node.nodeName]].value + array.append(section) elif n > 0: section[child.nodeName] = children @@ -111,13 +113,15 @@ def save_Tag(xml, parent, data, do_array=None, do_special=None): # Check see if we need to run the ULTRA UBER HACK! elif do_special != None and key in do_special.keys(): - for key2, value2 in value.items(): - node2 = xml.createElement(do_special[key][0]) - node2.setAttribute(do_special[key][1], value2) - txtnode = xml.createTextNode(str(key2)) - node2.appendChild(txtnode) - node.appendChild(node2) - + for item in value: + for key2, value2 in item.items(): # Should only be one member. + node2 = xml.createElement(do_special[key][0]) + node2.setAttribute(do_special[key][1], value2) + txtnode = xml.createTextNode(str(key2)) + node2.appendChild(txtnode) + node.appendChild(node2) + + elif isinstance(value, dict): save_Tag(xml, node, value, do_array, do_special) diff --git a/utils/resedit/space.py b/utils/resedit/space.py index 5f32667..fab4aa6 100644 --- a/utils/resedit/space.py +++ b/utils/resedit/space.py @@ -241,8 +241,9 @@ class Space: # Load fleets. fleets = gtk.ListStore(str, int) - for fleet, chance in system["fleets"].items(): - treenode = fleets.append([fleet, int(chance)]) + for item in system["fleets"]: + for fleet, chance in item.items(): + treenode = fleets.append([fleet, int(chance)]) wgt = self.__swidget("treFleets") if wgt.get_column(0): wgt.remove_column(wgt.get_column(0)) @@ -644,20 +645,26 @@ class Space: iter = tree.get_selection().get_selected()[1] except: return "" - return model.get_value(iter, 0) + return model.get_value(iter, 0), mode.get_value(iter, 1) def __fleet_add(self, wgt=None, event=None): fleet = self.__swidget("comFleets").get_active_text() value = self.__swidget("spiFleets").get_value_as_int() if fleet != "None" and value > 0: - self.systems[self.cur_system]["fleets"][fleet] = str(value) + self.systems[self.cur_system]["fleets"].append({fleet:str(value)}) self.__supdate() def __fleet_rm(self, wgt=None, event=None): - sel = self.__fleet_sel() + sel, chance = self.__fleet_sel() if sel is "": return - del self.systems[self.cur_system]["fleets"][sel] + i = 0 + for item in self.systems[self.cur_system]["fleets"]: + for key, value in item.items(): + if key == sel and value == chance: + self.systems[self.cur_system]["fleets"].pop(i) + i = i+1 + print self.systems[self.cur_system]["fleets"] self.__supdate() """