implemented map movement
authormatthew <matthew@owens.tech>
Wed, 8 Aug 2018 18:35:55 +0000 (18:35 +0000)
committermatthew <matthew@owens.tech>
Wed, 8 Aug 2018 18:35:55 +0000 (18:35 +0000)
nogl/board_renderer.c
nogl/board_renderer.h
nogl/input.c
nogl/input.h
nogl/main.c
nogl/tile_renderer.c

index dedaec6..e19f386 100644 (file)
@@ -8,6 +8,7 @@ static WINDOW *win = NULL;
 static Point2i winPos;
 static Point2i winSize;
 static int layer = 0;
+static Point2i drawPos;
 
 void draw_board()
 {
@@ -20,12 +21,17 @@ void draw_board()
                err_output("cannot draw boar, window is null!");
                return;
        }
+       // Ensuring that the canvas is clear to prevent ghosting
+       for(int y = 1; y < winSize.y - 1; ++y){
+               mvwhline(win, y, 1, ' ', winSize.x - 2);
+       }
 
+       // Drawing the board itself
        Point2i bsize = board_get_size(b);
        for(int y = 0; y < bsize.y; ++y){
                for(int x = 0; x < bsize.x; ++x){
                        Tile *t = board_tile_at(b, point2i(x,y));
-                       mvwaddch(win, 1+y, 1+x, trndr_repr(t, layer));
+                       mvwaddch(win, drawPos.y+y, drawPos.x+x, trndr_repr(t, layer));
                }
        }
 }
@@ -35,6 +41,7 @@ void brndr_init()
        Point2i termsize;
 
        winPos = point2i(0,0);
+       drawPos = point2i(1,1);
        getmaxyx(stdscr, termsize.y, termsize.x);
        winSize = termsize;
        winSize.y -= 2;
@@ -67,3 +74,9 @@ void brndr_set_rendered_layer(int l)
 {
        layer = l;
 }
+
+void brndr_move_draw_pos(Point2i p)
+{
+       drawPos.x += p.x;
+       drawPos.y += p.y;
+}
index 1ae0b53..283cd54 100644 (file)
@@ -8,5 +8,6 @@ void brndr_render();
 void brndr_cleanup();
 void brndr_set_board(Board *board);
 void brndr_set_rendered_layer(int l);
+void brndr_move_draw_pos(Point2i p);
 
 #endif//BOARD_RENDERER_H
index 53e5147..e40f4eb 100644 (file)
@@ -2,7 +2,7 @@
 #include "stdio.h"
 #include "err.h"
 
-static char keys[] = {'q', 'K', 'J', 'c'};
+static char keys[] = {'q','K','J','c','h','j','k','l'};
 
 enum Action input_update()
 {
index eabb7ce..3d77700 100644 (file)
@@ -5,6 +5,10 @@ enum Action{
        LAYER_UP,
        LAYER_DOWN,
        ERR_CLEAR,
+       MAP_LEFT,
+       MAP_DOWN,
+       MAP_UP,
+       MAP_RIGHT,
        ACTION_LAST
 };
 
index 8cb61b0..a6fb1dc 100644 (file)
@@ -82,6 +82,22 @@ int main()
                        case ERR_CLEAR:
                                err_clear();
                                break;
+                       case MAP_LEFT:
+                               brndr_move_draw_pos(point2i(-1,0));
+                               brndr_render();
+                               break;
+                       case MAP_RIGHT:
+                               brndr_move_draw_pos(point2i(1,0));
+                               brndr_render();
+                               break;
+                       case MAP_UP:
+                               brndr_move_draw_pos(point2i(0,-1));
+                               brndr_render();
+                               break;
+                       case MAP_DOWN:
+                               brndr_move_draw_pos(point2i(0,1));
+                               brndr_render();
+                               break;
                }
        }
 
index 17589aa..748d1fe 100644 (file)
@@ -5,7 +5,7 @@
 static Board *b = NULL;
 static const char repr[] = {'X', '.', '^', '\'', '~', '*', '|', '0'};
 const static char col_repr = '#';
-const static char air_repr = 'A';
+const static char air_repr = ' ';
 const static char unk_repr = '?';
 
 char trndr_repr(Tile *t, int dlayer)