X-Git-Url: https://plomlompom.com/repos/?p=plomrogue;a=blobdiff_plain;f=src%2Fclient%2Fdraw_wins.c;h=594b70763f4963ffae1efd31622807623e17e5dc;hp=63fb8a0324c5ded1b1150dc5f4a5de533be12d92;hb=258e57c1621533e206610453047d829cc8aa13fe;hpb=81630285494cf6d9e5ddd845e4e55702d87029b0 diff --git a/src/client/draw_wins.c b/src/client/draw_wins.c index 63fb8a0..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) @@ -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); + } } @@ -436,9 +447,9 @@ extern void draw_win_inventory(struct Win * win) extern void draw_win_terrain_stack(struct Win * win) { - if (world.things_below_player) + if (world.things_here) { - add_text_with_linebreaks(win, world.things_below_player); + add_text_with_linebreaks(win, world.things_here); } }