[Add] Use flags now for systems to allow missions to mark them.
This commit is contained in:
parent
6c3d96ba51
commit
700e47cd57
16
src/map.c
16
src/map.c
@ -171,18 +171,12 @@ static void map_render(double bx, double by, double w, double h) {
|
|||||||
for(i = 0; i < systems_nstack; i++) {
|
for(i = 0; i < systems_nstack; i++) {
|
||||||
sys = &systems_stack[i];
|
sys = &systems_stack[i];
|
||||||
|
|
||||||
/* Check ot make sure system is known of adjacent to known. */
|
/* Check to make sure system is known of adjacent to known. */
|
||||||
if(!space_sysReachable(sys)) {
|
if(!space_sysReachable(sys)) continue;
|
||||||
for(j = 0; j < sys->njumps; j++)
|
|
||||||
if(systems_stack[sys->jumps[j]].known == 1)
|
|
||||||
break;
|
|
||||||
if(j == sys->njumps) /* None found. */
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* System Colours. */
|
/* System Colours. */
|
||||||
if(sys == cur_system) COLOUR(cRadar_targ);
|
if(sys == cur_system) COLOUR(cRadar_targ);
|
||||||
else if((sys->known == 0) || (sys->nplanets==0)) COLOUR(cInert);
|
else if(!sys_isKnown(sys) || (sys->nplanets==0)) COLOUR(cInert);
|
||||||
else if(areEnemies(player->faction, sys->faction)) COLOUR(cRed);
|
else if(areEnemies(player->faction, sys->faction)) COLOUR(cRed);
|
||||||
else COLOUR(cYellow);
|
else COLOUR(cYellow);
|
||||||
|
|
||||||
@ -191,7 +185,7 @@ static void map_render(double bx, double by, double w, double h) {
|
|||||||
r, bx, by, w, h);
|
r, bx, by, w, h);
|
||||||
|
|
||||||
/* Draw the system name. */
|
/* Draw the system name. */
|
||||||
if(sys->known != 0) {
|
if(sys_isKnown(sys)) {
|
||||||
tx = x + 7. + sys->pos.x * map_zoom;
|
tx = x + 7. + sys->pos.x * map_zoom;
|
||||||
ty = y - 5. + sys->pos.y * map_zoom;
|
ty = y - 5. + sys->pos.y * map_zoom;
|
||||||
gl_print(&gl_smallFont,
|
gl_print(&gl_smallFont,
|
||||||
@ -199,7 +193,7 @@ static void map_render(double bx, double by, double w, double h) {
|
|||||||
&cWhite, sys->name);
|
&cWhite, sys->name);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(sys->known == 0) continue; /* We dont't draw hyperspace lines. */
|
if(!sys_isKnown(sys)) continue; /* We dont't draw hyperspace lines. */
|
||||||
|
|
||||||
/* Draw the hyperspace paths. */
|
/* Draw the hyperspace paths. */
|
||||||
glShadeModel(GL_SMOOTH);
|
glShadeModel(GL_SMOOTH);
|
||||||
|
@ -671,7 +671,7 @@ void player_render(void) {
|
|||||||
gl_printMid(&gl_smallFont, (int)gui.nav.w, gui.nav.x,
|
gl_printMid(&gl_smallFont, (int)gui.nav.w, gui.nav.x,
|
||||||
gui.nav.y - 10 - gl_smallFont.h,
|
gui.nav.y - 10 - gl_smallFont.h,
|
||||||
NULL, "%d - %s", pilot_getJumps(player),
|
NULL, "%d - %s", pilot_getJumps(player),
|
||||||
(sys->known == 0) ? "Unknown" : sys->name);
|
(sys_isKnown(sys)) ? sys->name : "Unknown");
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
/* No NAV target. */
|
/* No NAV target. */
|
||||||
|
18
src/space.c
18
src/space.c
@ -306,7 +306,7 @@ StarSystem** system_getJumpPath(int* njumps, char* sysstart, char* sysend) {
|
|||||||
esys = system_get(sysend); /* End. */
|
esys = system_get(sysend); /* End. */
|
||||||
|
|
||||||
/* System target must be known. */
|
/* System target must be known. */
|
||||||
if(esys->known == 0) {
|
if(!sys_isKnown(esys)) {
|
||||||
if(space_sysReachable(esys)) { /* Can we still reach it? */
|
if(space_sysReachable(esys)) { /* Can we still reach it? */
|
||||||
res = malloc(sizeof(StarSystem*));
|
res = malloc(sizeof(StarSystem*));
|
||||||
(*njumps) = 1;
|
(*njumps) = 1;
|
||||||
@ -332,7 +332,7 @@ StarSystem** system_getJumpPath(int* njumps, char* sysstart, char* sysend) {
|
|||||||
for(i = 0; i < cur->sys->njumps; i++) {
|
for(i = 0; i < cur->sys->njumps; i++) {
|
||||||
sys = &systems_stack[cur->sys->jumps[i]];
|
sys = &systems_stack[cur->sys->jumps[i]];
|
||||||
|
|
||||||
if(sys->known == 0) continue;
|
if(!sys_isKnown(sys)) continue;
|
||||||
|
|
||||||
neighbour = A_newNode(sys, NULL);
|
neighbour = A_newNode(sys, NULL);
|
||||||
|
|
||||||
@ -494,11 +494,11 @@ char* space_getRndPlanet(void) {
|
|||||||
int space_sysReachable(StarSystem* sys) {
|
int space_sysReachable(StarSystem* sys) {
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
if(sys->known != 0) return 1; /* It is known. */
|
if(sys_isKnown(sys)) return 1; /* It is known. */
|
||||||
|
|
||||||
/* Check to see if it is adjacent to known. */
|
/* Check to see if it is adjacent to known. */
|
||||||
for(i = 0; i < sys->njumps; i++)
|
for(i = 0; i < sys->njumps; i++)
|
||||||
if(systems_stack[sys->jumps[i]].known == 1)
|
if(sys_isKnown(&systems_stack[sys->jumps[i]]))
|
||||||
return 1;
|
return 1;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -647,8 +647,8 @@ void space_init(const char* sysname) {
|
|||||||
/* Start the spawn timer. */
|
/* Start the spawn timer. */
|
||||||
spawn_timer = SDL_GetTicks() + 120000./(float)(cur_system->nfleets+1);
|
spawn_timer = SDL_GetTicks() + 120000./(float)(cur_system->nfleets+1);
|
||||||
|
|
||||||
/* We know this system. */
|
/* We now know this system. */
|
||||||
cur_system->known = 1;
|
sys_setFlag(cur_system, SYSTEM_KNOWN);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Load the planets of name 'name'. */
|
/* Load the planets of name 'name'. */
|
||||||
@ -1148,7 +1148,7 @@ void space_exit(void) {
|
|||||||
void space_clearKnown(void) {
|
void space_clearKnown(void) {
|
||||||
int i;
|
int i;
|
||||||
for(i = 0; i < systems_nstack; i++)
|
for(i = 0; i < systems_nstack; i++)
|
||||||
systems_stack[i].known = 0;
|
sys_rmFlag(&systems_stack[i], SYSTEM_KNOWN);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Save what is needed to be saved for space. */
|
/* Save what is needed to be saved for space. */
|
||||||
@ -1158,7 +1158,7 @@ int space_sysSave(xmlTextWriterPtr writer) {
|
|||||||
xmlw_startElem(writer, "space");
|
xmlw_startElem(writer, "space");
|
||||||
|
|
||||||
for(i = 0; i < systems_nstack; i++) {
|
for(i = 0; i < systems_nstack; i++) {
|
||||||
if(systems_stack[i].known == 0) continue; /* Not Known */
|
if(!sys_isKnown(&systems_stack[i])) continue; /* Not known. */
|
||||||
|
|
||||||
xmlw_elem(writer, "known", "%s", systems_stack[i].name);
|
xmlw_elem(writer, "known", "%s", systems_stack[i].name);
|
||||||
}
|
}
|
||||||
@ -1181,7 +1181,7 @@ int space_sysLoad(xmlNodePtr parent) {
|
|||||||
do {
|
do {
|
||||||
if(xml_isNode(cur, "known")) {
|
if(xml_isNode(cur, "known")) {
|
||||||
sys = system_get(xml_get(cur));
|
sys = system_get(xml_get(cur));
|
||||||
sys->known = 1;
|
sys_setFlag(sys, SYSTEM_KNOWN);
|
||||||
}
|
}
|
||||||
} while(xml_nextNode(cur));
|
} while(xml_nextNode(cur));
|
||||||
}
|
}
|
||||||
|
10
src/space.h
10
src/space.h
@ -70,6 +70,14 @@ typedef struct Planet_ {
|
|||||||
glTexture* gfx_exterior; /* Graphics in the exterior. */
|
glTexture* gfx_exterior; /* Graphics in the exterior. */
|
||||||
} Planet;
|
} Planet;
|
||||||
|
|
||||||
|
/* Star system flags. */
|
||||||
|
#define SYSTEM_KNOWN (1<<0)
|
||||||
|
#define SYSTEM_MARKED (1<<1)
|
||||||
|
#define sys_isFlag(s,f) ((s)->flags & (f))
|
||||||
|
#define sys_setFlag(s,f) if(!sys_isFlag(s,f)) (s)->flags |= (f)
|
||||||
|
#define sys_rmFlag(s,f) if(sys_isFlag(s,f)) (s)->flags ^= (f)
|
||||||
|
#define sys_isKnown(s) ((s)->flags & SYSTEM_KNOWN)
|
||||||
|
|
||||||
/* Star systems. */
|
/* Star systems. */
|
||||||
typedef struct SystemFleet_ {
|
typedef struct SystemFleet_ {
|
||||||
Fleet* fleet; /* Fleet to appear. */
|
Fleet* fleet; /* Fleet to appear. */
|
||||||
@ -93,7 +101,7 @@ typedef struct StarSystem_ {
|
|||||||
int* jumps; /* Adjacent star system index number. */
|
int* jumps; /* Adjacent star system index number. */
|
||||||
int njumps; /* Number of adjacent jumps. */
|
int njumps; /* Number of adjacent jumps. */
|
||||||
|
|
||||||
int known; /* Known by player? */
|
unsigned int flags; /* Flags for system properties. */
|
||||||
} StarSystem;
|
} StarSystem;
|
||||||
|
|
||||||
extern StarSystem* cur_system; /* Current star system. */
|
extern StarSystem* cur_system; /* Current star system. */
|
||||||
|
Loading…
Reference in New Issue
Block a user