X-Git-Url: https://plomlompom.com/repos/feed.xml?a=blobdiff_plain;f=new2%2Frogue_chat_nocanvas_monochrome.html;h=d7e00180dea297527480957269d77bc4f20fa967;hb=b40edea3eed5b03e8b5ff87edcd1faebe24888cc;hp=7554e57ea82955e39cead0c594b30254ff1db688;hpb=6d71e41fbcca9a3f337751367fa0088dcb9575a7;p=plomrogue2-experiments diff --git a/new2/rogue_chat_nocanvas_monochrome.html b/new2/rogue_chat_nocanvas_monochrome.html index 7554e57..d7e0018 100644 --- a/new2/rogue_chat_nocanvas_monochrome.html +++ b/new2/rogue_chat_nocanvas_monochrome.html @@ -124,11 +124,16 @@ let server = { this.websocket = new WebSocket(url); this.websocket.onopen = function(event) { window.setInterval(function() { server.send(['PING']) }, 30000); - server.send(['GET_GAMESTATE']); + tui.log_msg("@ server connected!"); + tui.init_login(); }; }, send: function(tokens) { - this.websocket.send(unparser.untokenize(tokens)); + if (this.websocket.readyState !== WebSocket.OPEN) { + tui.log_msg('server disconnected :('); + } else { + this.websocket.send(unparser.untokenize(tokens)); + } } } @@ -164,6 +169,8 @@ class Mode { this.shows_annotations = shows_annotations; } } +let mode_waiting_for_server = new Mode('waiting_for_server', false, false); +let mode_login = new Mode('login', true, false); let mode_chat = new Mode('chat', true, false); let mode_annotate = new Mode('annotate', true, true); let mode_play = new Mode('play', false, false); @@ -171,7 +178,7 @@ let mode_study = new Mode('study', false, true); let mode_edit = new Mode('edit', false, false); let tui = { - mode: mode_chat, + mode: mode_waiting_for_server, log: [], input_prompt: '> ', input: '', @@ -183,6 +190,11 @@ let tui = { init: function() { this.recalc_input_lines(); this.height_header = this.height_turn_line + this.height_mode_line; + this.log_msg("@ waiting for server connection ..."); + }, + init_login: function() { + this.log_msg("@ please enter your username:"); + this.switch_mode(mode_login); }, switch_mode: function(mode, keep_pos=false) { if (mode == mode_study && !keep_pos) { @@ -190,6 +202,12 @@ let tui = { } this.mode = mode; this.empty_input(); + if (mode == mode_annotate && explorer.position in explorer.info_db) { + let info = explorer.info_db[explorer.position]; + if (info != "(none)") { + this.add_to_input(explorer.info_db[explorer.position]); + } + } this.full_refresh(); }, draw_mode_line: function() { @@ -311,29 +329,29 @@ let tui = { terminal.refresh(); }, log_help: function() { - tui.log_msg(""); - tui.log_msg("HELP"); - tui.log_msg(""); - tui.log_msg("chat mode commands:"); - tui.log_msg(":login USER - register as USER"); - tui.log_msg(":msg USER TEXT - send TEXT to USER"); - tui.log_msg(":help - show this help"); - tui.log_msg(":play or :p - switch to play mode"); - tui.log_msg(":study or :s - switch to study mode"); - tui.log_msg(""); - tui.log_msg("play mode commands:"); - tui.log_msg("w, a, s, d - move avatar"); - tui.log_msg("f - flatten surroundings"); - tui.log_msg("e - write following ASCII character"); - tui.log_msg("c - switch to chat mode"); - tui.log_msg("? - switch to study mode"); - tui.log_msg(""); - tui.log_msg("study mode commands:"); - tui.log_msg("w, a, s, d - move question mark"); - tui.log_msg("A - annotate terrain"); - tui.log_msg("c - switch to chat mode"); - tui.log_msg("p - switch to play mode"); - tui.log_msg(""); + this.log_msg(""); + this.log_msg("HELP"); + this.log_msg(""); + this.log_msg("chat mode commands:"); + this.log_msg(":nick NAME - re-name yourself to NAME"); + this.log_msg(":msg USER TEXT - send TEXT to USER"); + this.log_msg(":help - show this help"); + this.log_msg(":play or :p - switch to play mode"); + this.log_msg(":study or :s - switch to study mode"); + this.log_msg(""); + this.log_msg("play mode commands:"); + this.log_msg("w, a, s, d - move avatar"); + this.log_msg("f - flatten surroundings"); + this.log_msg("e - write following ASCII character"); + this.log_msg("c - switch to chat mode"); + this.log_msg("? - switch to study mode"); + this.log_msg(""); + this.log_msg("study mode commands:"); + this.log_msg("w, a, s, d - move question mark"); + this.log_msg("A - annotate terrain"); + this.log_msg("c - switch to chat mode"); + this.log_msg("p - switch to play mode"); + this.log_msg(""); }, draw_info: function() { terminal.drawBox(this.height_header, this.window_width, terminal.rows - this.height_header - this.height_input, this.window_width); @@ -366,7 +384,6 @@ let game = { terminal.initialize(); tui.init(); -tui.log_help(); tui.full_refresh(); server.init(websocket_location); @@ -396,6 +413,11 @@ server.websocket.onmessage = function (event) { } else if (tokens[0] === 'META') { tui.log_msg('@ ' + tokens[1]); tui.refresh(); + } else if (tokens[0] === 'LOGIN_OK') { + server.send(['GET_GAMESTATE']); + tui.log_help(); + tui.log_msg('@ ' + tokens[1]); + tui.switch_mode(mode_chat); } else if (tokens[0] === 'ANNOTATION') { let position = parser.parse_yx(tokens[1]); explorer.update_info_db(position, tokens[2]); @@ -484,6 +506,9 @@ document.addEventListener('keydown', (event) => { } else if (tui.mode.has_input_prompt && event.key == 'Backspace') { tui.shorten_input(); tui.full_refresh(); + } else if (tui.mode == mode_login && event.key == 'Enter') { + server.send(['LOGIN', tui.input]); + tui.switch_mode(mode_login); } else if (tui.mode == mode_annotate && event.key == 'Enter') { explorer.annotate(tui.input); tui.switch_mode(mode_study, true); @@ -498,7 +523,7 @@ document.addEventListener('keydown', (event) => { } else if (tokens[0] == ':help') { tui.log_help(); tui.refresh(); - } else if (tokens[0] == ':login') { + } else if (tokens[0] == ':nick') { if (tokens.length > 1) { server.send(['LOGIN', tokens[1]]); } else {