[Add] Actually chance system faction on planet addition/removal.

This commit is contained in:
Allanis 2013-12-11 22:57:48 +00:00
parent 8b1b6e2af0
commit 9a31850ce7

View File

@ -88,6 +88,7 @@ static int systems_load(void);
static StarSystem* system_parse(StarSystem* system, const xmlNodePtr parent); static StarSystem* system_parse(StarSystem* system, const xmlNodePtr parent);
static void systemJumps(const xmlNodePtr parent); static void systemJumps(const xmlNodePtr parent);
/* Misc. */ /* Misc. */
static void system_setFaction(StarSystem* sys);
static void space_renderStars(const double dt); static void space_renderStars(const double dt);
static void space_addFleet(Fleet* fleet, int init); static void space_addFleet(Fleet* fleet, int init);
static PlanetClass planetclass_get(const char a); static PlanetClass planetclass_get(const char a);
@ -764,6 +765,8 @@ int system_addPlanet(StarSystem* sys, char* planetname) {
planetname_stack[spacename_nstack-1] = planet->name; planetname_stack[spacename_nstack-1] = planet->name;
systemname_stack[spacename_nstack-1] = sys->name; systemname_stack[spacename_nstack-1] = sys->name;
system_setFaction(sys);
return 0; return 0;
} }
@ -816,6 +819,8 @@ int system_rmPlanet(StarSystem* sys, char* planetname) {
WARN("Unable to find planet '%s' and system '%s' in planet<->system stack.", WARN("Unable to find planet '%s' and system '%s' in planet<->system stack.",
planetname, sys->name); planetname, sys->name);
system_setFaction(sys);
return 0; return 0;
} }
@ -878,6 +883,7 @@ static StarSystem* system_parse(StarSystem* sys, const xmlNodePtr parent) {
/* Clear memory for sane defaults. */ /* Clear memory for sane defaults. */
memset(sys, 0, sizeof(StarSystem)); memset(sys, 0, sizeof(StarSystem));
sys->faction = 1;
planet = NULL; planet = NULL;
size = 0; size = 0;
@ -967,13 +973,24 @@ static StarSystem* system_parse(StarSystem* sys, const xmlNodePtr parent) {
#undef MELEMENT #undef MELEMENT
/* Post processing. */ /* Post processing. */
if(sys->nplanets > 0) system_setFaction(sys);
/**< @todo Make dependant on overall planet faction. */
sys->faction = sys->planets[0]->faction;
return 0; return 0;
} }
/**
* @fn
*/
static void system_setFaction(StarSystem* sys) {
int i;
sys->faction = -1;
for(i = 0; i < sys->nplanets; i++) /** @todo Handle multiple different factions. */
if(sys->planets[i]->faction > 0) {
sys->faction = sys->planets[i]->faction;
break;
}
}
/* Load the jumps into a system. */ /* Load the jumps into a system. */
static void system_parseJumps(const xmlNodePtr parent) { static void system_parseJumps(const xmlNodePtr parent) {
int i; int i;