From 5346dc540bf62f54d612962f2dd78a5808222e6f Mon Sep 17 00:00:00 2001 From: Allanis Date: Tue, 16 Apr 2013 12:47:59 +0100 Subject: [PATCH] [Add] resedit: Load/save systems, Lacking some features. --- utils/resedit/data.py | 47 ++++++++++++++++++++++++++++++---------- utils/resedit/data.pyc | Bin 2576 -> 2933 bytes utils/resedit/space.py | 9 ++++---- utils/resedit/space.pyc | Bin 13574 -> 13608 bytes 4 files changed, 41 insertions(+), 15 deletions(-) diff --git a/utils/resedit/data.py b/utils/resedit/data.py index 1277727..7703b8c 100644 --- a/utils/resedit/data.py +++ b/utils/resedit/data.py @@ -9,7 +9,7 @@ def uniq(alist): # Fastest order preserving. for a in s: 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) xmlNodes = dom.getElementsByTagName(tag) @@ -23,16 +23,32 @@ def load(xmlfile, tag, has_name=True, do_array=None): # Process the nodes. for bignode in filter(lambda x: x.nodeType==x.ELEMENT_NODE, xmlNode.childNodes): # Load the nodes. - section = {} - array = [] + + # Figure out if we need an array or dictionary. + if bignode.nodeName in do_array: + array = [] + use_array = True + else: + section = {} + use_array = False + for node in filter(lambda x: x.nodeType==x.ELEMENT_NODE, bignode.childNodes): - if bignode.nodeName in do_array: # Big ugly hack to use list instead of array. - array.append(node.firstChild.data) - else: # Normal way (but will overwrite lists). - section[node.nodeName] = node.firstChild.data + + # Big ugly hack to use list instead of array. + if bignode.nodeName in do_array: + use_array = True + array.append(node.firstChild.data) - if len(array) > 0: + # 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 + + if use_array: mdic[bignode.nodeName] = array else: mdic[bignode.nodeName] = section @@ -43,7 +59,7 @@ def load(xmlfile, tag, has_name=True, do_array=None): dom.unlink() 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 """ @@ -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(): for text in value2: 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) node.appendChild(node2) @@ -72,7 +97,7 @@ def save(xmlfile, data, basetag, tag, has_name=True, do_array=None): else: for key3, value3 in value2.items(): node2 = xml.createElement(key3) - txtnode = xml.createTextNode(value3) + txtnode = xml.createTextNode(str(value3)) node2.appendChild(txtnode) node.appendChild(node2) diff --git a/utils/resedit/data.pyc b/utils/resedit/data.pyc index 64d9ace835231b29793d7517cbff6ab37ad14a18..8b469d5b856e98bc8f5bea076259e5525e632853 100644 GIT binary patch literal 2933 zcmb_e&2k$>5boKPC0mv(J9bEv1Q3LS_=_l~pg6cfg6%+3i2`d;29s23tsUDduU7KT zD3PmHr{n@x@&M#W70<&BZahJ%AUF8BSBjnD5(q9$yQgRRZ@TB3b)S@rkALfY*{1Pd z4*xG>n42I0eu^TZuA(hPisueR4sAIUxb%={%O#y-A^&pp(50>XG0Buj3cR{e&%^1DQKM-Q&2ZYu7nDv@$K@hbJ2@H^DJB}0m7U@f zM|pTTPY)cZ{z0QzN@uB4pwy-PJSE@LE{vDRPSdDNaY+o%k)7e`@JC`RQe@T|TltPg zmFKPeI@V81)G1P0p$>MJvXcBvDVl?5-=*YDHFln(&Kx~}5FtPa1(&yFt5wb;ojbC# zasVR}qvM4Fv2-&nQ*ukeZ;I29#8wV=MEUr9lUI>*5lZhu3CCMu_X@&|I(JA@Di-@) zEp5o1;9zWE7_Jt#Sw%&r0NXw*&vuY48Sv{&l$C479u=h=k_NGKcXJ-R^PH=P@LrI-i$^!OcU|_Y+*d zC2+giu1C77V{1M=Z27xQoVMjad~1_%dtkK@jeCAH&~i<8!pQ1G_O$oHC}`r8&9n0s zeJ)-r!G892)sKw!TyUbZ6DG#4vZ7R%@1`)#UaW=L*M~+N4dN(__a$<{q+vILZ!MT% z{atan=bO9SATkMhcl{*s55*5Armx$fABh6MO!mM?7BJ@+gl!x4Vm~>YIN&vjqKh?; ziz_SJ;Vw6me`*()oq7HKpsFywhs$HeLz-@lG}2>0VQ|@W*E*CZ;!|Mt-vUcZl0k+IFK)6Izc0Vu13VhE2LXfa;D_5HbYQBESU#w&Jq^6&)=}_Ney~1*ll|L!qVwsrf}gXW~#d>fB+b0aC2h zCU>zGnwno*ySCc8cB^^C`{un`+_RAI+g{t#iN;>JXLwKX6~dS-kNtggD6BDneAT-8 z{>ROF8El4N>}Rdl9x!TI7Pk}aTRp}xxul`hT_d;;oVzlCGLI43tAg0MXKF1yv~ulT zh>T4vgKzdNas*R7e3}S;+)rQ{AmW|Dt~%cHM&g<*} zx^lI*c^?aacOIj&NHwrn7)X}|1qFDQy|*Vj;N41!j4{jN(hjYl6T>d_E*|M!wEP(E z^#2bmGX6b%3D(SI5XzODic@tMa~7Sds<^KKmloAY&?WFybxNJiW;v`1x8N+O1yzPl z)sbGAfbIo=vsBjO@_P(e9=}alx!z%J733%h;r`noX^r^kr z#PFxm^9qgrjThyqf`(lM_Y621S_)b^h3}h|7-&?HrD4#x%GD6j%M;nL?1m6+rsIGlOl#r<;LIvI(gbBDRS^_0kLzF@n2;RZhx$iFIvVk3iw!TC( zFy&qg>jaucup$dpS!lu?7G6e_K}c}|p^A-joLcJz($C)u2 z{1HGU6EA9=__KDR$mDN0U7u;)>Ta~Vok}*g^y&DveseTI$-dL{+nZgY1!#C)V>{l{ z?}~GA&L|EPLl`10a>5p4%D6Hja!Ov!DyC>MT#*JNNVVP`sYOR4Rp@Xml_I4|Ah;z+ zHj;x@t816Us)8uVq73V3ffP1bVQ*D_JlSJF(kEFV!P5O^3Jwu|fDtT~YKUM-1X73e z)zMKUw?w5b#e)=UAHi!Tyt+1zD0{e5XUa?5-pfIfS+pH^;GHjY$hz2E8|^ zcUKV9qydH>R+Y!fBN{mb&r75u;1L=A7xxcoOyX0c`^ O8J_0ioYhq9Q-1+PX3dfS diff --git a/utils/resedit/space.py b/utils/resedit/space.py index e4a40f3..e84e660 100644 --- a/utils/resedit/space.py +++ b/utils/resedit/space.py @@ -21,12 +21,13 @@ class space: self.loadPlanets(self.planetsXML) 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): - data.save("ssys.xml", self.systems, "Systems", "ssys", True, - { "jumps":"jump", "fleets":"fleet", "planets":"planet" }) + data.save( "ssys.xml", self.systems, "Systems", "ssys", True, + {"jumps":"jump","planets":"planet"}, {"fleets":["fleet","chance"]}) def loadPlanets(self, xmlfile): self.planets = data.load(xmlfile, "planet", True, ["commodities"]) @@ -383,7 +384,7 @@ class space: name = "untitled" gen = { "asteroids":0, "interference":0, "stars":100 } 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.__create_treSystems() self.__selSys(name) diff --git a/utils/resedit/space.pyc b/utils/resedit/space.pyc index eb4f3b58f8c89309d81394d4e13cde24fa91a69d..07c74f59a97a6781b498814689a12a86c9e7da9e 100644 GIT binary patch delta 2320 zcmah~TWnNS6uoDjbjmO->5F)~k4@3}+ASU=h=EuZnB=N&9l^^-xN54%lG5YOU`?gbTLj1Vv?(^7tuf5Mc z`@B7Vdpzj0#`rHP10d(dEWIvAM|5qc2$MjR%pc}qM^^|g~?ynM0t4 zuR!OdaY_v}SW&l?oUNEaU)Kky*eoz&Kz6kWrws8>Em!9-9lfk`oRY(-S$<%1C60 z8Rvbuyh^~|EBk6dT)qZix+7da=j*G*6?(t^dM}^P>sTIEz?a4?v=Pj4YLEgaHO3Ss z>};-}26Aw=4t6ByVva*-1M%UC=lFk*!X|}VD?5F$D z)uNjoMVALqg>nmpn&a)vZx_b90r08gj?6NJbQv&P@1xD_VuUU=$HWB=eq=+~mphUD ztz5JAs8F#?t!taEM8I`ebW)Dxru01+>IF;!Toy`l&{+Bp9Xz;yU((pyH}ry>Cxq0w zthjMhF2duiu;mWm69BDisq@IsX=BR~QAJl;E;X>rg=c`RmpO)Wt#x88ecW35zm2)J zrDA<~rtQ2}MH-GhU;WsD(Qs^i0~aYr$vI%ZJK^X6eGrogKG2Uap6?SMsv+MFvyeJr zWbCZvmQ0CO#0UCO*KVZyA#r>+Abkq>Oo8K3kUr`DrsPdbAxY{fF~-tzl&;2GTi#R? z+$Q90NMB+T^h{UJoRW3)d;A@dC?DUjMQr1m07dRG$E>NM=T zPHj(Oi8xZ;me?)&Dn{im&|!nqkmgOGZ7r<3GiuJkCADZU+_$7kNrr*<(I`yhDcW&X z*mSdFa2johyOOQmv)N8nDMYt>@oB*TKV0N~)5$uNeTatG2I xfD#}9NCE}`TLGPb4gii=ZUk%sbODeo`H=2!dP(>x(bcWGV!A7#y5gm-(!T^Kr*Z%Q delta 2357 zcmai0U2GIp6rS7tDRe2Nw3YsVtrqMorN0y?qGDTV5rN`u3z#V5x-%?OwmVDbZfS{7 zv#j`9`EWYdWZb%#&yEYcH0B=Li1zJAz6w;m{cSQxf| zgV7?x)_);Gg$!3a3mbOCSZhZOyIB9sGwk`s+G9~eFpCm0BOL>9&MsvMjDZ2%I!ea$ z&;&`j0B@LXV#1MSSXzje;39ECE~3*lo9WL;Ow`exh*OUfvJ`-gfvJ0U_tEueMAXv{ z(dqaSy=TsoteQRYKrah?O=1UA^c(Zv7oQGAAJPX@C1qn(`E*PciKhIu(xiwjE7&Qg zma-+$HJHa~OIfohqlvPkVj{%%Fbcp%nFj3FV6w|X_^H|O3;J;Q zSRV6iCoQ2Cv(JXTtQ@8#)jf+4gggXb>J|vo#p;-Nhb~v2ThF=D6>Z274JM1j03{^L z1UXb9#TgiLGv2tK$Q|0wkho62)?BRT2stDK%(0rdR-8C_n7*oACr0SE+7;2)u{ufR zbuWk;w7u4VmQ(AfQXf z8(M`$`G&YS#rgW8u{7)*%-qg*KC(~f7~g+%#dIMu_UkKMdx79@!w@=_%mD%xdZf@S zdPjzb2e)@v+j@qclXHY1X~2r_%>!9s%a?$2fT|CG9|ArCd<^)6h8y>ad32?5rj{Ap zpDJvc2|`+4AsXo0<+=aaSOG$on@q-AJ}KNY(x%QP8ps^x-a z30NRz!KE`u-^67LhxaaM%=MQuddfG+9#0&!(r(5H>P%7h%D&#YTiyfO3DOXUAesRHNC*?MShOa1r2<_4$j$AaxsOQ-x90x)cl0l#03M2 z+?)10Q@-R%3UGzj( QOAJ*ZgI#>X#G0mm0ag*VApigX