[Change] Changed gui.xml to use a cleaner format.

This commit is contained in:
Allanis 2014-03-19 21:48:10 +00:00
parent 5ab3eafc4d
commit 8f96995c8f
2 changed files with 43 additions and 107 deletions

View File

@ -1,70 +1,21 @@
<?xml version="1.0" encoding="UTF-8"?>
<GUIs>
<gui gfx="minimal" name="minimal">
<offset>
<x>-65</x>
<y>0</y>
</offset>
<radar type="circle">
<w>70</w>
<x>72</x>
<y>72</y>
</radar>
<nav>
<x>40</x>
<y>151</y>
<w>112</w>
<h>42</h>
</nav>
<offset x="-65" y="0" />
<radar type="circle" w="70" x="72" y="72" />
<nav x="40" y="151" w="112" h="42" />
<health>
<shield>
<w>98</w>
<h>8</h>
<x>52</x>
<y>201</y>
</shield>
<armour>
<w>98</w>
<h>8</h>
<x>52</x>
<y>212</y>
</armour>
<energy>
<w>98</w>
<h>8</h>
<x>52</x>
<y>223</y>
</energy>
<shield w="98" h="8" x="52" y="201" />
<armour w="98" h="8" x="52" y="212" />
<energy w="98" h="8" x="52" y="223" />
</health>
<weapon>
<x>40</x>
<y>239</y>
<w>112</w>
<h>42</h>
</weapon>
<weapon x="40" y="239" w="112" h="42" />
<target>
<gfx>
<x>34</x>
<y>312</y>
</gfx>
<name>
<x>40</x>
<y>291</y>
</name>
<faction>
<x>40</x>
<y>304</y>
</faction>
<health>
<x>40</x>
<y>401</y>
</health>
<gfx x="34" y="312" />
<name x="40" y="291" />
<faction x="40" y="304" />
<health x="40" y="401" />
</target>
<misc>
<x>40</x>
<y>424</y>
<w>112</w>
<h>100</h>
</misc>
<misc x="40" y="424" w="112" h="100" />
</gui>
</GUIs>

View File

@ -1321,55 +1321,40 @@ int gui_load(const char* name) {
return 0;
}
static void rect_parse(const xmlNodePtr parent, double* x, double* y,
double* w, double* h) {
xmlNodePtr cur;
int param;
/**
* @brief Parse a parameter of the rect node.
*/
static void rect_parseParam(const xmlNodePtr parent, char* name, double* param) {
char* buf;
param = 0;
/* Get the attribute. */
xmlr_attr(parent, name, buf);
cur = parent->children;
/* Wants attribute. */
if(param != NULL) {
if(buf == NULL)
WARN("Node '%s' missing 'x' parameter.", parent->name);
else if(buf != NULL)
*param = atoi(buf);
}
/* Doesn't want it. */
else if(buf != NULL)
WARN("Node '%s' has superfluous 'x' parameter.", parent->name);
do {
if(xml_isNode(cur, "x")) {
if(x != NULL) {
*x = xml_getFloat(cur);
param |= (1<<0);
} else
WARN("Extra parameter 'x' found for GUI node '%s'", parent->name);
}
else if(xml_isNode(cur, "y")) {
if(y != NULL) {
*y = xml_getFloat(cur);
param |= (1<<1);
} else
WARN("Extra parameter 'y' found for GUI node '%s'", parent->name);
}
else if(xml_isNode(cur, "w")) {
if(w != NULL) {
*w = xml_getFloat(cur);
param |= (1<<2);
} else
WARN("Extra parameter 'w' found for GUI node '%s'", parent->name);
}
else if(xml_isNode(cur, "h")) {
if(h != NULL) {
*h = xml_getFloat(cur);
param |= (1<<3);
} else
WARN("Extra parameter 'h' found for GUI node '%s'", parent->name);
}
} while((cur = cur->next));
/* Clean up. */
if(buf != NULL)
free(buf);
}
/* Check to see if we got everything we asked for. */
if(x && !(param & (1<<0)))
WARN("Missing parameter 'x' for GUI node '%s'", parent->name);
else if(y && !(param & (1<<1)))
WARN("Missing parameter 'y' for GUI node '%s'", parent->name);
else if(w && !(param & (1<<2)))
WARN("Missing parameter 'w' for GUI node '%s'", parent->name);
else if(h && !(param & (1<<3)))
WARN("Missing parameter 'h' for GUI node '%s'", parent->name);
/**
* @brief Used to pull out a rect from an xml node.
*/
static void rect_parse(const xmlNodePtr parent,
double* x, double* y, double* w, double* h) {
rect_parseParam(parent, "w", w);
rect_parseParam(parent, "h", h);
rect_parseParam(parent, "x", x);
rect_parseParam(parent, "y", y);
}
/* Parse a gui node. */