Added code to handle different resolutions during missions.

This is capable of handling any resolution which is at least 640x360.
Actually, resolutions a bit smaller than that can be handled. No
manual adjustment is necessary. :)

Now, the intermission screen needs to be fixed...
This commit is contained in:
onpon4 2016-01-03 20:30:54 -05:00
parent 26add18109
commit 05323ed1fb
3 changed files with 47 additions and 46 deletions

View File

@ -1638,8 +1638,8 @@ static void game_doHud()
signed char fontColor; signed char fontColor;
char text[25]; char text[25];
screen_addBuffer(0, 20, 800, 25); screen_addBuffer(0, 20, screen->w, 25);
screen_addBuffer(0, 550, 800, 34); screen_addBuffer(0, screen->h - 50, screen->w, 34);
if (engine.minutes > -1) if (engine.minutes > -1)
{ {
@ -1651,7 +1651,7 @@ static void game_doHud()
fontColor = FONT_WHITE; fontColor = FONT_WHITE;
screen_blitText(TS_TIME_T); screen_blitText(TS_TIME_T);
sprintf(text, "%.2d:%.2d", engine.minutes, engine.seconds); sprintf(text, "%.2d:%.2d", engine.minutes, engine.seconds);
gfx_createTextObject(TS_TIME, text, 410, 21, fontColor); gfx_createTextObject(TS_TIME, text, screen->w / 2 + 10, 21, fontColor);
screen_blitText(TS_TIME); screen_blitText(TS_TIME);
} }
@ -1659,7 +1659,7 @@ static void game_doHud()
{ {
screen_blitText(TS_OBJECTIVES_T); screen_blitText(TS_OBJECTIVES_T);
sprintf(text, "%d", (currentMission.remainingObjectives1 + currentMission.remainingObjectives2)); sprintf(text, "%d", (currentMission.remainingObjectives1 + currentMission.remainingObjectives2));
gfx_createTextObject(TS_OBJECTIVES, text, 745, 21, FONT_WHITE); gfx_createTextObject(TS_OBJECTIVES, text, screen->w - 55, 21, FONT_WHITE);
screen_blitText(TS_OBJECTIVES); screen_blitText(TS_OBJECTIVES);
} }
@ -1679,7 +1679,7 @@ static void game_doHud()
} }
screen_blitText(TS_PLASMA_T); screen_blitText(TS_PLASMA_T);
sprintf(text, "%.3d", player.ammo[0]); sprintf(text, "%.3d", player.ammo[0]);
gfx_createTextObject(TS_PLASMA, text, 320, 551, fontColor); gfx_createTextObject(TS_PLASMA, text, screen->w * 5 / 16 + 70, screen->h - 49, fontColor);
screen_blitText(TS_PLASMA); screen_blitText(TS_PLASMA);
screen_blitText(TS_AMMO_T); screen_blitText(TS_AMMO_T);
@ -1691,7 +1691,7 @@ static void game_doHud()
else else
fontColor = FONT_WHITE; fontColor = FONT_WHITE;
sprintf(text, "%.3d", player.ammo[1]); // rocket ammo sprintf(text, "%.3d", player.ammo[1]); // rocket ammo
gfx_createTextObject(TS_AMMO, text, 465, 551, fontColor); gfx_createTextObject(TS_AMMO, text, screen->w / 2 + 80, screen->h - 49, fontColor);
screen_blitText(TS_AMMO); screen_blitText(TS_AMMO);
} }
@ -1701,15 +1701,15 @@ static void game_doHud()
if (player.ammo[1] > 100) if (player.ammo[1] > 100)
c = red; c = red;
bar.x = 450; bar.x = screen->w / 2 + 65;
bar.y = 550; bar.y = screen->h - 50;
bar.h = 12; bar.h = 12;
for (int i = 0 ; i < (player.ammo[1] / 5) ; i++) for (int i = 0 ; i < (player.ammo[1] / 5) ; i++)
{ {
bar.w = 1; bar.w = MAX(screen->w / 800, 1);
SDL_FillRect(screen, &bar, c); SDL_FillRect(screen, &bar, c);
bar.x += 2; bar.x += bar.w + (screen->w / 800);
} }
} }
@ -1771,7 +1771,7 @@ static void game_doHud()
{ {
if (gfx_text[i].life > 0) if (gfx_text[i].life > 0)
{ {
gfx_text[i].y = (525 - (i * 20)); gfx_text[i].y = screen->h - 75 - (i * 20);
screen_blitText(i); screen_blitText(i);
gfx_text[i].life--; gfx_text[i].life--;
@ -1799,31 +1799,32 @@ static void game_doHud()
if ((engine.targetIndex > -1) && (aliens[engine.targetIndex].shield > 0) && (engine.targetIndex > 9)) if ((engine.targetIndex > -1) && (aliens[engine.targetIndex].shield > 0) && (engine.targetIndex > 9))
{ {
screen_blitText(TS_TARGET); screen_blitText(TS_TARGET);
bar.w = 1; bar.w = MAX(screen->w / 800, 1);
bar.h = 12; bar.h = 12;
bar.x = 620; bar.x = screen->w * 11 / 16 + 65;
bar.y = 550; bar.y = screen->h - 50;
for (float i = 0 ; i < (engine.targetShield * aliens[engine.targetIndex].shield) ; i++) for (float i = 0 ; i < (engine.targetShield * aliens[engine.targetIndex].shield) ; i++)
{ {
if (i > 50) if (i > engine.targetShield * aliens[engine.targetIndex].maxShield * 2 / 3)
shieldColor = green; shieldColor = green;
else if ((i >= 25) && (i <= 50)) else if ((i >= engine.targetShield * aliens[engine.targetIndex].maxShield / 3) &&
(i <= engine.targetShield * aliens[engine.targetIndex].maxShield * 2 / 3))
shieldColor = yellow; shieldColor = yellow;
else else
shieldColor = red; shieldColor = red;
SDL_FillRect(screen, &bar, shieldColor); SDL_FillRect(screen, &bar, shieldColor);
bar.x += 2; bar.x += bar.w + (screen->w / 800);
} }
} }
} }
screen_blitText(TS_POWER); screen_blitText(TS_POWER);
bar.w = 25; bar.w = screen->w / 32;
bar.h = 12; bar.h = 12;
bar.x = 80; bar.x = screen->w / 32 + 55;
bar.y = 571; bar.y = screen->h - 29;
for (int i = 1 ; i <= 5 ; i++) for (int i = 1 ; i <= 5 ; i++)
{ {
@ -1834,15 +1835,15 @@ static void game_doHud()
} }
} else if (i <= game.maxPlasmaDamage) } else if (i <= game.maxPlasmaDamage)
SDL_FillRect(screen, &bar, darkGreen); SDL_FillRect(screen, &bar, darkGreen);
bar.x += 30; bar.x += screen->w * 3 / 80;
} }
screen_blitText(TS_OUTPUT); screen_blitText(TS_OUTPUT);
bar.w = 25; bar.w = screen->w / 32;
bar.h = 12; bar.h = 12;
bar.x = 315; bar.x = screen->w * 5 / 16 + 65;
bar.y = 571; bar.y = screen->h - 29;
SDL_FillRect(screen, &bar, yellow); SDL_FillRect(screen, &bar, yellow);
for (int i = 1 ; i <= 5 ; i++) for (int i = 1 ; i <= 5 ; i++)
@ -1855,15 +1856,15 @@ static void game_doHud()
} }
else if (i <= game.maxPlasmaOutput) else if (i <= game.maxPlasmaOutput)
SDL_FillRect(screen, &bar, darkYellow); SDL_FillRect(screen, &bar, darkYellow);
bar.x += 30; bar.x += screen->w * 3 / 80;
} }
screen_blitText(TS_COOLER); screen_blitText(TS_COOLER);
bar.w = 25; bar.w = screen->w / 32;
bar.h = 12; bar.h = 12;
bar.x = 550; bar.x = screen->w * 97 / 160 + 65;
bar.y = 571; bar.y = screen->h - 29;
for (int i = 1 ; i <= 5 ; i++) for (int i = 1 ; i <= 5 ; i++)
{ {
@ -1875,7 +1876,7 @@ static void game_doHud()
} }
else if (i <= game.maxPlasmaRate) else if (i <= game.maxPlasmaRate)
SDL_FillRect(screen, &bar, darkerBlue); SDL_FillRect(screen, &bar, darkerBlue);
bar.x += 30; bar.x += screen->w * 3 / 80;
} }
screen_blitText(TS_SHIELD); screen_blitText(TS_SHIELD);
@ -1888,12 +1889,12 @@ static void game_doHud()
if ((engine.eventTimer < 30) && (player.shield <= engine.lowShield)) if ((engine.eventTimer < 30) && (player.shield <= engine.lowShield))
return; return;
signed char blockSize = 1; int blockSize = MAX(screen->w / 800, 1);
bar.w = blockSize; bar.w = blockSize;
bar.h = 12; bar.h = 12;
bar.x = 95; bar.x = screen->w / 32 + 65;
bar.y = 550; bar.y = screen->h - 50;
for (int i = 0 ; i < player.shield ; i += blockSize) for (int i = 0 ; i < player.shield ; i += blockSize)
{ {
@ -1905,8 +1906,8 @@ static void game_doHud()
shieldColor = red; shieldColor = red;
SDL_FillRect(screen, &bar, shieldColor); SDL_FillRect(screen, &bar, shieldColor);
bar.x += blockSize; bar.x += blockSize;
if (player.maxShield < 75) if (player.maxShield <= 75 || screen->w >= 1200)
bar.x++; bar.x += screen->w / 800;
} }
} }

View File

@ -693,7 +693,7 @@ int intermission()
strcpy(string, "Destination: None"); strcpy(string, "Destination: None");
iconInfo[10].image = gfx_createTextSurface(string, FONT_WHITE); iconInfo[10].image = gfx_createTextSurface(string, FONT_WHITE);
for (int i = 0 ; i < 9 ; i++) for (int i = 0 ; i < 9 ; i++)
iconInfo[i].x = (800 - iconInfo[i].image->w) / 2; iconInfo[i].x = (screen->w - iconInfo[i].image->w) / 2;
iconInfo[11].image = gfx_createTextSurface("Go to Destination Planet", FONT_WHITE); iconInfo[11].image = gfx_createTextSurface("Go to Destination Planet", FONT_WHITE);

View File

@ -793,23 +793,23 @@ void missionBriefScreen()
} }
loadGameGraphics(); loadGameGraphics();
gfx_createTextObject(TS_SHIELD, "Shield", 25, 550, FONT_WHITE); gfx_createTextObject(TS_SHIELD, "Shield", screen->w / 32, screen->h - 50, FONT_WHITE);
gfx_createTextObject(TS_PLASMA_T, "Plasma:", 250, 550, FONT_WHITE); gfx_createTextObject(TS_PLASMA_T, "Plasma:", screen->w * 5 / 16, screen->h - 50, FONT_WHITE);
if (player.weaponType[1] == W_CHARGER) if (player.weaponType[1] == W_CHARGER)
gfx_createTextObject(TS_AMMO_T, "Charge", 385, 550, FONT_WHITE); gfx_createTextObject(TS_AMMO_T, "Charge", screen->w / 2, screen->h - 50, FONT_WHITE);
else if (player.weaponType[1] == W_LASER) else if (player.weaponType[1] == W_LASER)
gfx_createTextObject(TS_AMMO_T, "Heat", 405, 550, FONT_WHITE); gfx_createTextObject(TS_AMMO_T, "Heat", screen->w / 2 + 20, screen->h - 50, FONT_WHITE);
else else
gfx_createTextObject(TS_AMMO_T, "Rockets:", 385, 550, FONT_WHITE); gfx_createTextObject(TS_AMMO_T, "Rockets:", screen->w / 2, screen->h - 50, FONT_WHITE);
gfx_createTextObject(TS_TARGET, "Target", 550, 550, FONT_WHITE); gfx_createTextObject(TS_TARGET, "Target", screen->w * 11 / 16, screen->h - 50, FONT_WHITE);
gfx_createTextObject(TS_CASH_T, "Cash: $", 25, 20, FONT_WHITE); gfx_createTextObject(TS_CASH_T, "Cash: $", 25, 20, FONT_WHITE);
gfx_createTextObject(TS_OBJECTIVES_T, "Objectives Remaining:", 550, 20, FONT_WHITE); gfx_createTextObject(TS_OBJECTIVES_T, "Objectives Remaining:", screen->w - 250, 20, FONT_WHITE);
gfx_createTextObject(TS_TIME_T, "Time Remaining - ", 260, 20, FONT_WHITE); gfx_createTextObject(TS_TIME_T, "Time Remaining - ", screen->w / 2 - 140, 20, FONT_WHITE);
gfx_createTextObject(TS_POWER, "Power", 25, 570, FONT_WHITE); gfx_createTextObject(TS_POWER, "Power", screen->w / 32, screen->h - 30, FONT_WHITE);
gfx_createTextObject(TS_OUTPUT, "Output", 250, 570, FONT_WHITE); gfx_createTextObject(TS_OUTPUT, "Output", screen->w * 5 / 16, screen->h - 30, FONT_WHITE);
gfx_createTextObject(TS_COOLER, "Cooler", 485, 570, FONT_WHITE); gfx_createTextObject(TS_COOLER, "Cooler", screen->w * 97 / 160, screen->h - 30, FONT_WHITE);
audio_playRandomTrack(); audio_playRandomTrack();
if (game.area != MISN_INTERCEPTION) if (game.area != MISN_INTERCEPTION)