// 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?', '

This save will be permanently marked as a dev-console world. If achievements are added later, they will not unlock in this world.

You can change money, materials, upgrades and game speed. These commands are logged but cannot be undone.

', [ { 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(); };