From: Christian Heller Date: Tue, 27 Oct 2020 05:53:26 +0000 (+0100) Subject: Initialize (centered) map view even before login. X-Git-Url: https://plomlompom.com/repos/%7B%7Bdb.prefix%7D%7D/%7B%7B%20web_path%20%7D%7D/decks/calendar?a=commitdiff_plain;h=dcb275a3ae06858ba25eee3c5cd7ab6c1d44a4df;p=plomrogue2-experiments Initialize (centered) map view even before login. --- diff --git a/new2/plomrogue/commands.py b/new2/plomrogue/commands.py index 4daf0ba..88a5211 100644 --- a/new2/plomrogue/commands.py +++ b/new2/plomrogue/commands.py @@ -28,6 +28,10 @@ def cmd_LOGIN(game, nick, connection_id): game.io.send('PLAYER_ID %s' % t.id_, connection_id) cmd_LOGIN.argtypes = 'string' +def cmd_GET_GAMESTATE(game, connection_id): + game.send_gamestate(connection_id) +cmd_GET_GAMESTATE.argtypes = '' + def cmd_QUERY(game, target_nick, msg, connection_id): if not connection_id in game.sessions: raise GameError('can only query when logged in') diff --git a/new2/plomrogue/game.py b/new2/plomrogue/game.py index 406d96d..e7a4262 100755 --- a/new2/plomrogue/game.py +++ b/new2/plomrogue/game.py @@ -3,7 +3,7 @@ from plomrogue.tasks import (Task_WAIT, Task_MOVE, Task_WRITE, from plomrogue.errors import GameError from plomrogue.commands import (cmd_ALL, cmd_LOGIN, cmd_QUERY, cmd_PING, cmd_TURN, cmd_MAP_LINE, cmd_MAP, cmd_GET_ANNOTATION, - cmd_ANNOTATE) + cmd_ANNOTATE, cmd_GET_GAMESTATE) from plomrogue.io import GameIO from plomrogue.misc import quote from plomrogue.things import Thing, ThingPlayer @@ -50,6 +50,7 @@ class Game(GameBase): 'TURN': cmd_TURN, 'MAP_LINE': cmd_MAP_LINE, 'GET_ANNOTATION': cmd_GET_ANNOTATION, + 'GET_GAMESTATE': cmd_GET_GAMESTATE, 'ANNOTATE': cmd_ANNOTATE, 'MAP': cmd_MAP, 'PING': cmd_PING} diff --git a/new2/rogue_chat_nocanvas_monochrome.html b/new2/rogue_chat_nocanvas_monochrome.html index eaa180d..c5a4a1f 100644 --- a/new2/rogue_chat_nocanvas_monochrome.html +++ b/new2/rogue_chat_nocanvas_monochrome.html @@ -153,14 +153,15 @@ let tui = { }; map_lines.push(line); let player_position = [0,0]; + let center_pos = [Math.floor(game.map_size[0] / 2), + Math.floor(game.map_size[1] / 2)]; for (const thing_id in game.things) { let t = game.things[thing_id]; map_lines[t[0]][t[1]] = '@'; if (game.player_id == thing_id) { - player_position = t; + center_pos = t; } }; - let center_pos = player_position; if (tui.mode == 'study' || tui.mode == 'annotate') { map_lines[explorer.position[0]][explorer.position[1]] = '?'; center_pos = explorer.position; @@ -271,6 +272,10 @@ tui.log_help(); tui.full_refresh(); let websocket = new WebSocket(websocket_location); +websocket.onopen = function (event) { + window.setInterval(function() { websocket.send('PING') }, 30000); + websocket.send('GET_GAMESTATE'); +} websocket.onmessage = function (event) { let tokens = parser.tokenize(event.data)[0]; if (tokens[0] === 'TURN') { @@ -481,7 +486,5 @@ document.addEventListener('keydown', (event) => { } } }, false); - -window.setInterval(function() { websocket.send('PING') }, 30000);