home
·
contact
·
privacy
projects
/
plomrogue2-experiments
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix QUERY/msg bug.
[plomrogue2-experiments]
/
new2
/
rogue_chat_nocanvas_monochrome.html
diff --git
a/new2/rogue_chat_nocanvas_monochrome.html
b/new2/rogue_chat_nocanvas_monochrome.html
index 82df80c5ac78af50d86fac88ef1aa9cdd5897e1f..3f907c0432b4eadcc58e5013b04e589b088f7de4 100644
(file)
--- a/
new2/rogue_chat_nocanvas_monochrome.html
+++ b/
new2/rogue_chat_nocanvas_monochrome.html
@@
-59,6
+59,7
@@
let terminal = {
let parser = {
tokenize: function(str) {
let parser = {
tokenize: function(str) {
+ let token_ends = [];
let tokens = [];
let token = ''
let quoted = false;
let tokens = [];
let token = ''
let quoted = false;
@@
-72,7
+73,7
@@
let parser = {
} else if (c == '\\') {
escaped = true;
} else if (c == '"') {
} else if (c == '\\') {
escaped = true;
} else if (c == '"') {
-
quoted = false
+ quoted = false
} else {
token += c;
}
} else {
token += c;
}
@@
-80,6
+81,7
@@
let parser = {
quoted = true
} else if (c === ' ') {
if (token.length > 0) {
quoted = true
} else if (c === ' ') {
if (token.length > 0) {
+ token_ends.push(i);
tokens.push(token);
token = '';
}
tokens.push(token);
token = '';
}
@@
-90,7
+92,11
@@
let parser = {
if (token.length > 0) {
tokens.push(token);
}
if (token.length > 0) {
tokens.push(token);
}
- return tokens;
+ let token_starts = [];
+ for (let i = 0; i < token_ends.length; i++) {
+ token_starts.push(token_ends[i] - tokens[i].length);
+ };
+ return [tokens, token_starts];
},
parse_yx(position_string) {
let coordinate_strings = position_string.split(',')
},
parse_yx(position_string) {
let coordinate_strings = position_string.split(',')
@@
-254,7
+260,7
@@
tui.full_refresh();
let websocket = new WebSocket(websocket_location);
websocket.onmessage = function (event) {
let websocket = new WebSocket(websocket_location);
websocket.onmessage = function (event) {
- let tokens = parser.tokenize(event.data);
+ let tokens = parser.tokenize(event.data)
[0]
;
if (tokens[0] === 'TURN') {
game.things = {}
game.turn = parseInt(tokens[1]);
if (tokens[0] === 'TURN') {
game.things = {}
game.turn = parseInt(tokens[1]);
@@
-330,7
+336,7
@@
document.addEventListener('keydown', (event) => {
tui.draw_input_line();
tui.refresh();
} else if (event.key == 'Enter') {
tui.draw_input_line();
tui.refresh();
} else if (event.key == 'Enter') {
- let
tokens
= parser.tokenize(chat.input_line);
+ let
[tokens, token_starts]
= parser.tokenize(chat.input_line);
if (tokens.length > 0 && tokens[0].length > 0) {
if (tokens[0][0] == '/') {
if (tokens[0] == '/play') {
if (tokens.length > 0 && tokens[0].length > 0) {
if (tokens[0][0] == '/') {
if (tokens[0] == '/play') {
@@
-346,8
+352,8
@@
document.addEventListener('keydown', (event) => {
}
} else if (tokens[0] == '/msg') {
if (tokens.length > 2) {
}
} else if (tokens[0] == '/msg') {
if (tokens.length > 2) {
- // FIXME only sends first word
- websocket.send('QUERY ' + quote(tokens[1]) + ' ' + quote(
tokens[2]
));
+ let msg = chat.input_line.slice(token_starts[2]);
+ websocket.send('QUERY ' + quote(tokens[1]) + ' ' + quote(
msg
));
} else {
tui.log_msg('? need message target and message');
}
} else {
tui.log_msg('? need message target and message');
}