From 62f31aa8c42ba39a8d0680616fc17a7f2579da21 Mon Sep 17 00:00:00 2001 From: Allanis Date: Sun, 20 Jul 2014 21:49:39 +0100 Subject: [PATCH] [Change] Cleaned up some code. --- src/gui.c | 2 +- src/lephisto.c | 2 +- src/map.c | 47 +++++++++++++++++++++++++++++------------------ src/mission.c | 4 ---- src/player.c | 15 ++++++--------- src/space.c | 11 ++++++++++- src/space.h | 1 + 7 files changed, 48 insertions(+), 34 deletions(-) diff --git a/src/gui.c b/src/gui.c index ae35f7b..50f2a03 100644 --- a/src/gui.c +++ b/src/gui.c @@ -355,7 +355,7 @@ void gui_render(double dt) { NULL, "%s", cur_system->planets[planet_target]->name); } else if(hyperspace_target >= 0) { /* Hyperspace target. */ - sys = &systems_stack[cur_system->jumps[hyperspace_target]]; + sys = system_getIndex(cur_system->jumps[hyperspace_target]); /* Determine if we have to play the "enter hyperspace range" sound. */ i = space_canHyperspace(player); diff --git a/src/lephisto.c b/src/lephisto.c index 6d53c2c..e31062d 100644 --- a/src/lephisto.c +++ b/src/lephisto.c @@ -529,7 +529,7 @@ static void render_all(void) { player_render(dt); spfx_render(SPFX_LAYER_FRONT); space_renderOverlay(dt); - gui_render(dt); + //gui_render(dt); display_fps(dt); /* Exception. */ } diff --git a/src/map.c b/src/map.c index 8ff5bfe..b594915 100644 --- a/src/map.c +++ b/src/map.c @@ -51,7 +51,9 @@ static void map_selectCur(void); */ void map_open(void) { unsigned int wid; + StarSystem* cur; + /* Destroy window if exitsts. */ wid = window_get(MAP_WDWNAME); if(wid > 0) { window_destroy(wid); @@ -69,6 +71,10 @@ void map_open(void) { if(map_selected == -1) map_selectCur(); + /* Get the selected system. */ + cur = system_getIndex(map_selected); + + /* Create the window. */ wid = window_create("Star Map", -1, -1, WINDOW_WIDTH, WINDOW_HEIGHT); /* @@ -95,7 +101,7 @@ void map_open(void) { /* System name. */ window_addText(wid, -20, -20, 100, 20, 1, "txtSysname", - &gl_defFont, &cDConsole, systems_stack[map_selected].name); + &gl_defFont, &cDConsole, cur->name); /* Faction. */ window_addText(wid, -20, -60, 90, 20, 0, "txtSFaction", @@ -160,6 +166,8 @@ static void map_update(unsigned int wid) { if(!map_isOpen()) return; + sys = system_getIndex(map_selected); + sys = &systems_stack[map_selected]; /* Right text. */ @@ -330,7 +338,7 @@ static int map_inPath(StarSystem* sys) { static void map_render(double bx, double by, double w, double h) { int i, j, n, m; double x, y, r, tx, ty; - StarSystem* sys; + StarSystem* sys, *jsys, *hsys; glColour* col; r = 5.; @@ -347,7 +355,7 @@ static void map_render(double bx, double by, double w, double h) { /* Render the star systems. */ for(i = 0; i < systems_nstack; i++) { - sys = &systems_stack[i]; + sys = system_getIndex(i); /* Check to make sure system is known of adjacent to known (or marked). */ if(!sys_isFlag(sys, SYSTEM_MARKED | SYSTEM_CMARKED) && !space_sysReachable(sys)) @@ -394,13 +402,16 @@ static void map_render(double bx, double by, double w, double h) { /* Cheaply use transparency instead of actually */ /* calculating from x to y the line must go. :) */ for(j = 0; j < sys->njumps; j++) { - n = map_inPath(&systems_stack[sys->jumps[j]]); + jsys = system_getIndex(sys->jumps[j]); + hsys = system_getIndex(cur_system->jumps[hyperspace_target]); + + n = map_inPath(jsys); m = map_inPath(sys); /* Set the colours, is the route the current one? */ if((hyperspace_target != -1) && (((cur_system == sys) && (j == hyperspace_target)) || - ((cur_system == &systems_stack[sys->jumps[j]]) && - (sys==&systems_stack[cur_system->jumps[hyperspace_target]])))) { + ((cur_system == jsys) && + (sys == hsys)))) { if(player->fuel < HYPERSPACE_FUEL) col = &cRed; else @@ -420,12 +431,12 @@ static void map_render(double bx, double by, double w, double h) { ty = y + sys->pos.y * map_zoom; glVertex2d(tx, ty); COLOUR(*col); - tx += (systems_stack[sys->jumps[j]].pos.x - sys->pos.x)/2. * map_zoom; - ty += (systems_stack[sys->jumps[j]].pos.y - sys->pos.y)/2. * map_zoom; + tx += (jsys->pos.x - sys->pos.x)/2. * map_zoom; + ty += (jsys->pos.y - sys->pos.y)/2. * map_zoom; glVertex2d(tx, ty); ACOLOUR(*col, 0.); - tx = x + systems_stack[sys->jumps[j]].pos.x * map_zoom; - ty = y + systems_stack[sys->jumps[j]].pos.y * map_zoom; + tx = x + jsys->pos.x * map_zoom; + ty = y + jsys->pos.y * map_zoom; glVertex2d(tx, ty); glEnd(); } @@ -433,7 +444,7 @@ static void map_render(double bx, double by, double w, double h) { } /* Selected planet. */ if(map_selected != -1) { - sys = &systems_stack[map_selected]; + sys = system_getIndex(map_selected); COLOUR(cRed); gl_drawCircleInRect(x + sys->pos.x*map_zoom, y + sys->pos.y*map_zoom, r+3., bx, by, w, h); @@ -461,7 +472,7 @@ static void map_mouse(unsigned int wid, SDL_Event* event, double mx, double my) /* Selecting star system. */ else { for(i = 0; i < systems_nstack; i++) { - sys = &systems_stack[i]; + sys = system_getIndex(i); /* Must be reachable. */ if(!space_sysReachable(sys)) @@ -482,9 +493,9 @@ static void map_mouse(unsigned int wid, SDL_Event* event, double mx, double my) if(map_npath == 0) hyperspace_target = -1; else - /* See if it a valid hyperspace target. */ + /* See if it is a valid hyperspace target. */ for(j = 0; j < cur_system->njumps; j++) { - if(map_path[0] == &systems_stack[cur_system->jumps[j]]) { + if(map_path[0] == system_getIndex(cur_system->jumps[j])) { planet_target = -1; /* Override planet_target. */ hyperspace_target = j; break; @@ -596,7 +607,7 @@ void map_jump(void) { /* Set the next jump to be the next in path. */ for(j = 0; j < cur_system->njumps; j++) { - if(map_path[0] == &systems_stack[cur_system->jumps[j]]) { + if(map_path[0] == system_getIndex(cur_system->jumps[j])) { planet_target = -1; /* Override planet_target. */ hyperspace_target = j; break; @@ -806,7 +817,7 @@ StarSystem** map_getJumpPath(int* njumps, char* sysstart, char* sysend, int igno cost = A_g(cur) + 1; for(i = 0; i < cur->sys->njumps; i++) { - sys = &systems_stack[cur->sys->jumps[i]]; + sys = system_getIndex(cur->sys->jumps[i]); /* Make sure it's reachable. */ if(!ignore_known && (!sys_isKnown(sys) && !space_sysReachable(esys))) @@ -875,7 +886,7 @@ int map_map(char* targ_sys, int r) { /* Check it's jumps. */ for(i = 0; i < sys->njumps; i++) { - jsys = &systems_stack[cur->sys->jumps[i]]; + jsys = system_getIndex(cur->sys->jumps[i]); /* System has already been parsed or is too deep. */ if((A_in(closed, jsys) != NULL) || (dep+1 > r)) @@ -919,7 +930,7 @@ int map_isMapped(char* targ_sys, int r) { /* Check it's jumps. */ for(i = 0; i < sys->njumps; i++) { - jsys = &systems_stack[cur->sys->jumps[i]]; + jsys = system_getIndex(cur->sys->jumps[i]); /* System has already been parsed or is too deep. */ if((A_in(closed, jsys) != NULL) || (dep+1 > r)) diff --git a/src/mission.c b/src/mission.c index 595e62d..4ced89d 100644 --- a/src/mission.c +++ b/src/mission.c @@ -32,10 +32,6 @@ Mission player_missions[MISSION_MAX]; static MissionData* mission_stack = NULL; /* Unmuteable after creation. */ static int mission_nstack = 0; -/* External space stack. */ -extern StarSystem* systems_stack; -extern int systems_nstack; - /* Static. */ static unsigned int mission_genID(void); static int mission_init(Mission* mission, MissionData* misn, int load); diff --git a/src/player.c b/src/player.c index 23f09e9..b80707b 100644 --- a/src/player.c +++ b/src/player.c @@ -101,9 +101,6 @@ static int missions_ndone = 0; /**< Number of completed missions. */ extern Pilot** pilot_stack; extern int pilot_nstack; -/* Stuff for autonav etc. */ -extern StarSystem* systems_stack; - /* Map stuff for autonav. */ extern int map_npath; @@ -1016,7 +1013,7 @@ void player_targetHyperspace(void) { if(hyperspace_target == -1) map_select(NULL); else - map_select(&systems_stack[cur_system->jumps[hyperspace_target]]); + map_select(system_getIndex(cur_system->jumps[hyperspace_target])); } } @@ -1069,7 +1066,7 @@ void player_brokeHyperspace(void) { ltime_inc(RNG(tl, th)); /* Enter the new system. */ - space_init(systems_stack[cur_system->jumps[hyperspace_target]].name); + space_init(system_getIndex(cur_system->jumps[hyperspace_target])->name); /* Set position, pilot_update will handle the lowering of velocity. */ d = RNGF()*(HYPERSPACE_ENTER_MAX-HYPERSPACE_ENTER_MIN) + HYPERSPACE_ENTER_MIN; @@ -1107,10 +1104,10 @@ void player_brokeHyperspace(void) { */ double player_faceHyperspace(void) { double a; - a = ANGLE(systems_stack[cur_system->jumps[hyperspace_target]].pos.x - - cur_system->pos.x, - systems_stack[cur_system->jumps[hyperspace_target]].pos.y - - cur_system->pos.y); + StarSystem* sys; + + sys = system_getIndex(cur_system->jumps[hyperspace_target]); + a = ANGLE(sys->pos.x - cur_system->pos.x, sys->pos.y - cur_system->pos.y); return pilot_face(player, a); } diff --git a/src/space.c b/src/space.c index 5f809c4..2f7440c 100644 --- a/src/space.c +++ b/src/space.c @@ -374,7 +374,7 @@ int space_sysReachable(StarSystem* sys) { /* Check to see if it is adjacent to known. */ for(i = 0; i < sys->njumps; i++) - if(sys_isKnown(&systems_stack[sys->jumps[i]])) + if(sys_isKnown(system_getIndex(sys->jumps[i]))) return 1; return 0; } @@ -391,6 +391,15 @@ StarSystem* system_get(const char* sysname) { return NULL; } +/** + * @brief Get the system by its index. + * @param id Index to match. + * @return Systems matching index. + */ +StarSystem* system_getIndex(int id) { + return &systems_stack[id]; +} + /* Get the name of a system from a planetname. */ char* planet_getSystem(char* planetname) { int i; diff --git a/src/space.h b/src/space.h index 77d41e8..af0f159 100644 --- a/src/space.h +++ b/src/space.h @@ -168,6 +168,7 @@ void space_update(const double dt); /* Misc. */ StarSystem* system_get(const char* sysname); +StarSystem* system_getIndex(int id); int space_canHyperspace(Pilot* p); int space_hyperspace(Pilot* p); int space_sysReachable(StarSystem* sys);