X-Git-Url: https://plomlompom.com/repos/%7B%7Bprefix%7D%7D/copy_free?a=blobdiff_plain;f=rogue_chat_nocanvas_monochrome.html;h=1f2ebe0dcd1865ba8b25e5329c55a9ce8e97aa71;hb=f403ec1356ebb44a70efe60cc21de31e3dccd92c;hp=e699a96efee25a3f51970df37916bc3e69eba425;hpb=e67306357a830cabdd5ce86b2b333499d99da325;p=plomrogue2
diff --git a/rogue_chat_nocanvas_monochrome.html b/rogue_chat_nocanvas_monochrome.html
index e699a96..1f2ebe0 100644
--- a/rogue_chat_nocanvas_monochrome.html
+++ b/rogue_chat_nocanvas_monochrome.html
@@ -23,6 +23,8 @@ move down-left (hex grid):
help:
flatten surroundings:
+take thing under player:
+drop carried thing:
switch to chat mode:
switch to play mode:
switch to study mode:
@@ -177,7 +179,9 @@ let server = {
this.websocket = new WebSocket(this.url);
this.websocket.onopen = function(event) {
server.connected = true;
+ game.thing_types = {};
server.send(['TASKS']);
+ server.send(['THING_TYPES']);
tui.log_msg("@ server connected! :)");
tui.switch_mode(mode_login);
};
@@ -202,12 +206,19 @@ let server = {
game.things = {};
game.portals = {};
game.turn = parseInt(tokens[1]);
- } else if (tokens[0] === 'THING_POS') {
- game.get_thing(tokens[1], true).position = parser.parse_yx(tokens[2]);
+ } else if (tokens[0] === 'THING') {
+ let t = game.get_thing(tokens[3], true);
+ t.position = parser.parse_yx(tokens[1]);
+ t.type_ = tokens[2];
} else if (tokens[0] === 'THING_NAME') {
- game.get_thing(tokens[1], true).name_ = tokens[2];
+ let t = game.get_thing(tokens[1], false);
+ if (t) {
+ t.name_ = tokens[2];
+ };
} else if (tokens[0] === 'TASKS') {
game.tasks = tokens[1].split(',')
+ } else if (tokens[0] === 'THING_TYPE') {
+ game.thing_types[tokens[1]] = tokens[2]
} else if (tokens[0] === 'MAP') {
game.map_geometry = tokens[1];
tui.init_keys();
@@ -435,17 +446,24 @@ let tui = {
line = [];
j = 0;
};
- line.push(map_content[i]);
+ line.push(map_content[i] + ' ');
};
map_lines_split.push(line);
if (this.map_mode == 'terrain') {
+ let used_positions = [];
for (const thing_id in game.things) {
let t = game.things[thing_id];
- map_lines_split[t.position[0]][t.position[1]] = '@';
+ let symbol = game.thing_types[t.type_];
+ if (used_positions.includes(t.position.toString())) {
+ map_lines_split[t.position[0]][t.position[1]] = symbol + '+';
+ } else {
+ map_lines_split[t.position[0]][t.position[1]] = symbol + ' ';
+ };
+ used_positions.push(t.position.toString());
};
}
if (tui.mode.shows_info) {
- map_lines_split[explorer.position[0]][explorer.position[1]] = '?';
+ map_lines_split[explorer.position[0]][explorer.position[1]] = '??';
}
let map_lines = []
if (game.map_geometry == 'Square') {
@@ -455,7 +473,7 @@ let tui = {
} else if (game.map_geometry == 'Hex') {
let indent = 0
for (let line_split of map_lines_split) {
- map_lines.push(' '.repeat(indent) + line_split.join(' '));
+ map_lines.push(' '.repeat(indent) + line_split.join(''));
if (indent == 0) {
indent = 1;
} else {
@@ -527,6 +545,12 @@ let tui = {
if (game.tasks.includes('MOVE')) {
content += "[" + movement_keys_desc + "] â move player\n";
}
+ if (game.tasks.includes('PICK_UP')) {
+ content += "[" + this.keys.take_thing + "] â take thing under player\n";
+ }
+ if (game.tasks.includes('DROP')) {
+ content += "[" + this.keys.drop_thing + "] â drop carried thing\n";
+ }
if (game.tasks.includes('FLATTEN_SURROUNDINGS')) {
content += "[" + tui.keys.flatten + "] â flatten player's surroundings\n";
}
@@ -691,9 +715,9 @@ let explorer = {
for (let t_id in game.things) {
let t = game.things[t_id];
if (t.position[0] == this.position[0] && t.position[1] == this.position[1]) {
- info += "PLAYER @";
+ info += "THING: " + t.type_;
if (t.name_) {
- info += ": " + t.name_;
+ info += " (name: " + t.name_ + ")";
}
info += "\n";
}
@@ -816,6 +840,12 @@ tui.inputEl.addEventListener('keydown', (event) => {
} else if (event.key === tui.keys.flatten
&& game.tasks.includes('FLATTEN_SURROUNDINGS')) {
server.send(["TASK:FLATTEN_SURROUNDINGS", tui.password]);
+ } else if (event.key === tui.keys.take_thing
+ && game.tasks.includes('PICK_UP')) {
+ server.send(["TASK:PICK_UP"]);
+ } else if (event.key === tui.keys.drop_thing
+ && game.tasks.includes('DROP')) {
+ server.send(["TASK:DROP"]);
} else if (event.key in tui.movement_keys
&& game.tasks.includes('MOVE')) {
server.send(['TASK:MOVE', tui.movement_keys[event.key]]);