diff --git a/src/game.c b/src/game.c index 0f435d5..29737d2 100644 --- a/src/game.c +++ b/src/game.c @@ -1826,24 +1826,24 @@ static void game_doHud() fontColor = FONT_YELLOW; else fontColor = FONT_WHITE; - screen_blitText(TS_TIME_T); + screen_blitTextInPlace(TS_TIME_T); sprintf(text, "%.2d:%.2d", engine.minutes, engine.seconds); gfx_createTextObject(TS_TIME, text, screen->w / 2 + 10, 21, fontColor); - screen_blitText(TS_TIME); + screen_blitTextInPlace(TS_TIME); } if (game.area != MISN_INTERCEPTION) { - screen_blitText(TS_OBJECTIVES_T); + screen_blitTextInPlace(TS_OBJECTIVES_T); sprintf(text, "%d", (mission.remainingObjectives1 + mission.remainingObjectives2)); gfx_createTextObject(TS_OBJECTIVES, text, screen->w - 55, 21, FONT_WHITE); - screen_blitText(TS_OBJECTIVES); + screen_blitTextInPlace(TS_OBJECTIVES); } - screen_blitText(TS_CASH_T); // cash + screen_blitTextInPlace(TS_CASH_T); // cash sprintf(text, "%.6d", game.cash); gfx_createTextObject(TS_CASH, text, 90, 21, FONT_WHITE); - screen_blitText(TS_CASH); + screen_blitTextInPlace(TS_CASH); if (game.difficulty == DIFFICULTY_ORIGINAL) { @@ -1877,12 +1877,12 @@ static void game_doHud() if (player.ammo[0] <= 25) fontColor = FONT_YELLOW; if (player.ammo[0] <= 10) fontColor = FONT_RED; } - screen_blitText(TS_PLASMA_T); + screen_blitTextInPlace(TS_PLASMA_T); sprintf(text, "%.3d", player.ammo[0]); gfx_createTextObject(TS_PLASMA, text, screen->w * 5 / 16 + 70, screen->h - 49, fontColor); - screen_blitText(TS_PLASMA); + screen_blitTextInPlace(TS_PLASMA); - screen_blitText(TS_AMMO_T); + screen_blitTextInPlace(TS_AMMO_T); if ((player.weaponType[1] != W_CHARGER) && (player.weaponType[1] != W_LASER)) { @@ -1892,7 +1892,7 @@ static void game_doHud() fontColor = FONT_WHITE; sprintf(text, "%.2d", player.ammo[1]); // rocket ammo gfx_createTextObject(TS_AMMO, text, screen->w / 2 + 80, screen->h - 49, fontColor); - screen_blitText(TS_AMMO); + screen_blitTextInPlace(TS_AMMO); } if (((player.weaponType[1] == W_CHARGER) || (player.weaponType[1] == W_LASER)) && (player.ammo[1] > 0)) @@ -1973,7 +1973,7 @@ static void game_doHud() if (gfx_textSprites[i].life > 0) { gfx_textSprites[i].y = screen->h - 75 - (i * 20); - screen_blitText(i); + screen_blitTextInPlace(i); gfx_textSprites[i].life--; if (gfx_textSprites[i].life == 0) @@ -2002,18 +2002,18 @@ static void game_doHud() { if (game.difficulty == DIFFICULTY_ORIGINAL) { - screen_blitText(TS_TARGET); + screen_blitTextInPlace(TS_TARGET); } else { if (engine.targetIndex == ALIEN_SID) - screen_blitText(TS_TARGET_SID); + screen_blitTextInPlace(TS_TARGET_SID); else if (engine.targetIndex == ALIEN_PHOEBE) - screen_blitText(TS_TARGET_PHOEBE); + screen_blitTextInPlace(TS_TARGET_PHOEBE); else if (engine.targetIndex == ALIEN_KLINE) - screen_blitText(TS_TARGET_KLINE); + screen_blitTextInPlace(TS_TARGET_KLINE); else - screen_blitText(TS_TARGET); + screen_blitTextInPlace(TS_TARGET); } bar.w = MAX(screen->w / 800, 1); @@ -2036,7 +2036,7 @@ static void game_doHud() } } - screen_blitText(TS_POWER); + screen_blitTextInPlace(TS_POWER); bar.w = screen->w / 32; bar.h = 12; @@ -2055,7 +2055,7 @@ static void game_doHud() bar.x += screen->w * 3 / 80; } - screen_blitText(TS_OUTPUT); + screen_blitTextInPlace(TS_OUTPUT); bar.w = screen->w / 32; bar.h = 12; @@ -2076,7 +2076,7 @@ static void game_doHud() bar.x += screen->w * 3 / 80; } - screen_blitText(TS_COOLER); + screen_blitTextInPlace(TS_COOLER); bar.w = screen->w / 32; bar.h = 12; @@ -2096,7 +2096,7 @@ static void game_doHud() bar.x += screen->w * 3 / 80; } - screen_blitText(TS_SHIELD); + screen_blitTextInPlace(TS_SHIELD); if (player.shield < 1) return; @@ -2540,7 +2540,7 @@ int game_mainLoop() if (engine.paused) { gfx_createTextObject(TS_PAUSED, "PAUSED", -1, screen->h / 2, FONT_WHITE); - screen_blitText(TS_PAUSED); + screen_blitTextInPlace(TS_PAUSED); renderer_update(); audio_pauseMusic(); diff --git a/src/intermission.c b/src/intermission.c index 2e171da..3840dad 100644 --- a/src/intermission.c +++ b/src/intermission.c @@ -699,7 +699,7 @@ static void intermission_showStatus(SDL_Surface *infoSurface) { gfx_textSprites[i].y -= speed; if ((gfx_textSprites[i].y > 80) && (gfx_textSprites[i].y < 70 + infoSurface->h)) - screen_blitText(i); + screen_blitTextInPlace(i); } if (gfx_textSprites[TS_STATUS_FOOTER - 1].y < 65) @@ -720,8 +720,8 @@ static void intermission_showStatus(SDL_Surface *infoSurface) screen_drawRect(x, infoSurface->h + 70, infoSurface->w, 20, 0x00, 0x00, 0x99); - screen_blitText(TS_STATUS_HEADER); - screen_blitText(TS_STATUS_FOOTER); + screen_blitTextInPlace(TS_STATUS_HEADER); + screen_blitTextInPlace(TS_STATUS_FOOTER); } static void intermission_createCommsSurface(SDL_Surface *comms) @@ -1449,7 +1449,7 @@ int intermission() engine.ssy /= 100; } - screen_blitText(TS_CURRENT_SYSTEM); + screen_blitTextInPlace(TS_CURRENT_SYSTEM); switch(section) { @@ -1504,9 +1504,9 @@ int intermission() gfx_createTextObject(TS_DEST_PLANET, string, screen->w - 250, screen->h - 120, FONT_WHITE); } - screen_blitText(TS_CURRENT_PLANET); + screen_blitTextInPlace(TS_CURRENT_PLANET); if (game.stationedPlanet != game.destinationPlanet) - screen_blitText(TS_DEST_PLANET); + screen_blitTextInPlace(TS_DEST_PLANET); break; case 2: @@ -1547,9 +1547,9 @@ int intermission() intermission_showSystem(orbit_pos, 0); screen_blit(intermission_planets[game.stationedPlanet].image, 150, screen->h - 90); - screen_blitText(TS_CURRENT_PLANET); + screen_blitTextInPlace(TS_CURRENT_PLANET); screen_blit(intermission_planets[game.destinationPlanet].image, screen->w - 150, screen->h - 90); - screen_blitText(TS_DEST_PLANET); + screen_blitTextInPlace(TS_DEST_PLANET); game.distanceCovered += distance * (screen->w - 350) / 450.; destRect.w = (int)game.distanceCovered; @@ -1606,9 +1606,9 @@ int intermission() (!intermission_planets[game.stationedPlanet].missionCompleted))) { if (game.stationedPlanet == game.destinationPlanet) - screen_blitText(TS_INFO_START_MISSION); + screen_blitTextInPlace(TS_INFO_START_MISSION); else - screen_blitText(TS_INFO_GOTO); + screen_blitTextInPlace(TS_INFO_GOTO); if ((engine.keyState[KEY_FIRE])) { @@ -1619,7 +1619,7 @@ int intermission() } else if (game_collision(engine.cursor_x + 13, engine.cursor_y + 13, 6, 6, x + w / 7, y, 32, 32)) { - screen_blitText(TS_INFO_MAP); + screen_blitTextInPlace(TS_INFO_MAP); if ((engine.keyState[KEY_FIRE])) { @@ -1630,7 +1630,7 @@ int intermission() } else if (game_collision(engine.cursor_x + 13, engine.cursor_y + 13, 6, 6, x + 2 * w / 7, y, 32, 32)) { - screen_blitText(TS_INFO_STATUS); + screen_blitTextInPlace(TS_INFO_STATUS); if ((engine.keyState[KEY_FIRE])) { @@ -1641,7 +1641,7 @@ int intermission() } else if (game_collision(engine.cursor_x + 13, engine.cursor_y + 13, 6, 6, x + 3 * w / 7, y, 32, 32)) { - screen_blitText(TS_INFO_SAVE_GAME); + screen_blitTextInPlace(TS_INFO_SAVE_GAME); if ((engine.keyState[KEY_FIRE])) { @@ -1652,7 +1652,7 @@ int intermission() } else if (game_collision(engine.cursor_x + 13, engine.cursor_y + 13, 6, 6, x + 4 * w / 7, y, 32, 32)) { - screen_blitText(TS_INFO_SHOP); + screen_blitTextInPlace(TS_INFO_SHOP); if ((engine.keyState[KEY_FIRE])) { @@ -1663,7 +1663,7 @@ int intermission() } else if (game_collision(engine.cursor_x + 13, engine.cursor_y + 13, 6, 6, x + 5 * w / 7, y, 32, 32)) { - screen_blitText(TS_INFO_COMMS); + screen_blitTextInPlace(TS_INFO_COMMS); if ((engine.keyState[KEY_FIRE])) { @@ -1675,7 +1675,7 @@ int intermission() } else if (game_collision(engine.cursor_x + 13, engine.cursor_y + 13, 6, 6, x + 6 * w / 7, y, 32, 32)) { - screen_blitText(TS_INFO_OPTIONS); + screen_blitTextInPlace(TS_INFO_OPTIONS); if ((engine.keyState[KEY_FIRE])) { @@ -1686,7 +1686,7 @@ int intermission() } else if (game_collision(engine.cursor_x + 13, engine.cursor_y + 13, 6, 6, x + w, y, 32, 32)) { - screen_blitText(TS_INFO_EXIT); + screen_blitTextInPlace(TS_INFO_EXIT); if ((engine.keyState[KEY_FIRE])) { diff --git a/src/screen.c b/src/screen.c index 89a3c56..e230dfe 100644 --- a/src/screen.c +++ b/src/screen.c @@ -36,7 +36,17 @@ void screen_blit(SDL_Surface *image, int x, int y) gfx_blit(image, x, y, screen); } -void screen_blitText(int i) +void screen_blitText(int i, int x, int y) +{ + if (x == -1) + x = (screen->w - gfx_textSprites[i].image->w) / 2; + + screen_blit(gfx_textSprites[i].image, + (x + (int)gfx_textSprites[i].x), (y +(int)gfx_textSprites[i].y)); +} + +// Legacy function; will be removed later +void screen_blitTextInPlace(int i) { screen_blit(gfx_textSprites[i].image, (int)gfx_textSprites[i].x, (int)gfx_textSprites[i].y); } diff --git a/src/screen.h b/src/screen.h index 5196739..c5407fc 100644 --- a/src/screen.h +++ b/src/screen.h @@ -30,7 +30,7 @@ extern LinkedRect *screen_bufferHead; extern LinkedRect *screen_bufferTail; void screen_blit(SDL_Surface *image, int x, int y); -void screen_blitText(int i); +void screen_blitTextInPlace(int i); int screen_renderString(const char *in, int x, int y, int fontColor); void screen_drawBackground(); void screen_addBuffer(int x, int y, int w, int h); diff --git a/src/title.c b/src/title.c index eea5623..486ccd2 100644 --- a/src/title.c +++ b/src/title.c @@ -41,24 +41,24 @@ along with this program. If not, see . static int showGameMenu(int continueSaveSlot) { - screen_blitText(TS_START_NEW_GAME); - screen_blitText(TS_LOAD_GAME); + screen_blitTextInPlace(TS_START_NEW_GAME); + screen_blitTextInPlace(TS_LOAD_GAME); if (continueSaveSlot != -1) { - screen_blitText(TS_CONTINUE_CURRENT_GAME); + screen_blitTextInPlace(TS_CONTINUE_CURRENT_GAME); } - screen_blitText(TS_OPTIONS); - screen_blitText(TS_CREDITS); + screen_blitTextInPlace(TS_OPTIONS); + screen_blitTextInPlace(TS_CREDITS); if (engine.cheat) { gfx_textSprites[TS_QUIT].y = screen->h / 3 + 170; - screen_blitText(TS_CHEAT_OPTIONS); + screen_blitTextInPlace(TS_CHEAT_OPTIONS); } else { gfx_textSprites[TS_QUIT].y = screen->h / 3 + 150; } - screen_blitText(TS_QUIT); + screen_blitTextInPlace(TS_QUIT); if (engine.cheat) return 7; @@ -75,11 +75,11 @@ static int showLoadMenu() rtn++; if (gfx_textSprites[i].image != NULL) { - screen_blitText(i); + screen_blitTextInPlace(i); gfx_textSprites[TS_BACK_TO_MAIN_MENU].y = gfx_textSprites[i].y + 40; } } - screen_blitText(TS_BACK_TO_MAIN_MENU); + screen_blitTextInPlace(TS_BACK_TO_MAIN_MENU); return rtn; } @@ -110,9 +110,9 @@ static int showDifficultyMenu() { gfx_textSprites[TS_BACK_TO_MAIN_MENU].y = screen->h / 3 + 110; - screen_blitText(TS_START_GAME); - screen_blitText(TS_DIFFICULTY); - screen_blitText(TS_BACK_TO_MAIN_MENU); + screen_blitTextInPlace(TS_START_GAME); + screen_blitTextInPlace(TS_DIFFICULTY); + screen_blitTextInPlace(TS_BACK_TO_MAIN_MENU); return 3; } @@ -152,11 +152,11 @@ static int showOptionsMenu() { gfx_textSprites[TS_BACK_TO_MAIN_MENU].y = screen->h / 3 + 150; - screen_blitText(TS_SOUND); - screen_blitText(TS_MUSIC); - screen_blitText(TS_FULLSCREEN); - screen_blitText(TS_AUTOPAUSE); - screen_blitText(TS_BACK_TO_MAIN_MENU); + screen_blitTextInPlace(TS_SOUND); + screen_blitTextInPlace(TS_MUSIC); + screen_blitTextInPlace(TS_FULLSCREEN); + screen_blitTextInPlace(TS_AUTOPAUSE); + screen_blitTextInPlace(TS_BACK_TO_MAIN_MENU); return 5; } @@ -196,11 +196,11 @@ static int showCheatMenu() { gfx_textSprites[TS_BACK_TO_MAIN_MENU].y = screen->h / 3 + 150; - screen_blitText(TS_UNLIMITED_SHIELD); - screen_blitText(TS_UNLIMITED_AMMO); - screen_blitText(TS_UNLIMITED_CASH); - screen_blitText(TS_UNLIMITED_TIME); - screen_blitText(TS_BACK_TO_MAIN_MENU); + screen_blitTextInPlace(TS_UNLIMITED_SHIELD); + screen_blitTextInPlace(TS_UNLIMITED_AMMO); + screen_blitTextInPlace(TS_UNLIMITED_CASH); + screen_blitTextInPlace(TS_UNLIMITED_TIME); + screen_blitTextInPlace(TS_BACK_TO_MAIN_MENU); return 5; } @@ -360,11 +360,11 @@ int title_show() } else if ((now - then > 9000) && (now - then < 15000) && (!skip)) { - screen_blitText(TS_PRESENTS); + screen_blitTextInPlace(TS_PRESENTS); } else if ((now - then > 16000) && (now - then < 21000) && (!skip)) { - screen_blitText(TS_AN_SDL_GAME); + screen_blitTextInPlace(TS_AN_SDL_GAME); } else if ((now - then > 25500) || (skip)) {