logo
authorJohn Tsiombikas <nuclear@member.fsf.org>
Thu, 5 Mar 2020 12:53:16 +0000 (14:53 +0200)
committerJohn Tsiombikas <nuclear@member.fsf.org>
Thu, 5 Mar 2020 12:53:16 +0000 (14:53 +0200)
Makefile
src/dos/main.c
src/introscr.c
src/menuscr.c

index b7ef6e3..bcebb62 100644 (file)
--- 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
index 72b666e..8c3096b 100644 (file)
@@ -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();
index 16567ff..610db90 100644 (file)
@@ -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<fb_height; i++) {
                for(j=0; j<fb_width; j++) {
@@ -50,11 +63,15 @@ void intro_draw(void)
                        uint16_t g = (uint16_t)*src++ * fade / 256;
                        uint16_t b = (uint16_t)*src++ * fade / 256;
                        *dest++ = PACK_RGB16(r, g, b);
-                       src += 3;
                }
        }
+
+       blit_frame(fb_pixels, 1);
 }
 
 void intro_keyb(int key, int pressed)
 {
+       if(pressed) {
+               menu_start();
+       }
 }
index 846bee4..b0e7fb9 100644 (file)
@@ -25,6 +25,8 @@ void menu_cleanup(void)
 
 void menu_start(void)
 {
+       draw = menu_draw;
+       key_event = menu_keyb;
 }
 
 void menu_stop(void)