world's saddest console
[dosdemo] / src / screen.c
index fb89206..362a15c 100644 (file)
@@ -5,6 +5,13 @@
 #include "screen.h"
 #include "demo.h"
 
+#define DBG_SCRCHG \
+       do { \
+               dbg_curscr_name = cur->name ? cur->name : "<unknown>"; \
+               dbg_curscr_name_len = strlen(dbg_curscr_name); \
+               dbg_curscr_name_pos = 320 - dbg_curscr_name_len * 9; \
+       } while(0)
+
 struct screen *tunnel_screen(void);
 struct screen *fract_screen(void);
 struct screen *grise_screen(void);
@@ -14,6 +21,8 @@ struct screen *bump_screen(void);
 struct screen *thunder_screen(void);
 struct screen *metaballs_screen(void);
 struct screen *greets_screen(void);
+struct screen *infcubes_screen(void);
+struct screen *hairball_screen(void);
 
 #define NUM_SCR 32
 static struct screen *scr[NUM_SCR];
@@ -53,6 +62,12 @@ int scr_init(void)
        if(!(scr[idx++] = greets_screen())) {
                return -1;
        }
+       if(!(scr[idx++] = infcubes_screen())) {
+               return -1;
+       }
+       if(!(scr[idx++] = hairball_screen())) {
+               return -1;
+       }
        num_screens = idx;
 
        assert(num_screens <= NUM_SCR);
@@ -84,13 +99,25 @@ void scr_update(void)
                        prev = 0;
                        cur = next;
                        next = 0;
+
+                       DBG_SCRCHG;
                }
        }
 }
 
+
 void scr_draw(void)
 {
-       if(cur) cur->draw();
+       if(cur) {
+               cur->draw();
+       }
+}
+
+void scr_keypress(int key)
+{
+       if(cur && cur->keypress) {
+               cur->keypress(key);
+       }
 }
 
 struct screen *scr_lookup(const char *name)
@@ -137,6 +164,8 @@ int scr_change(struct screen *s, long trans_time)
 
                cur = s;
                prev = 0;
+
+               DBG_SCRCHG;
        }
        return 0;
 }