[Add] Display some information about the star system.

This commit is contained in:
Allanis 2013-03-09 23:28:42 +00:00
parent 0784ab1624
commit c687e7a173

View File

@ -22,6 +22,7 @@ extern int systems_nstack;
static void map_render(double bx, double by, double w, double h); static void map_render(double bx, double by, double w, double h);
static void map_close(char* str); static void map_close(char* str);
static void map_update(void);
// Open the map window. // Open the map window.
void map_open(void) { void map_open(void) {
@ -33,10 +34,28 @@ void map_open(void) {
map_wid = window_create("Star Map", -1, -1, MAP_WIDTH, MAP_HEIGHT); map_wid = window_create("Star Map", -1, -1, MAP_WIDTH, MAP_HEIGHT);
window_addText(map_wid, -20, -20, 100, 20, 1, "txtSysname",
&gl_defFont, &cDConsole, systems_stack[map_selected].name);
window_addText(map_wid, -20, -60, 90, 20, 0, "txtSFaction",
&gl_smallFont, &cDConsole, "Faction:");
window_addText(map_wid, -20, -60-gl_smallFont.h-5, 80, 100, 0, "txtFaction",
&gl_smallFont, &cBlack, NULL);
window_addText(map_wid, -20, -110, 90, 20, 0, "txtSPlanets",
&gl_smallFont, &cDConsole, "Planets:");
window_addText(map_wid, -20, -110-gl_smallFont.h-5, 80, 100, 0, "txtPlanets",
&gl_smallFont, &cBlack, NULL);
window_addCust(map_wid, 20, 20, MAP_WIDTH - 150, MAP_HEIGHT - 60, window_addCust(map_wid, 20, 20, MAP_WIDTH - 150, MAP_HEIGHT - 60,
"cstMap", 1, map_render); "cstMap", 1, map_render);
window_addButton(map_wid, -20, 20, BUTTON_WIDTH, BUTTON_HEIGHT, window_addButton(map_wid, -20, 20, BUTTON_WIDTH, BUTTON_HEIGHT,
"btnClose", "Close", map_close); "btnClose", "Close", map_close);
map_update();
} }
static void map_close(char* str) { static void map_close(char* str) {
@ -47,6 +66,49 @@ static void map_close(char* str) {
} }
} }
static void map_update(void) {
int i;
StarSystem* sys;
Faction* f;
char buf[100];
sys = &systems_stack[map_selected];
window_modifyText(map_wid, "txtSysname", sys->name);
if(sys->nplanets == 0)
// No planets -> no factions.
snprintf(buf, 100, "NA");
else {
f = NULL;
for(i = 0; i < sys->nplanets; i++) {
if(f == NULL)
f = sys->planets[i].faction;
else if(f != sys->planets[i].faction) {
// TODO: more verbosity.
snprintf(buf, 100, "Multiple");
break;
}
}
if(i == sys->nplanets)
// Saw them all, and all the same.
snprintf(buf, 100, "%s", f->name);
}
window_modifyText(map_wid, "txtFaction", buf);
buf[0] = '\0';
if(sys->nplanets == 0)
snprintf(buf, 100, "None");
else {
for(i = 0; i < sys->nplanets; i++) {
strcat(buf, sys->planets[i].name);
strcat(buf, "\n");
}
}
window_modifyText(map_wid, "txtPlanets", buf);
}
// Render the map as a custom widget. // Render the map as a custom widget.
static void map_render(double bx, double by, double w, double h) { static void map_render(double bx, double by, double w, double h) {
int i; int i;
@ -61,7 +123,7 @@ static void map_render(double bx, double by, double w, double h) {
COLOUR(cYellow); COLOUR(cYellow);
for(i = 0; i < systems_nstack; i++) { for(i = 0; i < systems_nstack; i++) {
if(i == map_selected) COLOUR(cRadar_targ); if(&systems_stack[i] == cur_system) COLOUR(cRadar_targ);
else COLOUR(cYellow); else COLOUR(cYellow);
gl_drawCircleInRect(bx + systems_stack[i].pos.x - map_xpos + w/2, gl_drawCircleInRect(bx + systems_stack[i].pos.x - map_xpos + w/2,
by + systems_stack[i].pos.y - map_ypos + h/2, by + systems_stack[i].pos.y - map_ypos + h/2,