[Add] Display some information about the star system.
This commit is contained in:
parent
0784ab1624
commit
c687e7a173
64
src/map.c
64
src/map.c
@ -22,6 +22,7 @@ extern int systems_nstack;
|
||||
|
||||
static void map_render(double bx, double by, double w, double h);
|
||||
static void map_close(char* str);
|
||||
static void map_update(void);
|
||||
|
||||
// Open the map window.
|
||||
void map_open(void) {
|
||||
@ -33,10 +34,28 @@ void map_open(void) {
|
||||
|
||||
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,
|
||||
"cstMap", 1, map_render);
|
||||
|
||||
window_addButton(map_wid, -20, 20, BUTTON_WIDTH, BUTTON_HEIGHT,
|
||||
"btnClose", "Close", map_close);
|
||||
|
||||
map_update();
|
||||
}
|
||||
|
||||
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.
|
||||
static void map_render(double bx, double by, double w, double h) {
|
||||
int i;
|
||||
@ -61,7 +123,7 @@ static void map_render(double bx, double by, double w, double h) {
|
||||
|
||||
COLOUR(cYellow);
|
||||
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);
|
||||
gl_drawCircleInRect(bx + systems_stack[i].pos.x - map_xpos + w/2,
|
||||
by + systems_stack[i].pos.y - map_ypos + h/2,
|
||||
|
Loading…
Reference in New Issue
Block a user