X-Git-Url: https://plomlompom.com/repos/%7B%7B%20web_path%20%7D%7D/decks/%7B%7Bdeck_id%7D%7D/cards/%7B%7Bcard_id%7D%7D/static/gitweb.css?a=blobdiff_plain;f=rogue_chat_nocanvas_monochrome.html;h=66cb79584160760e95a2c4158503fbb53df8abc8;hb=0a25fa6dadb1560ed64c22fe12a6c3d8de567b84;hp=1e3653bb0df50eab39df6f6b52b4ff213dfab588;hpb=35a30b2b2579f5cac20ba94cd5e162d11fd283ee;p=plomrogue2 diff --git a/rogue_chat_nocanvas_monochrome.html b/rogue_chat_nocanvas_monochrome.html index 1e3653b..66cb795 100644 --- a/rogue_chat_nocanvas_monochrome.html +++ b/rogue_chat_nocanvas_monochrome.html @@ -175,20 +175,18 @@ let server = { this.url = url; this.websocket = new WebSocket(this.url); this.websocket.onopen = function(event) { - window.setInterval(function() { server.send(['PING']) }, 30000); - this.send('TASKS'); + server.connected = true; + server.send(['TASKS']); tui.log_msg("@ server connected! :)"); tui.switch_mode(mode_login); }; this.websocket.onclose = function(event) { + server.connected = false; + tui.switch_mode(mode_waiting_for_server); tui.log_msg("@ server disconnected :("); - tui.log_msg("@ hint: try the '/reconnect' command"); }; this.websocket.onmessage = this.handle_event; }, - reconnect: function() { - this.reconnect_to(this.url); - }, reconnect_to: function(url) { this.websocket.close(); this.init(url); @@ -214,6 +212,8 @@ let server = { tui.init_keys(); game.map_size = parser.parse_yx(tokens[2]); game.map = tokens[3] + } else if (tokens[0] === 'FOV') { + game.fov = tokens[1] } else if (tokens[0] === 'MAP_CONTROL') { game.map_control = tokens[1] } else if (tokens[0] === 'GAME_STATE_COMPLETE') { @@ -253,7 +253,7 @@ let server = { } else if (tokens[0] === 'GAME_ERROR') { tui.log_msg('? game error: ' + tokens[1]); } else if (tokens[0] === 'PONG') { - console.log('PONG'); + ; } else { tui.log_msg('? unhandled input: ' + event.data); } @@ -520,7 +520,7 @@ let tui = { }, draw_help: function() { let movement_keys_desc = Object.keys(this.movement_keys).join(','); - let content = this.mode.name + " mode help (hit any key to disappear)\n\n" + this.mode.help_intro + "\n\n"; + let content = this.mode.name + " mode help\n\n" + this.mode.help_intro + "\n\n"; if (this.mode == mode_play) { content += "Available actions:\n"; if (game.tasks.includes('MOVE')) { @@ -661,7 +661,6 @@ let explorer = { if (target) { this.position = target this.query_info(); - tui.full_refresh(); } else { terminal.blink_screen(); }; @@ -682,8 +681,11 @@ let explorer = { server.send(["GET_ANNOTATION", unparser.to_yx(explorer.position)]); }, get_info: function() { - let info = ""; let position_i = this.position[0] * game.map_size[1] + this.position[1]; + if (game.fov[position_i] != '.') { + return 'outside field of view'; + }; + let info = ""; info += "TERRAIN: " + game.map[position_i] + "\n"; for (let t_id in game.things) { let t = game.things[t_id]; @@ -726,18 +728,11 @@ tui.inputEl.addEventListener('input', (event) => { tui.inputEl.value = tui.inputEl.value.slice(0, max_length); }; tui.recalc_input_lines(); - tui.full_refresh(); } else if (tui.mode == mode_edit && tui.inputEl.value.length > 0) { server.send(["TASK:WRITE", tui.inputEl.value[0], tui.password]); tui.switch_mode(mode_play); - } else if (tui.mode == mode_teleport) { - if (['Y', 'y'].includes(tui.inputEl.value[0])) { - server.reconnect_to(tui.teleport_target); - } else { - tui.log_msg("@ teleportation aborted"); - tui.switch_mode(mode_play); - } } + tui.full_refresh(); }, false); tui.inputEl.addEventListener('keydown', (event) => { tui.show_help = false; @@ -748,10 +743,8 @@ tui.inputEl.addEventListener('keydown', (event) => { tui.show_help = true; tui.empty_input(); tui.restore_input_values(); - tui.full_refresh(); } else if (!tui.mode.has_input_prompt && event.key == tui.keys.help) { tui.show_help = true; - tui.full_refresh(); } else if (tui.mode == mode_login && event.key == 'Enter') { tui.login_name = tui.inputEl.value; server.send(['LOGIN', tui.inputEl.value]); @@ -796,12 +789,6 @@ tui.inputEl.addEventListener('keydown', (event) => { } else { tui.log_msg('? need message target and message'); } - } else if (tokens[0].slice(1) == 'reconnect') { - if (tokens.length > 1) { - server.reconnect_to(tokens[1]); - } else { - server.reconnect(); - } } else { tui.log_msg('? unknown command'); } @@ -812,7 +799,6 @@ tui.inputEl.addEventListener('keydown', (event) => { server.send(['ALL', tui.inputEl.value]); } tui.empty_input(); - tui.full_refresh(); } else if (tui.mode == mode_play) { if (event.key === tui.keys.switch_to_chat) { event.preventDefault(); @@ -853,9 +839,9 @@ tui.inputEl.addEventListener('keydown', (event) => { } else { tui.map_mode = 'terrain'; } - tui.full_refresh(); }; } + tui.full_refresh(); }, false); rows_selector.addEventListener('input', function() { @@ -887,5 +873,13 @@ window.setInterval(function() { tui.inputEl.focus(); } }, 100); +window.setInterval(function() { + if (server.connected) { + server.send(['PING']); + } else { + server.reconnect_to(server.url); + tui.log_msg('@ attempting reconnect …') + } +}, 5000);