X-Git-Url: https://plomlompom.com/repos/?a=blobdiff_plain;f=rogue_chat.html;h=d6a86e096dbada3c123e0c953981ea99b737b34a;hb=d9970cdde3a9f232efbfcacae0217b63e8389551;hp=1ace4c3d40c59a68b6be65d9ed34390f6e6f02d1;hpb=699621898072da0b0b93748e2b6a49badfdec391;p=plomrogue2 diff --git a/rogue_chat.html b/rogue_chat.html index 1ace4c3..d6a86e0 100644 --- a/rogue_chat.html +++ b/rogue_chat.html @@ -1238,6 +1238,40 @@ let tui = { terminal.write(term_y, term_x, to_draw); } }, + draw_names: function() { + let players = []; + for (const thing_id in game.things) { + let t = game.things[thing_id]; + if (t.type_ == 'Player') { + players.push(t); + } + }; + function compare(a, b) { + if (a.name_.length > b.name_.length) { + return -1; + } else if (a.name_.length < b.name_.length) { + return 1; + } else { + return 0; + } + } + players.sort(compare); + const shrink_offset = Math.max(0, (terminal.rows - tui.left_window_width / 2) / 2); + let y = 0; + for (const player of players) { + let name = player.name_; + const offset_y = y - shrink_offset; + const max_len = Math.max(5, (tui.left_window_width / 2) - (offset_y * 2) - 8); + if (name.length > max_len) { + name = name.slice(0, max_len - 1) + '…'; + } + terminal.write(y, 0, '@' + player.thing_char + ':' + name); + y += 1; + if (y >= terminal.rows) { + break; + } + } + }, draw_face_popup: function() { const t = game.things[this.draw_face]; if (!t || !t.face) { @@ -1259,7 +1293,7 @@ let tui = { } terminal.write(terminal.rows - 2, start_x, '----------'); let name = t.name_; - if (name.length > 6) { + if (name.length > 7) { name = name.slice(0, 6) + '…'; } terminal.write(terminal.rows - 1, start_x, '@' + t.thing_char + ':' + name); @@ -1407,8 +1441,11 @@ let tui = { if (this.show_help) { this.draw_help(); } - if (this.draw_face && ['chat', 'play'].includes(this.mode.name)) { - this.draw_face_popup(); + if (['chat', 'play'].includes(this.mode.name)) { + this.draw_names(); + if (this.draw_face) { + this.draw_face_popup(); + } } if (!this.draw_links) { this.links = {};