home
·
contact
·
privacy
projects
/
plomrogue2
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Add field of view.
[plomrogue2]
/
rogue_chat_nocanvas_monochrome.html
diff --git
a/rogue_chat_nocanvas_monochrome.html
b/rogue_chat_nocanvas_monochrome.html
index 28d3773b0898b2866cb9c9a7a5a34f1d7e5f730c..66cb79584160760e95a2c4158503fbb53df8abc8 100644
(file)
--- a/
rogue_chat_nocanvas_monochrome.html
+++ b/
rogue_chat_nocanvas_monochrome.html
@@
-26,10
+26,10
@@
flatten surroundings: <input id="key_flatten" type="text" value="F" /><br />
switch to chat mode: <input id="key_switch_to_chat" type="text" value="t" /><br />
switch to play mode: <input id="key_switch_to_play" type="text" value="p" /><br />
switch to study mode: <input id="key_switch_to_study" type="text" value="?" /><br />
switch to chat mode: <input id="key_switch_to_chat" type="text" value="t" /><br />
switch to play mode: <input id="key_switch_to_play" type="text" value="p" /><br />
switch to study mode: <input id="key_switch_to_study" type="text" value="?" /><br />
-edit t
errain
(from play mode): <input id="key_switch_to_edit" type="text" value="m" /><br />
-enter t
errain
password (from play mode): <input id="key_switch_to_password" type="text" value="P" /><br />
-annotate t
errain (from study mode): <input id="key_switch_to_annotate" type="text" value="m
" /><br />
-annotate portal (from
study mode): <input id="key_switch_to_portal" type="text" value="P
" /><br />
+edit t
ile
(from play mode): <input id="key_switch_to_edit" type="text" value="m" /><br />
+enter t
ile
password (from play mode): <input id="key_switch_to_password" type="text" value="P" /><br />
+annotate t
ile (from play mode): <input id="key_switch_to_annotate" type="text" value="M
" /><br />
+annotate portal (from
play mode): <input id="key_switch_to_portal" type="text" value="T
" /><br />
toggle terrain/control view (from study mode): <input id="key_toggle_map_mode" type="text" value="M" /><br />
</div>
<script>
toggle terrain/control view (from study mode): <input id="key_toggle_map_mode" type="text" value="M" /><br />
</div>
<script>
@@
-175,20
+175,18
@@
let server = {
this.url = url;
this.websocket = new WebSocket(this.url);
this.websocket.onopen = function(event) {
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) {
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("@ server disconnected :(");
- tui.log_msg("@ hint: try the '/reconnect' command");
};
this.websocket.onmessage = this.handle_event;
},
};
this.websocket.onmessage = this.handle_event;
},
- reconnect: function() {
- this.reconnect_to(this.url);
- },
reconnect_to: function(url) {
this.websocket.close();
this.init(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]
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') {
} 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') {
} 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);
}
} else {
tui.log_msg('? unhandled input: ' + event.data);
}
@@
-347,10
+347,10
@@
let tui = {
};
};
},
};
};
},
- switch_mode: function(mode
, keep_pos=false
) {
+ switch_mode: function(mode) {
this.show_help = false;
this.map_mode = 'terrain';
this.show_help = false;
this.map_mode = 'terrain';
- if (mode
== mode_study && !keep_pos
&& game.player_id in game.things) {
+ if (mode
.shows_info
&& game.player_id in game.things) {
explorer.position = game.things[game.player_id].position;
}
this.mode = mode;
explorer.position = game.things[game.player_id].position;
}
this.mode = mode;
@@
-520,7
+520,7
@@
let tui = {
},
draw_help: function() {
let movement_keys_desc = Object.keys(this.movement_keys).join(',');
},
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')) {
if (this.mode == mode_play) {
content += "Available actions:\n";
if (game.tasks.includes('MOVE')) {
@@
-530,10
+530,12
@@
let tui = {
content += "[" + tui.keys.flatten + "] – flatten player's surroundings\n";
}
content += '\nOther modes available from here:\n';
content += "[" + tui.keys.flatten + "] – flatten player's surroundings\n";
}
content += '\nOther modes available from here:\n';
- content += '[' + this.keys.switch_to_edit + '] – terrain edit mode\n';
- content += '[' + this.keys.switch_to_password + '] – terrain password edit mode\n';
content += '[' + this.keys.switch_to_chat + '] – chat mode\n';
content += '[' + this.keys.switch_to_study + '] – study mode\n';
content += '[' + this.keys.switch_to_chat + '] – chat mode\n';
content += '[' + this.keys.switch_to_study + '] – study mode\n';
+ content += '[' + this.keys.switch_to_edit + '] – terrain edit mode\n';
+ content += '[' + this.keys.switch_to_portal + '] – portal edit mode\n';
+ content += '[' + this.keys.switch_to_annotate + '] – annotation mode\n';
+ content += '[' + this.keys.switch_to_password + '] – password input mode\n';
} else if (this.mode == mode_study) {
content += "Available actions:\n";
content += '[' + movement_keys_desc + '] – move question mark\n';
} else if (this.mode == mode_study) {
content += "Available actions:\n";
content += '[' + movement_keys_desc + '] – move question mark\n';
@@
-541,8
+543,6
@@
let tui = {
content += '\nOther modes available from here:\n';
content += '[' + this.keys.switch_to_chat + '] – chat mode\n';
content += '[' + this.keys.switch_to_play + '] – play mode\n';
content += '\nOther modes available from here:\n';
content += '[' + this.keys.switch_to_chat + '] – chat mode\n';
content += '[' + this.keys.switch_to_play + '] – play mode\n';
- content += '[' + this.keys.switch_to_portal + '] – portal mode\n';
- content += '[' + this.keys.switch_to_annotate + '] – annotation mode\n';
} else if (this.mode == mode_chat) {
content += '/nick NAME – re-name yourself to NAME\n';
content += '/msg USER TEXT – send TEXT to USER\n';
} else if (this.mode == mode_chat) {
content += '/nick NAME – re-name yourself to NAME\n';
content += '/msg USER TEXT – send TEXT to USER\n';
@@
-661,7
+661,6
@@
let explorer = {
if (target) {
this.position = target
this.query_info();
if (target) {
this.position = target
this.query_info();
- tui.full_refresh();
} else {
terminal.blink_screen();
};
} else {
terminal.blink_screen();
};
@@
-682,8
+681,11
@@
let explorer = {
server.send(["GET_ANNOTATION", unparser.to_yx(explorer.position)]);
},
get_info: function() {
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];
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];
info += "TERRAIN: " + game.map[position_i] + "\n";
for (let t_id in game.things) {
let t = game.things[t_id];
@@
-709,13
+711,13
@@
let explorer = {
if (msg.length == 0) {
msg = " "; // triggers annotation deletion
}
if (msg.length == 0) {
msg = " "; // triggers annotation deletion
}
- server.send(["ANNOTATE",
tui.password, unparser.to_yx(explorer.position), msg
]);
+ server.send(["ANNOTATE",
unparser.to_yx(explorer.position), msg, tui.password
]);
},
set_portal: function(msg) {
if (msg.length == 0) {
msg = " "; // triggers portal deletion
}
},
set_portal: function(msg) {
if (msg.length == 0) {
msg = " "; // triggers portal deletion
}
- server.send(["PORTAL",
tui.password, unparser.to_yx(explorer.position), msg
]);
+ server.send(["PORTAL",
unparser.to_yx(explorer.position), msg, tui.password
]);
}
}
}
}
@@
-726,18
+728,11
@@
tui.inputEl.addEventListener('input', (event) => {
tui.inputEl.value = tui.inputEl.value.slice(0, max_length);
};
tui.recalc_input_lines();
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_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;
}, false);
tui.inputEl.addEventListener('keydown', (event) => {
tui.show_help = false;
@@
-748,20
+743,18
@@
tui.inputEl.addEventListener('keydown', (event) => {
tui.show_help = true;
tui.empty_input();
tui.restore_input_values();
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;
} 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]);
tui.empty_input();
} else if (tui.mode == mode_portal && event.key == 'Enter') {
explorer.set_portal(tui.inputEl.value);
} else if (tui.mode == mode_login && event.key == 'Enter') {
tui.login_name = tui.inputEl.value;
server.send(['LOGIN', tui.inputEl.value]);
tui.empty_input();
} else if (tui.mode == mode_portal && event.key == 'Enter') {
explorer.set_portal(tui.inputEl.value);
- tui.switch_mode(mode_
study, true
);
+ tui.switch_mode(mode_
play
);
} else if (tui.mode == mode_annotate && event.key == 'Enter') {
explorer.annotate(tui.inputEl.value);
} else if (tui.mode == mode_annotate && event.key == 'Enter') {
explorer.annotate(tui.inputEl.value);
- tui.switch_mode(mode_
study, true
);
+ tui.switch_mode(mode_
play
);
} else if (tui.mode == mode_password && event.key == 'Enter') {
if (tui.inputEl.value.length == 0) {
tui.inputEl.value = " ";
} else if (tui.mode == mode_password && event.key == 'Enter') {
if (tui.inputEl.value.length == 0) {
tui.inputEl.value = " ";
@@
-796,24
+789,17
@@
tui.inputEl.addEventListener('keydown', (event) => {
} else {
tui.log_msg('? need message target and message');
}
} 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');
}
} else {
tui.log_msg('? unknown command');
}
- } else {
- server.send(['ALL', tui.inputEl.value]);
+
} else {
+
server.send(['ALL', tui.inputEl.value]);
}
}
- } else if (tui.inputEl.valuelength > 0) {
- server.send(['ALL', tui.inputEl.value]);
+
} else if (tui.inputEl.valuelength > 0) {
+
server.send(['ALL', tui.inputEl.value]);
}
tui.empty_input();
}
tui.empty_input();
- tui.full_refresh();
- } else if (tui.mode == mode_play) {
+ } else if (tui.mode == mode_play) {
if (event.key === tui.keys.switch_to_chat) {
event.preventDefault();
tui.switch_mode(mode_chat);
if (event.key === tui.keys.switch_to_chat) {
event.preventDefault();
tui.switch_mode(mode_chat);
@@
-832,6
+818,12
@@
tui.inputEl.addEventListener('keydown', (event) => {
} else if (event.key in tui.movement_keys
&& game.tasks.includes('MOVE')) {
server.send(['TASK:MOVE', tui.movement_keys[event.key]]);
} else if (event.key in tui.movement_keys
&& game.tasks.includes('MOVE')) {
server.send(['TASK:MOVE', tui.movement_keys[event.key]]);
+ } else if (event.key === tui.keys.switch_to_portal) {
+ event.preventDefault();
+ tui.switch_mode(mode_portal);
+ } else if (event.key === tui.keys.switch_to_annotate) {
+ event.preventDefault();
+ tui.switch_mode(mode_annotate);
};
} else if (tui.mode == mode_study) {
if (event.key === tui.keys.switch_to_chat) {
};
} else if (tui.mode == mode_study) {
if (event.key === tui.keys.switch_to_chat) {
@@
-839,9
+831,6
@@
tui.inputEl.addEventListener('keydown', (event) => {
tui.switch_mode(mode_chat);
} else if (event.key == tui.keys.switch_to_play) {
tui.switch_mode(mode_play);
tui.switch_mode(mode_chat);
} else if (event.key == tui.keys.switch_to_play) {
tui.switch_mode(mode_play);
- } else if (event.key === tui.keys.switch_to_portal) {
- event.preventDefault();
- tui.switch_mode(mode_portal);
} else if (event.key in tui.movement_keys) {
explorer.move(tui.movement_keys[event.key]);
} else if (event.key == tui.keys.toggle_map_mode) {
} else if (event.key in tui.movement_keys) {
explorer.move(tui.movement_keys[event.key]);
} else if (event.key == tui.keys.toggle_map_mode) {
@@
-850,12
+839,9
@@
tui.inputEl.addEventListener('keydown', (event) => {
} else {
tui.map_mode = 'terrain';
}
} else {
tui.map_mode = 'terrain';
}
- tui.full_refresh();
- } else if (event.key === tui.keys.switch_to_annotate) {
- event.preventDefault();
- tui.switch_mode(mode_annotate);
};
}
};
}
+ tui.full_refresh();
}, false);
rows_selector.addEventListener('input', function() {
}, false);
rows_selector.addEventListener('input', function() {
@@
-887,5
+873,13
@@
window.setInterval(function() {
tui.inputEl.focus();
}
}, 100);
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);
</script>
</body></html>
</script>
</body></html>