Minor changes (found out what overlay() means ...)
[dungeon1] / main.c
diff --git a/main.c b/main.c
index 2d80a81..76b19d6 100644 (file)
--- a/main.c
+++ b/main.c
@@ -6,39 +6,53 @@
 
 #include "main.h"
 
+static void draw(void);
+static void wboxborder(WINDOW *);
+
 int
 main(void)
 {
        int x, y, x2, y2;
-       WINDOW *win;
        int c;
        char c2;
        struct map *map, *fow;
        int gold=0;
+       char *title = "****   DUNGEON1   ****";
 
-       win = initscr();
+       initscr();
        noecho();
        cbreak();
        keypad(stdscr, TRUE);
+
+       w_title = newwin(1, COLS-1, 0, 0);
+       mvwprintw(w_title, 0, MAPW/2 - strlen(title)/2, "%s", title);
+
+       w_mapborder = newwin(MAPH+2*BORDER, MAPW+2*BORDER, 1, 0);
+       wboxborder(w_mapborder);
+       w_map = subwin(w_mapborder, MAPH, MAPW, 2, 1);
+
+       w_info = newwin(4, MAPW+2*BORDER, MAPH+2*BORDER, 0);
+       w_gold = subwin(w_info, 1, 10, MAPH+2*BORDER+2, 50);
+       mvwprintw(w_gold, 0, 0, "gold:%2d", 0);
+       w_pos = subwin(w_info, 1, 20, MAPH+2*BORDER+2, 10);
 /*
-       nonl();
-       intrflush(stdscr, FALSE);
 */
 
+
        fow = getblackmap();
        showmap(fow);
-       map = readmap("map2");
+       map = readmap("map1");
 
        findchar(map, '>', &y, &x);
-       move(y, x);
+       wmove(w_map, y, x);
        see(map, y, x);
-       refresh();
+       draw();
 
        while ((c = getch()) != ERR) {
                if (c == 'q') {
                        break;
                }
-               getyx(win, y, x);
+               getyx(w_map, y, x);
                x2 = x;
                y2 = y;
                switch (c) {
@@ -68,31 +82,52 @@ main(void)
                case '$':
                        gold++;
                        map->map[y2][x2] = ' ';
-                       mvaddch(y2, x2, ' ');
+                       mvwaddch(w_map, y2, x2, ' ');
+                       mvwprintw(w_gold, 0, 5, "%2d", gold);
                        /* FALL */
                case ' ':
-                       mvprintw(0, 0, "%d:%d", x2, y2);
-                       move(y2, x2);
+                       mvwprintw(w_pos, 0, 0, "pos: %d,%d", x2, y2);
+                       wmove(w_map, y2, x2);
                        see(map, y2, x2);
                        break;
                case '*':
-                       mvprintw(H/2, 10, "AUSGANG gefunden!");
+                       mvwprintw(w_map, H-5, 10, "AUSGANG gefunden!");
                        goto exit;
                default:
                        continue;
                }
 
-               mvprintw(0, 40, "<%c>  gold:%d", c2, gold);
-               move(y2, x2);
+               mvwprintw(w_pos, 0, 10, "<%c>", c2);
+               wmove(w_map, y2, x2);
 
-               refresh();
-               napms(10);
+               draw();
        }
 
 exit:
+/*
        mvprintw(H, 0, "press key to exit...");
        getch();
+*/
        endwin();
        return 0;
 }
 
+static void
+draw(void)
+{
+       refresh();
+       wrefresh(w_title);
+       wrefresh(w_info);
+       wrefresh(w_gold);
+       wrefresh(w_pos);
+       wrefresh(w_mapborder);
+       overlay(w_map, w_mapborder);
+       wrefresh(w_map);
+}
+
+static void
+wboxborder(WINDOW *win)
+{
+       wborder(win, '|', '|', '-', '-', '+', '+', '+', '+');
+}
+