<tr>
<td><button id="switch_to_chat">chat mode</button><br /></td>
</tr>
+ <tr>
<td><button id="switch_to_study">study mode</button></td>
<td><button id="toggle_map_mode">toggle terrain/annotations/control view</button>
+ </tr>
<tr>
<td><button id="switch_to_play">play mode</button></td>
<td>
<table>
<tr>
<td><button id="take_thing">take thing</button></td>
+ <td><button id="switch_to_annotate">annotate tile</button></td>
<td><button id="switch_to_edit">change tile</button></td>
- <td><button id="switch_to_admin">become admin</button></td>
+ <td><button id="teleport">teleport</button></td>
</tr>
<tr>
<td><button id="drop_thing">drop thing</button></td>
+ <td><button id="flatten">flatten surroundings</button></td>
<td><button id="switch_to_password">change tile editing password</button></td>
- <td><button id="switch_to_control_pw_type">change tile control password</button></td>
+ <td><button id="switch_to_portal">edit portal link</button></td>
</tr>
+ </table>
+ </td>
+ </tr>
+ <td><button id="switch_to_admin_enter">admin mode</button></td>
+ <td>
+ <table>
<tr>
- <td><button id="flatten">flatten surroundings</button></td>
- <td><button id="switch_to_annotate">annotate tile</button></td>
- <td><button id="switch_to_control_tile_type">change tiles control</button></td>
+ <td><button id="switch_to_control_pw_type">change tile control password</button></td>
</tr>
<tr>
- <td><button id="teleport">teleport</button></td>
- <td><button id="switch_to_portal">edit portal link</button></td>
+ <td><button id="switch_to_control_tile_type">change tiles control</button></td>
</tr>
</table>
</td>
+ <tr>
</tr>
</table>
<h3>edit keybindings</h3> (see <a href="https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key/Key_Values">here</a> for non-obvious available values):<br />
<li><input id="key_switch_to_study" type="text" value="?" />
<li><input id="key_switch_to_edit" type="text" value="m" />
<li><input id="key_switch_to_password" type="text" value="P" />
-<li><input id="key_switch_to_admin" type="text" value="A" />
+<li><input id="key_switch_to_admin_enter" type="text" value="A" />
<li><input id="key_switch_to_control_pw_type" type="text" value="C" />
<li><input id="key_switch_to_control_tile_type" type="text" value="Q" />
<li><input id="key_switch_to_annotate" type="text" value="M" />
</div>
<script>
"use strict";
-let websocket_location = "wss://plomlompom.com/rogue_chat/";
-//let websocket_location = "ws://localhost:8000/";
+//let websocket_location = "wss://plomlompom.com/rogue_chat/";
+let websocket_location = "ws://localhost:8000/";
let mode_helps = {
'play': {
'short': 'map edit password',
'long': 'This mode allows you to change the password that you send to authorize yourself for editing password-protected map tiles. Hit return to confirm and leave.'
},
- 'admin': {
+ 'admin_enter': {
'short': 'become admin',
'long': 'This mode allows you to become admin if you know an admin password.'
+ },
+ 'admin': {
+ 'short': 'admin',
+ 'long': 'This mode allows you access to actions limited to administrators.'
}
}
} else if (tokens[0] === 'LOGIN_OK') {
this.send(['GET_GAMESTATE']);
tui.switch_mode('post_login_wait');
+ } else if (tokens[0] === 'ADMIN_OK') {
+ tui.is_admin = true;
+ tui.log_msg('@ you now have admin rights');
+ tui.switch_mode('admin');
} else if (tokens[0] === 'PORTAL') {
let position = parser.parse_yx(tokens[1]);
game.portals[position] = tokens[2];
height_input: 1,
password: 'foo',
show_help: false,
+ is_admin: false,
mode_waiting_for_server: new Mode('waiting_for_server',
false, false, true),
mode_login: new Mode('login', true, false, true),
false, false, false, true),
mode_portal: new Mode('portal', true, true),
mode_password: new Mode('password', true),
- mode_admin: new Mode('admin', true),
+ mode_admin_enter: new Mode('admin_enter', true),
+ mode_admin: new Mode('admin'),
mode_control_pw_pw: new Mode('control_pw_pw', true),
mode_control_tile_type: new Mode('control_tile_type',
false, false, false, true),
init: function() {
this.mode_play.available_modes = ["chat", "study", "edit",
"annotate", "portal",
- "password", "admin",
- "control_pw_type",
- "control_tile_type"]
- this.mode_study.available_modes = ["chat", "play"]
- this.mode_control_tile_draw.available_modes = ["play"]
+ "password", "admin_enter"];
+ this.mode_study.available_modes = ["chat", "play", "admin_enter"];
+ this.mode_admin.available_modes = ["chat", "play", "study",
+ "control_pw_type",
+ "control_tile_type"];
+ this.mode_control_tile_draw.available_modes = ["admin_enter"];
this.mode = this.mode_waiting_for_server;
this.inputEl = document.getElementById("input");
this.inputEl.focus();
switch_mode: function(mode_name) {
this.inputEl.focus();
this.map_mode = 'terrain';
+ if (mode_name == 'admin_enter' && this.is_admin) {
+ mode_name = 'admin';
+ };
this.mode = this['mode_' + mode_name];
if (game.player_id in game.things && (this.mode.shows_info || this.mode.name == 'control_tile_draw')) {
explorer.position = game.things[game.player_id].position;
if (!this.mode.is_intro && this.mode.name != 'chat') {
document.getElementById("switch_to_chat").disabled = false;
}
+ if (!this.mode.is_intro && this.mode.name != 'admin' && this.mode.name != 'admin_enter') {
+ document.getElementById("switch_to_admin_enter").disabled = false;
+ }
if (this.mode.name == 'login') {
if (this.login_name) {
server.send(['LOGIN', this.login_name]);
document.getElementById("switch_to_edit").disabled = false;
document.getElementById("switch_to_portal").disabled = false;
document.getElementById("switch_to_password").disabled = false;
- document.getElementById("switch_to_admin").disabled = false;
+ document.getElementById("switch_to_admin_enter").disabled = false;
+ } else if (this.mode.name == 'admin') {
document.getElementById("switch_to_control_pw_type").disabled = false;
document.getElementById("switch_to_control_tile_type").disabled = false;
} else if (this.mode.name == 'study') {
document.getElementById("toggle_map_mode").disabled = false;
} else if (this.mode.is_single_char_entry) {
this.show_help = true;
- } else if (this.mode.name == 'admin') {
+ } else if (this.mode.name == 'admin_enter') {
this.log_msg('@ enter admin password:')
} else if (this.mode.name == 'control_pw_pw') {
this.log_msg('@ enter tile control password for "' + this.tile_control_char + '":');
content += '/nick NAME – re-name yourself to NAME\n';
content += '/' + this.keys.switch_to_play + ' or /play – switch to play mode\n';
content += '/' + this.keys.switch_to_study + ' or /study – switch to study mode\n';
+ content += '/' + this.keys.switch_to_admin_enter + ' or /admin – switch to admin mode\n';
}
content += this.mode.list_available_modes();
let start_x = 0;
server.send(['SET_MAP_CONTROL_PASSWORD',
tui.tile_control_char, tui.inputEl.value]);
}
- tui.switch_mode('play');
+ tui.switch_mode('admin');
} else if (tui.mode.name == 'portal' && event.key == 'Enter') {
explorer.set_portal(tui.inputEl.value);
tui.switch_mode('play');
}
tui.password = tui.inputEl.value
tui.switch_mode('play');
- } else if (tui.mode.name == 'admin' && event.key == 'Enter') {
+ } else if (tui.mode.name == 'admin_enter' && event.key == 'Enter') {
server.send(['BECOME_ADMIN', tui.inputEl.value]);
tui.switch_mode('play');
} else if (tui.mode.name == 'chat' && event.key == 'Enter') {
tui.switch_mode('play');
} else if (tokens[0].slice(1) == 'study' || tokens[0][1] == tui.keys.switch_to_study) {
tui.switch_mode('study');
+ } else if (tokens[0].slice(1) == 'admin' || tokens[0][1] == tui.keys.switch_to_admin_enter) {
+ tui.switch_mode('admin_enter');
} else if (tokens[0].slice(1) == 'nick') {
if (tokens.length > 1) {
server.send(['NICK', tokens[1]]);
} else if (event.key in tui.movement_keys) {
explorer.move(tui.movement_keys[event.key]);
};
+ } else if (tui.mode.name == 'admin') {
+ if (tui.mode.mode_switch_on_key(event)) {
+ null;
+ };
}
tui.full_refresh();
}, false);
tui.switch_mode('portal');
tui.full_refresh();
};
-document.getElementById("switch_to_admin").onclick = function() {
+document.getElementById("switch_to_admin_enter").onclick = function() {
tui.switch_mode('admin');
tui.full_refresh();
};