X-Git-Url: https://plomlompom.com/repos/%7B%7Bprefix%7D%7D/copy_free?a=blobdiff_plain;f=rogue_chat_nocanvas_monochrome.html;h=1f2ebe0dcd1865ba8b25e5329c55a9ce8e97aa71;hb=f403ec1356ebb44a70efe60cc21de31e3dccd92c;hp=e699a96efee25a3f51970df37916bc3e69eba425;hpb=e67306357a830cabdd5ce86b2b333499d99da325;p=plomrogue2 diff --git a/rogue_chat_nocanvas_monochrome.html b/rogue_chat_nocanvas_monochrome.html index e699a96..1f2ebe0 100644 --- a/rogue_chat_nocanvas_monochrome.html +++ b/rogue_chat_nocanvas_monochrome.html @@ -23,6 +23,8 @@ move down-left (hex grid):
help:
flatten surroundings:
+take thing under player:
+drop carried thing:
switch to chat mode:
switch to play mode:
switch to study mode:
@@ -177,7 +179,9 @@ let server = { this.websocket = new WebSocket(this.url); this.websocket.onopen = function(event) { server.connected = true; + game.thing_types = {}; server.send(['TASKS']); + server.send(['THING_TYPES']); tui.log_msg("@ server connected! :)"); tui.switch_mode(mode_login); }; @@ -202,12 +206,19 @@ let server = { game.things = {}; game.portals = {}; game.turn = parseInt(tokens[1]); - } else if (tokens[0] === 'THING_POS') { - game.get_thing(tokens[1], true).position = parser.parse_yx(tokens[2]); + } else if (tokens[0] === 'THING') { + let t = game.get_thing(tokens[3], true); + t.position = parser.parse_yx(tokens[1]); + t.type_ = tokens[2]; } else if (tokens[0] === 'THING_NAME') { - game.get_thing(tokens[1], true).name_ = tokens[2]; + let t = game.get_thing(tokens[1], false); + if (t) { + t.name_ = tokens[2]; + }; } else if (tokens[0] === 'TASKS') { game.tasks = tokens[1].split(',') + } else if (tokens[0] === 'THING_TYPE') { + game.thing_types[tokens[1]] = tokens[2] } else if (tokens[0] === 'MAP') { game.map_geometry = tokens[1]; tui.init_keys(); @@ -435,17 +446,24 @@ let tui = { line = []; j = 0; }; - line.push(map_content[i]); + line.push(map_content[i] + ' '); }; map_lines_split.push(line); if (this.map_mode == 'terrain') { + let used_positions = []; for (const thing_id in game.things) { let t = game.things[thing_id]; - map_lines_split[t.position[0]][t.position[1]] = '@'; + let symbol = game.thing_types[t.type_]; + if (used_positions.includes(t.position.toString())) { + map_lines_split[t.position[0]][t.position[1]] = symbol + '+'; + } else { + map_lines_split[t.position[0]][t.position[1]] = symbol + ' '; + }; + used_positions.push(t.position.toString()); }; } if (tui.mode.shows_info) { - map_lines_split[explorer.position[0]][explorer.position[1]] = '?'; + map_lines_split[explorer.position[0]][explorer.position[1]] = '??'; } let map_lines = [] if (game.map_geometry == 'Square') { @@ -455,7 +473,7 @@ let tui = { } else if (game.map_geometry == 'Hex') { let indent = 0 for (let line_split of map_lines_split) { - map_lines.push(' '.repeat(indent) + line_split.join(' ')); + map_lines.push(' '.repeat(indent) + line_split.join('')); if (indent == 0) { indent = 1; } else { @@ -527,6 +545,12 @@ let tui = { if (game.tasks.includes('MOVE')) { content += "[" + movement_keys_desc + "] – move player\n"; } + if (game.tasks.includes('PICK_UP')) { + content += "[" + this.keys.take_thing + "] – take thing under player\n"; + } + if (game.tasks.includes('DROP')) { + content += "[" + this.keys.drop_thing + "] – drop carried thing\n"; + } if (game.tasks.includes('FLATTEN_SURROUNDINGS')) { content += "[" + tui.keys.flatten + "] – flatten player's surroundings\n"; } @@ -691,9 +715,9 @@ let explorer = { for (let t_id in game.things) { let t = game.things[t_id]; if (t.position[0] == this.position[0] && t.position[1] == this.position[1]) { - info += "PLAYER @"; + info += "THING: " + t.type_; if (t.name_) { - info += ": " + t.name_; + info += " (name: " + t.name_ + ")"; } info += "\n"; } @@ -816,6 +840,12 @@ tui.inputEl.addEventListener('keydown', (event) => { } else if (event.key === tui.keys.flatten && game.tasks.includes('FLATTEN_SURROUNDINGS')) { server.send(["TASK:FLATTEN_SURROUNDINGS", tui.password]); + } else if (event.key === tui.keys.take_thing + && game.tasks.includes('PICK_UP')) { + server.send(["TASK:PICK_UP"]); + } else if (event.key === tui.keys.drop_thing + && game.tasks.includes('DROP')) { + server.send(["TASK:DROP"]); } else if (event.key in tui.movement_keys && game.tasks.includes('MOVE')) { server.send(['TASK:MOVE', tui.movement_keys[event.key]]);