Fixed some graphical problems.
Problem 1: fullscreen switching was leaving artifacts. Fixed by drawing all black when switching fullscreen (and switching fullscreen is now handled by its own function). Problem 2: the mission briefing screen would distort if you changed fullscreen during it. Fixed by redrawing the screen (it was previously only drawn once).
This commit is contained in:
parent
04033b332e
commit
7296b8ab76
11
src/engine.c
11
src/engine.c
|
@ -322,6 +322,17 @@ void engine_setMode()
|
|||
SDL_JoystickOpen(0);
|
||||
}
|
||||
|
||||
void engine_setFullscreen(int value)
|
||||
{
|
||||
engine.fullScreen = value;
|
||||
|
||||
// Clear the screen (prevents artifacts)
|
||||
screen_clear(black);
|
||||
renderer_update();
|
||||
|
||||
SDL_SetWindowFullscreen(window, engine.fullScreen ? FULLSCREEN : 0);
|
||||
}
|
||||
|
||||
void engine_resetLists()
|
||||
{
|
||||
Object *ob, *ob2;
|
||||
|
|
|
@ -112,6 +112,7 @@ void engine_warn(const char *msg);
|
|||
void engine_error(const char *msg);
|
||||
void engine_setupConfigDirectory();
|
||||
void engine_setMode();
|
||||
void engine_setFullscreen(int value);
|
||||
void engine_resetLists();
|
||||
void engine_cleanup();
|
||||
|
||||
|
|
|
@ -1198,8 +1198,7 @@ static void intermission_doOptions(SDL_Surface *optionsSurface, int x, int y)
|
|||
{
|
||||
if (!engine.fullScreen)
|
||||
{
|
||||
SDL_SetWindowFullscreen(window, FULLSCREEN);
|
||||
engine.fullScreen = 1;
|
||||
engine_setFullscreen(1);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1207,8 +1206,7 @@ static void intermission_doOptions(SDL_Surface *optionsSurface, int x, int y)
|
|||
{
|
||||
if (engine.fullScreen)
|
||||
{
|
||||
SDL_SetWindowFullscreen(window, 0);
|
||||
engine.fullScreen = 0;
|
||||
engine_setFullscreen(0);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1045,44 +1045,6 @@ void mission_showStartScreen()
|
|||
screen_clear(black);
|
||||
renderer_update();
|
||||
|
||||
if (game.area != MISN_INTERCEPTION)
|
||||
{
|
||||
screen_clear(black);
|
||||
mission_drawScreen();
|
||||
|
||||
if (mission.timeLimit1[0] > 0)
|
||||
{
|
||||
char temp[50];
|
||||
if (game.area != MISN_MARS)
|
||||
sprintf(temp, "TIME LIMIT: %d minutes", mission.timeLimit1[0]);
|
||||
else
|
||||
sprintf(temp, "SURVIVAL FOR %d minutes", mission.timeLimit1[0]);
|
||||
screen_renderString(temp, -1, screen->h / 2 + 195, FONT_RED);
|
||||
}
|
||||
|
||||
switch (game.area)
|
||||
{
|
||||
case MISN_URUSOR:
|
||||
case MISN_DORIM:
|
||||
case MISN_SIVEDI:
|
||||
case MISN_ALMARTHA:
|
||||
case MISN_ELLESH:
|
||||
case MISN_MARS:
|
||||
case MISN_VENUS:
|
||||
screen_renderString("Phoebe Lexx will not be present", screen->w / 2 - 240, screen->h / 2 + 115, FONT_WHITE);
|
||||
if (game.hasWingMate2)
|
||||
screen_renderString("Ursula Lexx will not be present", screen->w / 2 - 240, screen->h / 2 + 145, FONT_WHITE);
|
||||
break;
|
||||
}
|
||||
|
||||
if ((game.area == MISN_URUSOR) ||
|
||||
(game.area == MISN_POSWIC) ||
|
||||
(game.area == MISN_EARTH))
|
||||
screen_renderString("Sid Wilson will join you on this mission", screen->w / 2 - 240, screen->h / 2 + 175, FONT_WHITE);
|
||||
|
||||
renderer_update();
|
||||
}
|
||||
|
||||
gfx_loadSprites();
|
||||
gfx_createTextObject(TS_SHIELD, "Shield", screen->w / 32, screen->h - 50, FONT_WHITE);
|
||||
gfx_createTextObject(TS_PLASMA_T, "Plasma:", screen->w * 5 / 16, screen->h - 50, FONT_WHITE);
|
||||
|
@ -1118,6 +1080,41 @@ void mission_showStartScreen()
|
|||
|
||||
while (1)
|
||||
{
|
||||
screen_clear(black);
|
||||
mission_drawScreen();
|
||||
|
||||
if (mission.timeLimit1[0] > 0)
|
||||
{
|
||||
char temp[50];
|
||||
if (game.area != MISN_MARS)
|
||||
sprintf(temp, "TIME LIMIT: %d minutes", mission.timeLimit1[0]);
|
||||
else
|
||||
sprintf(temp, "SURVIVAL FOR %d minutes", mission.timeLimit1[0]);
|
||||
screen_renderString(temp, -1, screen->h / 2 + 195, FONT_RED);
|
||||
}
|
||||
|
||||
switch (game.area)
|
||||
{
|
||||
case MISN_URUSOR:
|
||||
case MISN_DORIM:
|
||||
case MISN_SIVEDI:
|
||||
case MISN_ALMARTHA:
|
||||
case MISN_ELLESH:
|
||||
case MISN_MARS:
|
||||
case MISN_VENUS:
|
||||
screen_renderString("Phoebe Lexx will not be present", screen->w / 2 - 240, screen->h / 2 + 115, FONT_WHITE);
|
||||
if (game.hasWingMate2)
|
||||
screen_renderString("Ursula Lexx will not be present", screen->w / 2 - 240, screen->h / 2 + 145, FONT_WHITE);
|
||||
break;
|
||||
}
|
||||
|
||||
if ((game.area == MISN_URUSOR) ||
|
||||
(game.area == MISN_POSWIC) ||
|
||||
(game.area == MISN_EARTH))
|
||||
screen_renderString("Sid Wilson will join you on this mission", screen->w / 2 - 240, screen->h / 2 + 175, FONT_WHITE);
|
||||
|
||||
renderer_update();
|
||||
|
||||
game_delayFrame();
|
||||
player_getInput();
|
||||
if ((engine.keyState[KEY_FIRE]) || (engine.keyState[KEY_ALTFIRE]) ||
|
||||
|
|
|
@ -341,8 +341,7 @@ void player_getInput()
|
|||
|
||||
if (engine.keyState[KEY_FULLSCREEN])
|
||||
{
|
||||
engine.fullScreen = !engine.fullScreen;
|
||||
SDL_SetWindowFullscreen(window, engine.fullScreen ? FULLSCREEN : 0);
|
||||
engine_setFullscreen(!engine.fullScreen);
|
||||
engine.keyState[KEY_FULLSCREEN] = 0;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue