diff --git a/src/map.c b/src/map.c index 93c7faa..1c40f0f 100644 --- a/src/map.c +++ b/src/map.c @@ -79,6 +79,9 @@ void map_open(void) { * Planets: * $Planet1, $Planet2, ... * + * Services: + * $Services + * * ... * * [Close] @@ -96,17 +99,24 @@ void map_open(void) { &gl_smallFont, &cBlack, NULL); /* Standing. */ - window_addText(map_wid, -20, -110, 90, 20, 0, "txtSStanding", + window_addText(map_wid, -20, -100, 90, 20, 0, "txtSStanding", &gl_smallFont, &cDConsole, "Standing:"); - window_addText(map_wid, -20, -110-gl_smallFont.h-5, 80, 100, 0, "txtStanding", + window_addText(map_wid, -20, -100-gl_smallFont.h-5, 80, 100, 0, "txtStanding", &gl_smallFont, &cBlack, NULL); /* Planets. */ - window_addText(map_wid, -20, -150, 90, 20, 0, "txtSPlanets", + window_addText(map_wid, -20, -140, 90, 20, 0, "txtSPlanets", &gl_smallFont, &cDConsole, "Planets:"); - window_addText(map_wid, -20, -150-gl_smallFont.h-5, 80, 100, 0, "txtPlanets", + window_addText(map_wid, -20, -140-gl_smallFont.h-5, 80, 100, 0, "txtPlanets", + &gl_smallFont, &cBlack, NULL); + + /* Services. */ + window_addText(map_wid, -20, -180, 90, 20, 0, "txtSServices", + &gl_smallFont, &cDConsole, "Services:"); + + window_addText(map_wid, -20, -180-gl_smallFont.h-5, 80, 100, 0, "txtServices", &gl_smallFont, &cBlack, NULL); /* Close button. */ @@ -143,16 +153,23 @@ static void map_close(char* str) { static void map_update(void) { int i; StarSystem* sys; - int f, standing, nstanding; + int f, y, h, standing, nstanding; + unsigned int services; char buf[128]; sys = &systems_stack[map_selected]; + /* Right text. */ if(!sys_isKnown(sys)) { /* System isn't known. Erase all. */ - window_modifyText(map_wid, "txtSysname", "Unknown"); - window_modifyText(map_wid, "txtFaction", "Unknown"); - window_modifyText(map_wid, "txtStanding", "Unknown"); - window_modifyText(map_wid, "txtPlanets", "Unknown"); + window_modifyText(map_wid, "txtSysname", "Unknown"); + window_modifyText(map_wid, "txtFaction", "Unknown"); + window_modifyText(map_wid, "txtStanding", "Unknown"); + window_modifyText(map_wid, "txtPlanets", "Unknown"); + window_moveWidget(map_wid, "txtSServices", -20, -180); + window_moveWidget(map_wid, "txtServices", -20, -180-gl_smallFont.h-5); + window_modifyText(map_wid, "txtServices", "Unknown"); + window_modifyText(map_wid, "txtSystemStatus", NULL); + return; } @@ -202,6 +219,24 @@ static void map_update(void) { window_modifyText(map_wid, "txtPlanets", buf); } + /* Get the services. */ + h = gl_printHeight(&gl_smallFont, 90, buf); + y = -180 - (h - gl_smallFont.h); + window_moveWidget(map_wid, "txtSServices", -20, y); + y -= gl_smallFont.h+5; + window_moveWidget(map_wid, "txtServices", -20, y); + services = 0; + for(i = 0; i < sys->nplanets; i++) + services |= sys->planets[i].services; + buf[0] = '\0'; + if(services & PLANET_SERVICE_COMMODITY) + strcat(buf, "Commodity\n"); + if(services & PLANET_SERVICE_OUTFITS) + strcat(buf, "Outfits\n"); + if(services & PLANET_SERVICE_SHIPYARD) + strcat(buf, "Shipyard\n"); + window_modifyText(map_wid, "txtServices", buf); + /* System status. */ buf[0] = '\0'; if(sys->nebu_density > 0.) { /* Has nebulae. */