From: Christian Heller Date: Sun, 6 Dec 2020 19:37:38 +0000 (+0100) Subject: In client map drawing, draw Player things last (= on top). X-Git-Url: https://plomlompom.com/repos/do_tasks?a=commitdiff_plain;h=61fa10d0738452a5f0e62fd33d48eabcfa46b7c3;p=plomrogue2 In client map drawing, draw Player things last (= on top). --- diff --git a/rogue_chat.html b/rogue_chat.html index d4cedc2..ef87c0f 100644 --- a/rogue_chat.html +++ b/rogue_chat.html @@ -929,8 +929,7 @@ let tui = { map_lines_split[coordinate[0]][coordinate[1]] = original[0] + 'P'; } let used_positions = []; - for (const thing_id in game.things) { - let t = game.things[thing_id]; + function draw_thing(t, used_positions) { let symbol = game.thing_types[t.type_]; let meta_char = ' '; if (t.thing_char) { @@ -941,6 +940,18 @@ let tui = { }; map_lines_split[t.position[0]][t.position[1]] = symbol + meta_char; used_positions.push(t.position.toString()); + } + for (const thing_id in game.things) { + let t = game.things[thing_id]; + if (t.type_ != 'Player') { + draw_thing(t, used_positions); + } + }; + for (const thing_id in game.things) { + let t = game.things[thing_id]; + if (t.type_ == 'Player') { + draw_thing(t, used_positions); + } }; } let player = game.things[game.player_id]; diff --git a/rogue_chat_curses.py b/rogue_chat_curses.py index 70d60b2..be3c53f 100755 --- a/rogue_chat_curses.py +++ b/rogue_chat_curses.py @@ -790,7 +790,8 @@ class TUI: original = map_lines_split[p.y][p.x] map_lines_split[p.y][p.x] = original[0] + 'P' used_positions = [] - for t in self.game.things: + + def draw_thing(t, used_positions): symbol = self.game.thing_types[t.type_] meta_char = ' ' if hasattr(t, 'thing_char'): @@ -799,6 +800,11 @@ class TUI: meta_char = '+' map_lines_split[t.position.y][t.position.x] = symbol + meta_char used_positions += [t.position] + + for t in [t for t in self.game.things if t.type_ != 'Player']: + draw_thing(t, used_positions) + for t in [t for t in self.game.things if t.type_ == 'Player']: + draw_thing(t, used_positions) player = self.game.get_thing(self.game.player_id) if self.mode.shows_info or self.mode.name == 'control_tile_draw': map_lines_split[self.explorer.y][self.explorer.x] = '??'