mirror of
https://github.com/TerryCavanagh/VVVVVV.git
synced 2024-12-22 09:39:43 +01:00
Add border to indicate taking screenshot
Originally, I was thinking of adding a notification text that you took a screenshot, but this is better because it is language-agnostic and it doesn't contribute to potential UI clutter/clashing. It flashes yellow if the screenshot successfully saved, and red if it didn't.
This commit is contained in:
parent
93ec2c6cca
commit
40f6f83328
5 changed files with 58 additions and 1 deletions
|
@ -364,6 +364,10 @@ void Game::init(void)
|
||||||
old_mode_indicator_timer = 0;
|
old_mode_indicator_timer = 0;
|
||||||
mode_indicator_timer = 0;
|
mode_indicator_timer = 0;
|
||||||
|
|
||||||
|
old_screenshot_border_timer = 0;
|
||||||
|
screenshot_border_timer = 0;
|
||||||
|
screenshot_saved_success = false;
|
||||||
|
|
||||||
setdefaultcontrollerbuttons();
|
setdefaultcontrollerbuttons();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -592,6 +592,10 @@ public:
|
||||||
|
|
||||||
int old_mode_indicator_timer;
|
int old_mode_indicator_timer;
|
||||||
int mode_indicator_timer;
|
int mode_indicator_timer;
|
||||||
|
|
||||||
|
int old_screenshot_border_timer;
|
||||||
|
int screenshot_border_timer;
|
||||||
|
bool screenshot_saved_success;
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifndef GAME_DEFINITION
|
#ifndef GAME_DEFINITION
|
||||||
|
|
|
@ -3345,6 +3345,8 @@ void Graphics::screenshake(void)
|
||||||
|
|
||||||
copy_texture(gameTexture, NULL, &shake);
|
copy_texture(gameTexture, NULL, &shake);
|
||||||
|
|
||||||
|
draw_screenshot_border();
|
||||||
|
|
||||||
set_render_target(gameTexture);
|
set_render_target(gameTexture);
|
||||||
clear();
|
clear();
|
||||||
|
|
||||||
|
@ -3370,6 +3372,8 @@ void Graphics::updatescreenshake(void)
|
||||||
|
|
||||||
void Graphics::render(void)
|
void Graphics::render(void)
|
||||||
{
|
{
|
||||||
|
draw_screenshot_border();
|
||||||
|
|
||||||
if (gameScreen.badSignalEffect)
|
if (gameScreen.badSignalEffect)
|
||||||
{
|
{
|
||||||
ApplyFilter(&tempFilterSrc, &tempFilterDest);
|
ApplyFilter(&tempFilterSrc, &tempFilterDest);
|
||||||
|
@ -3423,6 +3427,46 @@ void Graphics::renderfixedpost(void)
|
||||||
{
|
{
|
||||||
--game.screenshake;
|
--game.screenshake;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
game.old_screenshot_border_timer = game.screenshot_border_timer;
|
||||||
|
if (game.screenshot_border_timer > 0)
|
||||||
|
{
|
||||||
|
game.screenshot_border_timer -= 15;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void Graphics::draw_screenshot_border(void)
|
||||||
|
{
|
||||||
|
const int border_alpha = lerp(game.old_screenshot_border_timer, game.screenshot_border_timer);
|
||||||
|
|
||||||
|
if (border_alpha <= 100)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
int width = 0;
|
||||||
|
int height = 0;
|
||||||
|
int result = query_texture(gameTexture, NULL, NULL, &width, &height);
|
||||||
|
if (result != 0)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const SDL_Rect rect_inner = {1, 1, width - 2, height - 2};
|
||||||
|
|
||||||
|
if (game.screenshot_saved_success)
|
||||||
|
{
|
||||||
|
set_color(196, 196, 20, border_alpha);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
set_color(196, 20, 20, border_alpha);
|
||||||
|
}
|
||||||
|
|
||||||
|
set_blendmode(SDL_BLENDMODE_BLEND);
|
||||||
|
draw_rect(NULL);
|
||||||
|
draw_rect(&rect_inner);
|
||||||
|
set_blendmode(SDL_BLENDMODE_NONE);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Graphics::drawtele(int x, int y, int t, const SDL_Color color)
|
void Graphics::drawtele(int x, int y, int t, const SDL_Color color)
|
||||||
|
|
|
@ -252,6 +252,8 @@ public:
|
||||||
void renderfixedpre(void);
|
void renderfixedpre(void);
|
||||||
void renderfixedpost(void);
|
void renderfixedpost(void);
|
||||||
|
|
||||||
|
void draw_screenshot_border(void);
|
||||||
|
|
||||||
bool Hitest(SDL_Surface* surface1, SDL_Point p1, SDL_Surface* surface2, SDL_Point p2);
|
bool Hitest(SDL_Surface* surface1, SDL_Point p1, SDL_Surface* surface2, SDL_Point p2);
|
||||||
|
|
||||||
void drawentities(void);
|
void drawentities(void);
|
||||||
|
|
|
@ -186,7 +186,10 @@ void KeyPoll::Poll(void)
|
||||||
|
|
||||||
if (evt.key.keysym.sym == SDLK_F6 && !evt.key.repeat)
|
if (evt.key.keysym.sym == SDLK_F6 && !evt.key.repeat)
|
||||||
{
|
{
|
||||||
SaveScreenshot();
|
const bool success = SaveScreenshot();
|
||||||
|
game.old_screenshot_border_timer = 255;
|
||||||
|
game.screenshot_border_timer = 255;
|
||||||
|
game.screenshot_saved_success = success;
|
||||||
}
|
}
|
||||||
|
|
||||||
BUTTONGLYPHS_keyboard_set_active(true);
|
BUTTONGLYPHS_keyboard_set_active(true);
|
||||||
|
|
Loading…
Reference in a new issue