From: matthew Date: Tue, 7 Aug 2018 17:34:17 +0000 (+0000) Subject: moved tile_repr() to tile_renderer X-Git-Url: https://git.owens.tech/assets/me.png/assets/me.png/git?a=commitdiff_plain;h=cd7d89548e0a770d64bf74b29c4f914482fedaff;p=csrpg.git moved tile_repr() to tile_renderer --- diff --git a/common/tile.c b/common/tile.c index fdf1e43..1e2a950 100644 --- a/common/tile.c +++ b/common/tile.c @@ -1,4 +1,5 @@ #include "tile.h" +#include "err.h" #include #include #include @@ -11,12 +12,12 @@ typedef struct enum Terrain terrain; } Tile_t; -static const char repr[] = {'X', '.', '^', '\'', '~', '#', '*', '|', '0'}; Tile *tile_init(Point3i pos, enum Terrain ter) { Tile_t *t = malloc(sizeof(Tile_t)); bool clamped = false; + char msg[80]; t->position = pos; t->terrain = ter; @@ -28,8 +29,8 @@ Tile *tile_init(Point3i pos, enum Terrain ter) t->position.z = 9; } if(clamped == true){ - //TODO: err output - //fprintf(stderr, CLAMPERR, t->position.z); + sprintf(msg, CLAMPERR, t->position.z); + err_output(msg); } return (Tile *) t; diff --git a/common/tile.h b/common/tile.h index 943c9be..89241f6 100644 --- a/common/tile.h +++ b/common/tile.h @@ -8,7 +8,6 @@ enum Terrain{ MOUNTAIN, S_WATER, D_WATER, - WALL, FLOOR, ROAD, LAST @@ -21,7 +20,4 @@ Tile *tile_init(Point3i pos, enum Terrain ter); void tile_cleanup(Tile *t); Point3i tile_position(Tile *t); enum Terrain tile_terrain(Tile *t); - -// TODO: move to nogl output c file -char tile_repr(enum Terrain t); #endif//TILE_H diff --git a/nogl/tile_renderer.c b/nogl/tile_renderer.c new file mode 100644 index 0000000..19fcdfe --- /dev/null +++ b/nogl/tile_renderer.c @@ -0,0 +1,27 @@ +#include "tile_renderer.h" +#include "board.h" + +static Board *b = NULL; +static const char repr[] = {'X', '.', '^', '\'', '~', '*', '|', '0'}; +const static char col_repr = '#'; +const static char air_repr = ' '; +const static char unk_repr = '?'; + +char trndr_repr(Tile *t, int dlayer) +{ + if(b == NULL || t == NULL) + return unk_repr; + + int tlayer = tile_position(t).z; + int terrain; + + if(t < 0; || t > LAST){ + return unk_repr; + } else { + if(tlayer < dlayer) { return col_repr; } + else if(tlayer > dlayer) { return air_repr; } + else return repr[tile_terrain(t)]; + } +} + +void trendr_set_board(Board *board) { b = board; } diff --git a/nogl/tile_renderer.h b/nogl/tile_renderer.h new file mode 100644 index 0000000..3d685e8 --- /dev/null +++ b/nogl/tile_renderer.h @@ -0,0 +1,7 @@ +#ifndef TILE_RENDERER +#define TILE_RENDERER +#include "tile.h" + +char trndr_repr(enum Terrain t, int layer); +void trenr_set_board(Board *board); +#endif//TILE_RENDERER