[Add] Actually chance system faction on planet addition/removal.
This commit is contained in:
parent
8b1b6e2af0
commit
9a31850ce7
23
src/space.c
23
src/space.c
@ -88,6 +88,7 @@ static int systems_load(void);
|
||||
static StarSystem* system_parse(StarSystem* system, const xmlNodePtr parent);
|
||||
static void systemJumps(const xmlNodePtr parent);
|
||||
/* Misc. */
|
||||
static void system_setFaction(StarSystem* sys);
|
||||
static void space_renderStars(const double dt);
|
||||
static void space_addFleet(Fleet* fleet, int init);
|
||||
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;
|
||||
systemname_stack[spacename_nstack-1] = sys->name;
|
||||
|
||||
system_setFaction(sys);
|
||||
|
||||
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.",
|
||||
planetname, sys->name);
|
||||
|
||||
system_setFaction(sys);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -878,6 +883,7 @@ static StarSystem* system_parse(StarSystem* sys, const xmlNodePtr parent) {
|
||||
|
||||
/* Clear memory for sane defaults. */
|
||||
memset(sys, 0, sizeof(StarSystem));
|
||||
sys->faction = 1;
|
||||
planet = NULL;
|
||||
size = 0;
|
||||
|
||||
@ -967,13 +973,24 @@ static StarSystem* system_parse(StarSystem* sys, const xmlNodePtr parent) {
|
||||
#undef MELEMENT
|
||||
|
||||
/* Post processing. */
|
||||
if(sys->nplanets > 0)
|
||||
/**< @todo Make dependant on overall planet faction. */
|
||||
sys->faction = sys->planets[0]->faction;
|
||||
system_setFaction(sys);
|
||||
|
||||
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. */
|
||||
static void system_parseJumps(const xmlNodePtr parent) {
|
||||
int i;
|
||||
|
Loading…
Reference in New Issue
Block a user