X-Git-Url: https://plomlompom.com/repos/%7B%7Bprefix%7D%7D/balance?a=blobdiff_plain;f=src%2Fclient%2Fdraw_wins.c;h=594b70763f4963ffae1efd31622807623e17e5dc;hb=258e57c1621533e206610453047d829cc8aa13fe;hp=1a3c9ad16c1c392963fc62401e3253a7fc89c4d1;hpb=e34629517265170e7bb3f446b9b067bab382b572;p=plomrogue diff --git a/src/client/draw_wins.c b/src/client/draw_wins.c index 1a3c9ad..594b707 100644 --- a/src/client/draw_wins.c +++ b/src/client/draw_wins.c @@ -65,6 +65,9 @@ static char * get_keyname_to_command(char * command_name); static char * winconf_geom_helper(struct Win * win, char axis, char * sep, char * newlines, char * value_prefix); +/* Draw map cell "c" into win "w" at position "y"/"x" with attribute "a". */ +static void draw_mapcell(struct Win * w, char c, uint8_t y, uint8_t x,attr_t a); + static void try_resize_winmap(struct Win * win, int new_size_y, int new_size_x) @@ -325,7 +328,7 @@ static char * winconf_geom_helper(struct Win * win, char axis, char * sep, } char * p11 = ")"; uint8_t size = strlen(p0) + strlen(p1) + strlen(p2) + strlen(sep) - + strlen(p4) + strlen(sep) + strlen(p6) + strlen(value_prefix) + + strlen(p4) + strlen(sep) + strlen(p6) +strlen(value_prefix) + strlen(p8) + strlen(p9) + strlen(p10) + strlen(p11) + strlen(newlines); char * msg = try_malloc(size, __func__); @@ -336,6 +339,17 @@ static char * winconf_geom_helper(struct Win * win, char axis, char * sep, +static void draw_mapcell(struct Win * w, char c, uint8_t y, uint8_t x, attr_t a) +{ + set_ch_on_yx(w, y, x * 2 + (y % 2), c | a); + if (x + (y % 2) < world.map.length) + { + set_ch_on_yx(w, y, x * 2 + (y % 2) + 1, ' ' | a); + } +} + + + extern void draw_win_log(struct Win * win) { if (!world.log) @@ -349,43 +363,40 @@ extern void draw_win_log(struct Win * win) extern void draw_win_map(struct Win * win) { + uint16_t x, y; init_pair(1, COLOR_WHITE, COLOR_BLUE); init_pair(2, COLOR_BLUE, COLOR_BLACK); - attr_t attr_fov = 0; attr_t attr_mem = COLOR_PAIR(2); attr_t attr_sha = COLOR_PAIR(1); try_resize_winmap(win, world.map.length, world.map.length * 2); - uint16_t x, y, z; - for (y = 0, z = 0; y < world.map.length; y++) + for (y = 0; y < world.map.length; y++) { for (x = 0; x < world.map.length; x++) { - attr_t attr_c = ' ' == world.mem_map[z] ? attr_sha : attr_mem; - chtype c = world.mem_map[z] | attr_c; - set_ch_on_yx(win, y, x * 2 + (y % 2), c); - if (x + (y % 2) < world.map.length) - { - set_ch_on_yx(win, y, x * 2 + (y % 2) + 1, ' ' | attr_c); - } - z++; + attr_t a=' '==world.mem_map[y*world.map.length+x]?attr_sha:attr_mem; + char c = world.mem_map[y*world.map.length + x]; + draw_mapcell(win, c, y, x, a); } } - for (y = 0, z = 0; y < world.map.length; y++) + for (y = 0; y < world.map.length; y++) { for (x = 0; x < world.map.length; x++) { - if (' ' != world.map.cells[z]) + if (' ' != world.map.cells[y*world.map.length + x]) { - chtype c = world.map.cells[z] | attr_fov; - set_ch_on_yx(win, y, x * 2 + (y % 2), c); - if (x + (y % 2) < world.map.length) - { - set_ch_on_yx(win, y, x * 2 + (y % 2) + 1, ' ' | attr_fov); - } + char c = world.map.cells[y*world.map.length + x]; + draw_mapcell(win, c, y, x, 0); } - z++; } } + if (world.look) + { + y = world.look_pos.y; + x = world.look_pos.x; + char c = world.map.cells[y * world.map.length + x]; + c = ' ' == c ? world.mem_map[y * world.map.length + x] : c; + draw_mapcell(win, c, y, x, A_REVERSE); + } } @@ -434,6 +445,16 @@ extern void draw_win_inventory(struct Win * win) +extern void draw_win_terrain_stack(struct Win * win) +{ + if (world.things_here) + { + add_text_with_linebreaks(win, world.things_here); + } +} + + + extern void draw_win_keybindings_global(struct Win * win) { win->center.y = world.kb_global.select;