[Add] Ships now have human readable class strings instead of numbers.
This commit is contained in:
parent
b748f0f18e
commit
c2d4f39a72
46
dat/ship.xml
46
dat/ship.xml
@ -4,7 +4,7 @@
|
||||
<GFX>llama</GFX>
|
||||
<GUI>minimal</GUI>
|
||||
<sound>engine</sound>
|
||||
<class>1</class>
|
||||
<class>civ light</class>
|
||||
<price>120000</price>
|
||||
<fabricator>Melendez Corp.</fabricator>
|
||||
<tech>2</tech>
|
||||
@ -37,7 +37,7 @@
|
||||
<GFX>hyena</GFX>
|
||||
<GUI>minimal</GUI>
|
||||
<sound>engine</sound>
|
||||
<class>1</class>
|
||||
<class>civ light</class>
|
||||
<price>180000</price>
|
||||
<fabricator>Aerosys</fabricator>
|
||||
<tech>2</tech>
|
||||
@ -70,7 +70,7 @@
|
||||
<GFX>pacifier</GFX>
|
||||
<GUI>minimal</GUI>
|
||||
<sound>engine</sound>
|
||||
<class>2</class>
|
||||
<class>civ medium</class>
|
||||
<price>1200000</price>
|
||||
<fabricator>Nexus</fabricator>
|
||||
<tech>8</tech>
|
||||
@ -106,7 +106,7 @@
|
||||
<GFX>pacifier</GFX>
|
||||
<GUI>minimal</GUI>
|
||||
<sound>engine</sound>
|
||||
<class>2</class>
|
||||
<class>mil medium</class>
|
||||
<price>12000000</price>
|
||||
<fabricator>Nexus</fabricator>
|
||||
<tech>9999</tech>
|
||||
@ -142,7 +142,7 @@
|
||||
<GFX>hawking</GFX>
|
||||
<GUI>minimal</GUI>
|
||||
<sound>engine</sound>
|
||||
<class>3</class>
|
||||
<class>civ heavy</class>
|
||||
<price>7500000</price>
|
||||
<fabricator>Nexus</fabricator>
|
||||
<tech>9</tech>
|
||||
@ -177,7 +177,7 @@
|
||||
<GFX target="hawking">hawking_empire</GFX>
|
||||
<GUI>minimal</GUI>
|
||||
<sound>engine</sound>
|
||||
<class>3</class>
|
||||
<class>mil heavy</class>
|
||||
<price>7500000</price>
|
||||
<fabricator>Nexus</fabricator>
|
||||
<tech>9999</tech>
|
||||
@ -212,7 +212,7 @@
|
||||
<GFX>lancelot</GFX>
|
||||
<GUI>minimal</GUI>
|
||||
<sound>engine</sound>
|
||||
<class>2</class>
|
||||
<class>civ medium</class>
|
||||
<price>500000</price>
|
||||
<fabricator>Nexus</fabricator>
|
||||
<tech>7</tech>
|
||||
@ -249,7 +249,7 @@
|
||||
<GFX target="lancelot">lancelot_empire</GFX>
|
||||
<GUI>minimal</GUI>
|
||||
<sound>engine</sound>
|
||||
<class>2</class>
|
||||
<class>mil medium</class>
|
||||
<price>500000</price>
|
||||
<fabricator>Nexus</fabricator>
|
||||
<tech>9999</tech>
|
||||
@ -285,7 +285,7 @@
|
||||
<GFX>mule</GFX>
|
||||
<GUI>minimal</GUI>
|
||||
<sound>engine</sound>
|
||||
<class>2</class>
|
||||
<class>civ heavy</class>
|
||||
<price>900000</price>
|
||||
<fabricator>Melendez Corp</fabricator>
|
||||
<tech>5</tech>
|
||||
@ -318,7 +318,7 @@
|
||||
<GFX>drone</GFX>
|
||||
<GUI>minimal</GUI>
|
||||
<sound>engine</sound>
|
||||
<class>7</class>
|
||||
<class>rob light</class>
|
||||
<price>300000</price>
|
||||
<fabricator>Robosys</fabricator>
|
||||
<tech>99</tech>
|
||||
@ -351,7 +351,7 @@
|
||||
<GFX>gawain</GFX>
|
||||
<GUI>minimal</GUI>
|
||||
<sound>engine</sound>
|
||||
<class>1</class>
|
||||
<class>civ light</class>
|
||||
<price>500000</price>
|
||||
<fabricator>Nexus</fabricator>
|
||||
<tech>11</tech>
|
||||
@ -384,7 +384,7 @@
|
||||
<GFX>goddard</GFX>
|
||||
<GUI>minimal</GUI>
|
||||
<sound>engine</sound>
|
||||
<class>3</class>
|
||||
<class>civ heavy</class>
|
||||
<price>11500000</price>
|
||||
<fabricator>House Goddard</fabricator>
|
||||
<tech>1001</tech>
|
||||
@ -420,7 +420,7 @@
|
||||
<GFX target="goddard">goddard_draktharr</GFX>
|
||||
<GUI>minimal</GUI>
|
||||
<sound>engine</sound>
|
||||
<class>3</class>
|
||||
<class>mil heavy</class>
|
||||
<price>11500000</price>
|
||||
<fabricator>House Goddard</fabricator>
|
||||
<tech>9999</tech>
|
||||
@ -455,7 +455,7 @@
|
||||
<GFX>admonisher</GFX>
|
||||
<GUI>minimal</GUI>
|
||||
<sound>engine</sound>
|
||||
<class>2</class>
|
||||
<class>civ medium</class>
|
||||
<price>900000</price>
|
||||
<fabricator>Nexus</fabricator>
|
||||
<tech>10</tech>
|
||||
@ -491,7 +491,7 @@
|
||||
<GFX target="admonisher">admonisher_pirate</GFX>
|
||||
<GUI>minimal</GUI>
|
||||
<sound>engine</sound>
|
||||
<class>2</class>
|
||||
<class>civ medium</class>
|
||||
<price>850000</price>
|
||||
<fabricator>Skull and Bones</fabricator>
|
||||
<tech>9009</tech>
|
||||
@ -527,7 +527,7 @@
|
||||
<GFX target="admonisher">admonisher_empire</GFX>
|
||||
<GUI>minimal</GUI>
|
||||
<sound>engine</sound>
|
||||
<class>2</class>
|
||||
<class>civ medium</class>
|
||||
<price>900000</price>
|
||||
<fabricator>Nexus</fabricator>
|
||||
<tech>9999</tech>
|
||||
@ -564,7 +564,7 @@
|
||||
<GFX>schroedinger</GFX>
|
||||
<GUI>minimal</GUI>
|
||||
<sound>engine</sound>
|
||||
<class>1</class>
|
||||
<class>civ light</class>
|
||||
<price>180000</price>
|
||||
<fabricator>Sirius Systems</fabricator>
|
||||
<tech>5</tech>
|
||||
@ -597,7 +597,7 @@
|
||||
<GFX>vendetta</GFX>
|
||||
<GUI>minimal</GUI>
|
||||
<sound>engine</sound>
|
||||
<class>1</class>
|
||||
<class>civ light</class>
|
||||
<price>400000</price>
|
||||
<fabricator>House Draktharr</fabricator>
|
||||
<tech>8</tech>
|
||||
@ -630,7 +630,7 @@
|
||||
<GFX target="vendetta">vendetta_draktharr</GFX>
|
||||
<GUI>minimal</GUI>
|
||||
<sound>engine</sound>
|
||||
<class>1</class>
|
||||
<class>mil light</class>
|
||||
<price>400000</price>
|
||||
<fabricator>House Draktharr</fabricator>
|
||||
<tech>9999</tech>
|
||||
@ -665,7 +665,7 @@
|
||||
<GFX target="vendetta">vendetta_pirate</GFX>
|
||||
<GUI>minimal</GUI>
|
||||
<sound>engine</sound>
|
||||
<class>1</class>
|
||||
<class>civ light</class>
|
||||
<price>450000</price>
|
||||
<fabricator>Skull and Bones</fabricator>
|
||||
<tech>9009</tech>
|
||||
@ -699,7 +699,7 @@
|
||||
<GFX>ancestor</GFX>
|
||||
<GUI>minimal</GUI>
|
||||
<sound>engine</sound>
|
||||
<class>1</class>
|
||||
<class>civ light</class>
|
||||
<price>600000</price>
|
||||
<fabricator>House Draktharr</fabricator>
|
||||
<tech>9</tech>
|
||||
@ -734,7 +734,7 @@
|
||||
<GFX target="ancestor">ancestor_draktharr</GFX>
|
||||
<GUI>minimal</GUI>
|
||||
<sound>engine</sound>
|
||||
<class>1</class>
|
||||
<class>mil light</class>
|
||||
<price>600000</price>
|
||||
<fabricator>House Draktharr</fabricator>
|
||||
<tech>9999</tech>
|
||||
@ -769,7 +769,7 @@
|
||||
<GFX target="ancestor">ancestor_pirate</GFX>
|
||||
<GUI>minimal</GUI>
|
||||
<sound>engine</sound>
|
||||
<class>1</class>
|
||||
<class>civ light</class>
|
||||
<price>550000</price>
|
||||
<fabricator>Skull and Bones</fabricator>
|
||||
<tech>9009</tech>
|
||||
|
103
src/ship.c
103
src/ship.c
@ -97,17 +97,82 @@ char** ship_getTech(int* n, const int* tech, const int techmax) {
|
||||
}
|
||||
|
||||
/* Get the ship's classname. */
|
||||
static char* ship_classes[] = {
|
||||
"NULL",
|
||||
"Civialian Light", "Civilian Medium", "Civilian Heavy"
|
||||
"Military Light", "Military Medium", "Military Heavy"
|
||||
"Robotic Light", "Robotic Medium", "Robotic Heavy"
|
||||
"Hybrid Light", "Hybrid Medium", "Hybrid Heavy"
|
||||
|
||||
};
|
||||
|
||||
char* ship_class(Ship* s) {
|
||||
return ship_classes[s->class];
|
||||
switch(s->class) {
|
||||
case SHIP_CLASS_NULL:
|
||||
return "NULL";
|
||||
/* Civilian */
|
||||
case SHIP_CLASS_CIV_LIGHT:
|
||||
return "Civilian Light";
|
||||
case SHIP_CLASS_CIV_MEDIUM:
|
||||
return "Civilian Medium";
|
||||
case SHIP_CLASS_CIV_HEAVY:
|
||||
return "Civilian Heavy";
|
||||
/* Military. */
|
||||
case SHIP_CLASS_MIL_LIGHT:
|
||||
return "Military Light";
|
||||
case SHIP_CLASS_MIL_MEDIUM:
|
||||
return "Military Medium";
|
||||
case SHIP_CLASS_MIL_HEAVY:
|
||||
return "Military Heavy";
|
||||
/* Robotic. */
|
||||
case SHIP_CLASS_ROB_LIGHT:
|
||||
return "Robotic Light";
|
||||
case SHIP_CLASS_ROB_MEDIUM:
|
||||
return "Robotic Medium";
|
||||
case SHIP_CLASS_ROB_HEAVY:
|
||||
return "Robotic Heavy";
|
||||
/* Hybrid. */
|
||||
case SHIP_CLASS_HYB_LIGHT:
|
||||
return "Hybrid Light";
|
||||
case SHIP_CLASS_HYB_MEDIUM:
|
||||
return "Hybrid Medium";
|
||||
case SHIP_CLASS_HYB_HEAVY:
|
||||
return "Hybrid Heavy";
|
||||
default:
|
||||
return "Unknown";
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @fn static ShipClass ship_classFromString(char* str)
|
||||
*
|
||||
* @brief Get the machine ship class identifier from a human readable string.
|
||||
* @param str String to extract ship class identifier from.
|
||||
*/
|
||||
static ShipClass ship_classFromString(char* str) {
|
||||
/* Civilian. */
|
||||
if(strcmp(str, "civ light")==0)
|
||||
return SHIP_CLASS_CIV_LIGHT;
|
||||
if(strcmp(str, "civ medium")==0)
|
||||
return SHIP_CLASS_CIV_MEDIUM;
|
||||
if(strcmp(str, "civ heavy")==0)
|
||||
return SHIP_CLASS_CIV_HEAVY;
|
||||
/* Military. */
|
||||
if(strcmp(str, "mil light")==0)
|
||||
return SHIP_CLASS_MIL_LIGHT;
|
||||
if(strcmp(str, "mil medium")==0)
|
||||
return SHIP_CLASS_MIL_MEDIUM;
|
||||
if(strcmp(str, "mil heavy")==0)
|
||||
return SHIP_CLASS_MIL_HEAVY;
|
||||
/* Robotic. */
|
||||
if(strcmp(str, "rob light")==0)
|
||||
return SHIP_CLASS_ROB_LIGHT;
|
||||
if(strcmp(str, "rob medium")==0)
|
||||
return SHIP_CLASS_ROB_MEDIUM;
|
||||
if(strcmp(str, "rob heavy")==0)
|
||||
return SHIP_CLASS_ROB_HEAVY;
|
||||
/* Hybrid. */
|
||||
if(strcmp(str, "hyb light")==0)
|
||||
return SHIP_CLASS_HYB_LIGHT;
|
||||
if(strcmp(str, "hyb medium")==0)
|
||||
return SHIP_CLASS_HYB_MEDIUM;
|
||||
if(strcmp(str, "hyb heavy")==0)
|
||||
return SHIP_CLASS_HYB_HEAVY;
|
||||
|
||||
/* Unknown. */
|
||||
return SHIP_CLASS_NULL;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -165,9 +230,13 @@ static Ship* ship_parse(xmlNodePtr parent) {
|
||||
}
|
||||
}
|
||||
xmlr_strd(node, "GUI", tmp->gui);
|
||||
if(xml_isNode(node, "sound"))
|
||||
if(xml_isNode(node, "sound")) {
|
||||
tmp->sound = sound_get(xml_get(node));
|
||||
xmlr_int(node, "class", tmp->class);
|
||||
continue;
|
||||
}
|
||||
if(xml_isNode(node, "class")) {
|
||||
tmp->class = ship_classFromString(xml_get(node));
|
||||
}
|
||||
xmlr_int(node, "price", tmp->price);
|
||||
xmlr_int(node, "tech", tmp->tech);
|
||||
xmlr_strd(node, "fabricator", tmp->fabricator);
|
||||
@ -179,8 +248,9 @@ static Ship* ship_parse(xmlNodePtr parent) {
|
||||
xmlr_int(cur, "turn", tmp->turn);
|
||||
xmlr_int(cur, "speed", tmp->speed);
|
||||
} while(xml_nextNode(cur));
|
||||
continue;
|
||||
}
|
||||
else if(xml_isNode(node, "health")) {
|
||||
if(xml_isNode(node, "health")) {
|
||||
cur = node->children;
|
||||
do {
|
||||
xmlr_float(cur, "armour", tmp->armour);
|
||||
@ -193,8 +263,9 @@ static Ship* ship_parse(xmlNodePtr parent) {
|
||||
else if(xml_isNode(cur, "energy_regen"))
|
||||
tmp->energy_regen = (double)(xml_getInt(cur))/60.0;
|
||||
} while(xml_nextNode(cur));
|
||||
continue;
|
||||
}
|
||||
else if(xml_isNode(node, "characteristics")) {
|
||||
if(xml_isNode(node, "characteristics")) {
|
||||
cur = node->children;
|
||||
do {
|
||||
xmlr_int(cur, "crew", tmp->crew);
|
||||
@ -203,8 +274,9 @@ static Ship* ship_parse(xmlNodePtr parent) {
|
||||
xmlr_int(cur, "cap_weapon", tmp->cap_weapon);
|
||||
xmlr_int(cur, "cap_cargo", tmp->cap_cargo);
|
||||
} while(xml_nextNode(cur));
|
||||
continue;
|
||||
}
|
||||
else if(xml_isNode(node, "outfits")) {
|
||||
if(xml_isNode(node, "outfits")) {
|
||||
cur = node->children;
|
||||
do {
|
||||
if(xml_isNode(cur, "outfit")) {
|
||||
@ -225,6 +297,7 @@ static Ship* ship_parse(xmlNodePtr parent) {
|
||||
}
|
||||
}
|
||||
} while(xml_nextNode(cur));
|
||||
continue;
|
||||
}
|
||||
} while(xml_nextNode(node));
|
||||
|
||||
@ -234,7 +307,7 @@ static Ship* ship_parse(xmlNodePtr parent) {
|
||||
MELEMENT(tmp->name == NULL, "name");
|
||||
MELEMENT(tmp->gfx_space == NULL, "GFX");
|
||||
MELEMENT(tmp->gui == NULL, "GUI");
|
||||
MELEMENT(tmp->class==0, "class");
|
||||
MELEMENT(tmp->class==SHIP_CLASS_NULL, "class");
|
||||
MELEMENT(tmp->price==0, "price");
|
||||
MELEMENT(tmp->tech==0, "tech");
|
||||
MELEMENT(tmp->fabricator==0, "fabricator");
|
||||
|
35
src/ship.h
35
src/ship.h
@ -4,23 +4,28 @@
|
||||
#include "sound.h"
|
||||
|
||||
/* Target gfx dimensions. */
|
||||
#define SHIP_TARGET_W 128
|
||||
#define SHIP_TARGET_H 96
|
||||
#define SHIP_TARGET_W 128 /**< Ship target graphic width. */
|
||||
#define SHIP_TARGET_H 96 /**< Ship target graphic height. */
|
||||
|
||||
/**
|
||||
* @typedef ShipClass
|
||||
*
|
||||
* @breif Contains the different types of ships.
|
||||
*/
|
||||
typedef enum ShipClass_ {
|
||||
SHIP_CLASS_NULL = 0,
|
||||
SHIP_CLASS_CIV_LIGHT = 1,
|
||||
SHIP_CLASS_CIV_MEDIUM = 2,
|
||||
SHIP_CLASS_CIV_HEAVY = 3,
|
||||
SHIP_CLASS_MIL_LIGHT = 4,
|
||||
SHIP_CLASS_MIL_MEDIUM = 5,
|
||||
SHIP_CLASS_MIL_HEAVY = 6,
|
||||
SHIP_CLASS_ROB_LIGHT = 7,
|
||||
SHIP_CLASS_ROB_MEDIUM = 8,
|
||||
SHIP_CLASS_ROB_HEAVY = 9,
|
||||
SHIP_CLASS_HYB_LIGHT = 10,
|
||||
SHIP_CLASS_HYB_MEDIUM = 11,
|
||||
SHIP_CLASS_HYB_HEAVY = 12
|
||||
SHIP_CLASS_NULL,
|
||||
SHIP_CLASS_CIV_LIGHT,
|
||||
SHIP_CLASS_CIV_MEDIUM,
|
||||
SHIP_CLASS_CIV_HEAVY,
|
||||
SHIP_CLASS_MIL_LIGHT,
|
||||
SHIP_CLASS_MIL_MEDIUM,
|
||||
SHIP_CLASS_MIL_HEAVY,
|
||||
SHIP_CLASS_ROB_LIGHT,
|
||||
SHIP_CLASS_ROB_MEDIUM,
|
||||
SHIP_CLASS_ROB_HEAVY,
|
||||
SHIP_CLASS_HYB_LIGHT,
|
||||
SHIP_CLASS_HYB_MEDIUM,
|
||||
SHIP_CLASS_HYB_HEAVY
|
||||
} ShipClass;
|
||||
|
||||
/* Small wrapper for the outfits. */
|
||||
|
Loading…
Reference in New Issue
Block a user