From fdf6f2783b2f528f4d6d377ac046aafc5fed3f01 Mon Sep 17 00:00:00 2001 From: John Tsiombikas Date: Thu, 5 Mar 2020 14:53:16 +0200 Subject: [PATCH] logo --- Makefile | 10 +++++----- src/dos/main.c | 11 ++++++++--- src/introscr.c | 25 +++++++++++++++++++++---- src/menuscr.c | 2 ++ 4 files changed, 36 insertions(+), 12 deletions(-) diff --git a/Makefile b/Makefile index b7ef6e3..bcebb62 100644 --- a/Makefile +++ b/Makefile @@ -2,8 +2,8 @@ dosobj = src/dos/main.obj src/dos/gfx.obj src/dos/timer.obj src/dos/watdpmi.obj & src/dos/vbe.obj src/dos/vga.obj src/dos/keyb.obj src/dos/mouse.obj & src/dos/logger.obj -gameobj = src/game.obj src/util.obj src/gfxutil.obj src/dynarr.obj src/rbtree.obj & - src/menuscr.obj +scrobj = src/introscr.obj src/menuscr.obj +gameobj = src/game.obj src/util.obj src/gfxutil.obj src/dynarr.obj src/rbtree.obj gfxobj = src/3dgfx/3dgfx.obj src/3dgfx/mesh.obj src/3dgfx/meshload.obj & src/3dgfx/polyfill.obj src/3dgfx/polyclip.obj incpath = -Isrc -Isrc/dos -Ilibs/imago/src @@ -12,15 +12,15 @@ libpath = libpath libs/imago dosobj = src\dos\main.obj src\dos\gfx.obj src\dos\timer.obj src\dos\watdpmi.obj & src\dos\vbe.obj src\dos\vga.obj src\dos\keyb.obj src\dos\mouse.obj & src\dos\logger.obj -gameobj = src\game.obj src\util.obj src\gfxutil.obj src\dynarr.obj src\rbtree.obj & - src\menuscr.obj +scrobj = src\introscr.obj src\menuscr.obj +gameobj = src\game.obj src\util.obj src\gfxutil.obj src\dynarr.obj src\rbtree.obj gfxobj = src\3dgfx\3dgfx.obj src\3dgfx\mesh.obj src\3dgfx\meshload.obj & src\3dgfx\polyfill.obj src\3dgfx\polyclip.obj incpath = -Isrc -Isrc\dos -Ilibs\imago\src libpath = libpath libs\imago !endif -obj = $(dosobj) $(gameobj) $(gfxobj) +obj = $(dosobj) $(gameobj) $(gfxobj) $(scrobj) bin = game.exe def = -dM_PI=3.141592653589793 diff --git a/src/dos/main.c b/src/dos/main.c index 72b666e..8c3096b 100644 --- a/src/dos/main.c +++ b/src/dos/main.c @@ -55,10 +55,15 @@ int main(int argc, char **argv) for(;;) { int key; - while((key = kb_getkey()) != -1) { - if(key == 27) goto break_evloop; + if(key_event) { + while((key = kb_getkey()) != -1) { + key_event(key, 1); + } + } else { + while((key = kb_getkey()) != -1) { + if(key == 27) goto break_evloop; + } } - if(quit) goto break_evloop; time_msec = get_msec(); diff --git a/src/introscr.c b/src/introscr.c index 16567ff..610db90 100644 --- a/src/introscr.c +++ b/src/introscr.c @@ -5,7 +5,7 @@ #include "gfxutil.h" #include "game.h" -#define FADE_DUR 1024 +#define FADE_DUR 800 static void *logo; static int logo_width, logo_height; @@ -27,6 +27,9 @@ void intro_cleanup(void) void intro_start(void) { + draw = intro_draw; + key_event = intro_keyb; + start_time = time_msec; } @@ -37,12 +40,22 @@ void intro_stop(void) void intro_draw(void) { int i, j; + long tm; uint16_t fade; unsigned char *src = logo; uint16_t *dest = fb_pixels; - fade = (time_msec - start_time) * 256 / FADE_DUR; - if(fade > 256) fade = 256; + tm = time_msec - start_time; + if(tm < FADE_DUR) { + fade = tm * 256 / FADE_DUR; + } else if(tm < FADE_DUR * 2) { + fade = 256; + } else if(tm < FADE_DUR * 3) { + fade = 256 - (tm - 2 * FADE_DUR) * 256 / FADE_DUR; + } else { + menu_start(); + return; + } for(i=0; i