43 lines
1.9 KiB
JavaScript
43 lines
1.9 KiB
JavaScript
// Bottom panel; command dispatch and state live in sim/devconsole.js.
|
|
function closeDevConsole() {
|
|
$('dev-console').hidden = true;
|
|
$('dev-input').blur();
|
|
}
|
|
function showDevConsole() {
|
|
$('dev-console').hidden = false;
|
|
if (!$('dev-output').children.length) devPrint(['Type help to list commands. Backtick or Escape closes this panel.']);
|
|
$('dev-input').focus();
|
|
}
|
|
function toggleDevConsole() {
|
|
if (!GAME.running || GAME.loading) return;
|
|
if (!$('dev-console').hidden) { closeDevConsole(); return; }
|
|
if (devWorld) { showDevConsole(); return; }
|
|
dialog('Enable dev console?', '<p>This save will be permanently marked as a dev-console world. If achievements are added later, they will not unlock in this world.</p><p>You can change money, materials, upgrades and game speed. These commands are logged but cannot be undone.</p>', [
|
|
{ label: 'Cancel' },
|
|
{ label: 'Enable dev console', cls: 'primary', fn: () => {
|
|
enableDevConsole(); closeModal('m-dialog'); showDevConsole(); saveWorld('main'); return true;
|
|
} },
|
|
]);
|
|
}
|
|
function devPrint(lines) {
|
|
const log = $('dev-output');
|
|
for (const line of lines) { const row = document.createElement('div'); row.textContent = line; log.appendChild(row); }
|
|
while (log.children.length > 400) log.firstChild.remove();
|
|
log.scrollTop = log.scrollHeight;
|
|
}
|
|
function runDevCommand(text) {
|
|
devPrint(devCommand(text, GAME.aim));
|
|
hudDirty = true; lastBagKey = ''; lastBuildKey = '';
|
|
renderWallet();
|
|
if (!$('m-notebook').hidden) renderNotebook();
|
|
}
|
|
$('dev-close').onclick = closeDevConsole;
|
|
$('dev-input').onfocus = () => { keys.clear(); GAME.lmb = GAME.rmb = false; GAME.drag = null; GAME.replace = false; };
|
|
$('dev-input').onkeydown = e => {
|
|
if (e.key === 'Escape' || e.key === '`') { e.preventDefault(); e.stopPropagation(); closeDevConsole(); }
|
|
};
|
|
$('dev-form').onsubmit = e => {
|
|
e.preventDefault();
|
|
const input = $('dev-input'); runDevCommand(input.value); input.value = ''; input.focus();
|
|
};
|