X-Git-Url: https://plomlompom.com/repos/berlin_corona.txt?a=blobdiff_plain;f=rogue_chat.html;h=1b5f39d8f732f631f477b5dec8378349a21e8b4b;hb=ed297e4e19f8a83872d6345b86321e10aec019d4;hp=d971c9bd47d1f17683c531d22d5a19ac2c1a9a30;hpb=a2894e6935a831d2d8fdfc1f05ca2edc2e1abc57;p=plomrogue2 diff --git a/rogue_chat.html b/rogue_chat.html index d971c9b..1b5f39d 100644 --- a/rogue_chat.html +++ b/rogue_chat.html @@ -58,6 +58,7 @@ keyboard input/control: + @@ -69,6 +70,7 @@ keyboard input/control: + @@ -101,6 +103,8 @@ keyboard input/control:
  • open/close:
  • consume:
  • install: +
  • (un-)wear: +
  • @@ -160,6 +164,11 @@ let mode_helps = { 'intro': '@ enter thing protection character:', 'long': 'Change protection character for thing here.' }, + 'enter_face': { + 'short': 'enter your face', + 'intro': '@ enter face line (enter nothing to abort):', + 'long': 'Draw your face as ASCII art. The string you enter must be 9 characters long, and will be divided on display into three lines of three characters each, from top to bottom..' + }, 'write': { 'short': 'change terrain', 'intro': '', @@ -239,6 +248,7 @@ let key_descriptions = { 'door': 'open/close', 'consume': 'consume', 'install': '(un-)install', + 'wear': '(un-)wear', 'toggle_map_mode': 'toggle map view', 'toggle_tile_draw': 'toggle protection character drawing', 'hex_move_upleft': 'up-left', @@ -477,14 +487,16 @@ let server = { t.portable = parseInt(tokens[5]); } else if (tokens[0] === 'THING_NAME') { let t = game.get_thing(tokens[1], false); - if (t) { - t.name_ = tokens[2]; - }; + t.name_ = tokens[2]; + } else if (tokens[0] === 'THING_FACE') { + let t = game.get_thing(tokens[1], false); + t.face = tokens[2]; + } else if (tokens[0] === 'THING_HAT') { + let t = game.get_thing(tokens[1], false); + t.hat = tokens[2]; } else if (tokens[0] === 'THING_CHAR') { let t = game.get_thing(tokens[1], false); - if (t) { - t.thing_char = tokens[2]; - }; + t.thing_char = tokens[2]; } else if (tokens[0] === 'TASKS') { game.tasks = tokens[1].split(','); tui.mode_write.legal = game.tasks.includes('WRITE'); @@ -494,14 +506,10 @@ let server = { game.thing_types[tokens[1]] = tokens[2] } else if (tokens[0] === 'THING_CARRYING') { let t = game.get_thing(tokens[1], false); - if (t) { - t.carrying = true; - }; + t.carrying = true; } else if (tokens[0] === 'THING_INSTALLED') { let t = game.get_thing(tokens[1], false); - if (t) { - t.installed = true; - }; + t.installed = true; } else if (tokens[0] === 'TERRAIN') { game.terrains[tokens[1]] = tokens[2] } else if (tokens[0] === 'MAP') { @@ -662,6 +670,7 @@ let tui = { mode_name_thing: new Mode('name_thing', true, true), mode_command_thing: new Mode('command_thing', true), mode_take_thing: new Mode('take_thing', true), + mode_enter_face: new Mode('enter_face', true), mode_admin_enter: new Mode('admin_enter', true), mode_admin: new Mode('admin'), mode_control_pw_pw: new Mode('control_pw_pw', true), @@ -674,6 +683,7 @@ let tui = { 'move': 'MOVE', 'door': 'DOOR', 'install': 'INSTALL', + 'wear': 'WEAR', 'command': 'COMMAND', 'consume': 'INTOXICATE', }, @@ -683,8 +693,8 @@ let tui = { init: function() { this.mode_play.available_modes = ["chat", "study", "edit", "admin_enter", "command_thing", "take_thing"] - this.mode_play.available_actions = ["move", "drop_thing", - "teleport", "door", "consume", "install"]; + this.mode_play.available_actions = ["move", "drop_thing", "teleport", + "door", "consume", "install", "wear"]; this.mode_study.available_modes = ["chat", "play", "admin_enter", "edit"] this.mode_study.available_actions = ["toggle_map_mode", "move_explorer"]; this.mode_admin.available_modes = ["admin_thing_protect", "control_pw_type", @@ -695,7 +705,7 @@ let tui = { this.mode_control_tile_draw.available_actions = ["toggle_tile_draw"]; this.mode_edit.available_modes = ["write", "annotate", "portal", "name_thing", "password", "chat", "study", "play", - "admin_enter"] + "admin_enter", "enter_face"] this.mode_edit.available_actions = ["move", "flatten", "toggle_map_mode"] this.inputEl = document.getElementById("input"); this.inputEl.focus(); @@ -1066,7 +1076,7 @@ let tui = { let term_x = Math.max(0, -this.offset[1]); let map_y = Math.max(0, this.offset[0]); let map_x = Math.max(0, this.offset[1]); - for (; term_y < terminal.rows && map_y < game.map_size[0]; term_y++, map_y++) { + for (; term_y < terminal.rows && map_y < this.map_lines.length; term_y++, map_y++) { let to_draw = this.map_lines[map_y].slice(map_x, this.window_width + this.offset[1]); terminal.write(term_y, term_x, to_draw); } @@ -1325,17 +1335,6 @@ let explorer = { if (game.fov[position_i] != '.') { info_to_cache += 'outside field of view'; } else { - let terrain_char = game.map[position_i] - let terrain_desc = '?' - if (game.terrains[terrain_char]) { - terrain_desc = game.terrains[terrain_char]; - }; - info_to_cache += 'TERRAIN: "' + terrain_char + '" / ' + terrain_desc + "\n"; - let protection = game.map_control[position_i]; - if (protection == '.') { - protection = 'unprotected'; - }; - info_to_cache += 'PROTECTION: ' + protection + '\n'; 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]) { @@ -1345,8 +1344,29 @@ let explorer = { protection = 'none'; } info_to_cache += " / protection: " + protection + "\n"; + if (t.hat) { + info_to_cache += t.hat.slice(0, 3) + '\n'; + info_to_cache += t.hat.slice(3, 6) + '\n'; + info_to_cache += t.hat.slice(6, 9) + '\n'; + } + if (t.face) { + info_to_cache += t.face.slice(0, 3) + '\n'; + info_to_cache += t.face.slice(3, 6) + '\n'; + info_to_cache += t.face.slice(6, 9) + '\n'; + } } } + let terrain_char = game.map[position_i] + let terrain_desc = '?' + if (game.terrains[terrain_char]) { + terrain_desc = game.terrains[terrain_char]; + }; + info_to_cache += 'TERRAIN: "' + terrain_char + '" / ' + terrain_desc + "\n"; + let protection = game.map_control[position_i]; + if (protection == '.') { + protection = 'unprotected'; + }; + info_to_cache += 'PROTECTION: ' + protection + '\n'; if (this.position in game.portals) { info_to_cache += "PORTAL: " + game.portals[this.position] + "\n"; } @@ -1427,6 +1447,14 @@ tui.inputEl.addEventListener('keydown', (event) => { tui.login_name = tui.inputEl.value; server.send(['LOGIN', tui.inputEl.value]); tui.inputEl.value = ""; + } else if (tui.mode.name == 'enter_face' && event.key == 'Enter') { + if (tui.inputEl.value.length != 9) { + tui.log_msg('? wrong input length, aborting'); + } else { + server.send(['PLAYER_FACE', tui.inputEl.value]); + } + tui.inputEl.value = ""; + tui.switch_mode('edit'); } else if (tui.mode.name == 'command_thing' && event.key == 'Enter') { if (tui.task_action_on('command')) { server.send(['TASK:COMMAND', tui.inputEl.value]); @@ -1527,6 +1555,8 @@ tui.inputEl.addEventListener('keydown', (event) => { server.send(["TASK:DOOR"]); } else if (event.key === tui.keys.install && tui.task_action_on('install')) { server.send(["TASK:INSTALL"]); + } else if (event.key === tui.keys.install && tui.task_action_on('wear')) { + server.send(["TASK:WEAR"]); } else if (event.key in tui.movement_keys && tui.task_action_on('move')) { server.send(['TASK:MOVE', tui.movement_keys[event.key]]); } else if (event.key === tui.keys.teleport) { @@ -1649,6 +1679,9 @@ document.getElementById("consume").onclick = function() { document.getElementById("install").onclick = function() { server.send(['TASK:INSTALL']); }; +document.getElementById("wear").onclick = function() { + server.send(['TASK:WEAR']); +}; document.getElementById("teleport").onclick = function() { game.teleport(); };