From: matthew Date: Wed, 8 Aug 2018 18:35:55 +0000 (+0000) Subject: implemented map movement X-Git-Url: https://git.owens.tech///git?a=commitdiff_plain;h=d122d87d736964f192a10a3ab72262f89d348897;p=csrpg.git implemented map movement --- diff --git a/nogl/board_renderer.c b/nogl/board_renderer.c index dedaec6..e19f386 100644 --- a/nogl/board_renderer.c +++ b/nogl/board_renderer.c @@ -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; +} diff --git a/nogl/board_renderer.h b/nogl/board_renderer.h index 1ae0b53..283cd54 100644 --- a/nogl/board_renderer.h +++ b/nogl/board_renderer.h @@ -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 diff --git a/nogl/input.c b/nogl/input.c index 53e5147..e40f4eb 100644 --- a/nogl/input.c +++ b/nogl/input.c @@ -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() { diff --git a/nogl/input.h b/nogl/input.h index eabb7ce..3d77700 100644 --- a/nogl/input.h +++ b/nogl/input.h @@ -5,6 +5,10 @@ enum Action{ LAYER_UP, LAYER_DOWN, ERR_CLEAR, + MAP_LEFT, + MAP_DOWN, + MAP_UP, + MAP_RIGHT, ACTION_LAST }; diff --git a/nogl/main.c b/nogl/main.c index 8cb61b0..a6fb1dc 100644 --- a/nogl/main.c +++ b/nogl/main.c @@ -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; } } diff --git a/nogl/tile_renderer.c b/nogl/tile_renderer.c index 17589aa..748d1fe 100644 --- a/nogl/tile_renderer.c +++ b/nogl/tile_renderer.c @@ -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)