popup msg draws on top with animation
This commit is contained in:
parent
effcdbf485
commit
7a44b70b12
35
src/studio.c
35
src/studio.c
|
@ -57,6 +57,8 @@
|
|||
#define OFFSET_LEFT ((TIC80_FULLWIDTH-TIC80_WIDTH)/2)
|
||||
#define OFFSET_TOP ((TIC80_FULLHEIGHT-TIC80_HEIGHT)/2)
|
||||
|
||||
#define POPUP_DUR (TIC_FRAMERATE*2)
|
||||
|
||||
typedef struct
|
||||
{
|
||||
u8 data[16];
|
||||
|
@ -670,7 +672,7 @@ const u8* getKeyboard()
|
|||
|
||||
static void showPopupMessage(const char* text)
|
||||
{
|
||||
studio.popup.counter = TIC_FRAMERATE * 2;
|
||||
studio.popup.counter = POPUP_DUR;
|
||||
strcpy(studio.popup.message, text);
|
||||
}
|
||||
|
||||
|
@ -2055,6 +2057,28 @@ static void useSystemPalette()
|
|||
memcpy(studio.tic->ram.vram.palette.data, studio.tic->config.palette.data, sizeof(tic_palette));
|
||||
}
|
||||
|
||||
static void drawPopup()
|
||||
{
|
||||
if(studio.popup.counter > 0)
|
||||
{
|
||||
studio.popup.counter--;
|
||||
|
||||
s32 anim = 0;
|
||||
|
||||
enum{Dur = TIC_FRAMERATE/2};
|
||||
|
||||
if(studio.popup.counter < Dur)
|
||||
anim = -((Dur - studio.popup.counter) * (TIC_FONT_HEIGHT+1) / Dur);
|
||||
else if(studio.popup.counter >= (POPUP_DUR - Dur))
|
||||
anim = (((POPUP_DUR - Dur) - studio.popup.counter) * (TIC_FONT_HEIGHT+1) / Dur);
|
||||
|
||||
studio.tic->api.rect(studio.tic, 0, anim, TIC80_WIDTH, TIC_FONT_HEIGHT+1, (tic_color_red));
|
||||
studio.tic->api.text(studio.tic, studio.popup.message,
|
||||
(s32)(TIC80_WIDTH - strlen(studio.popup.message)*TIC_FONT_WIDTH)/2,
|
||||
anim + 1, (tic_color_white));
|
||||
}
|
||||
}
|
||||
|
||||
static void renderStudio()
|
||||
{
|
||||
tic_mem* tic = studio.tic;
|
||||
|
@ -2105,14 +2129,7 @@ static void renderStudio()
|
|||
default: break;
|
||||
}
|
||||
|
||||
if(studio.popup.counter > 0)
|
||||
{
|
||||
studio.popup.counter--;
|
||||
|
||||
studio.tic->api.rect(studio.tic, 0, TIC80_HEIGHT - TIC_FONT_HEIGHT - 1, TIC80_WIDTH, TIC80_HEIGHT, (tic_color_red));
|
||||
studio.tic->api.text(studio.tic, studio.popup.message, (s32)(TIC80_WIDTH - strlen(studio.popup.message)*TIC_FONT_WIDTH)/2,
|
||||
TIC80_HEIGHT - TIC_FONT_HEIGHT, (tic_color_white));
|
||||
}
|
||||
drawPopup();
|
||||
|
||||
if(getConfig()->noSound)
|
||||
SDL_memset(tic->ram.registers, 0, sizeof tic->ram.registers);
|
||||
|
|
Loading…
Reference in New Issue