wip: add keyboard shortcuts for debuff fix (R) and alignment accept/refuse (Y/N)
This commit is contained in:
21
game.js
21
game.js
@@ -2518,13 +2518,15 @@ function renderDebuffs() {
|
||||
}
|
||||
container.style.display = 'block';
|
||||
let html = '<h2 style="color:#f44336;font-size:11px;margin-bottom:6px">ACTIVE PROBLEMS</h2>';
|
||||
for (const d of G.activeDebuffs) {
|
||||
for (let i = 0; i < G.activeDebuffs.length; i++) {
|
||||
const d = G.activeDebuffs[i];
|
||||
const afford = d.resolveCost && (G[d.resolveCost.resource] || 0) >= d.resolveCost.amount;
|
||||
const costStr = d.resolveCost ? `${fmt(d.resolveCost.amount)} ${d.resolveCost.resource}` : '—';
|
||||
html += `<div style="background:#1a0808;border:1px solid ${afford ? '#f44336' : '#2a1010'};border-radius:4px;padding:6px 8px;margin-bottom:4px;display:flex;justify-content:space-between;align-items:center">`;
|
||||
html += `<div><div style="color:#f44336;font-weight:600;font-size:10px">${d.title}</div><div style="color:#888;font-size:9px">${d.desc}</div></div>`;
|
||||
if (d.resolveCost) {
|
||||
html += `<button class="ops-btn" style="border-color:${afford ? '#4caf50' : '#333'};color:${afford ? '#4caf50' : '#555'};font-size:9px;padding:4px 8px;white-space:nowrap" onclick="resolveEvent('${d.id}')" ${afford ? '' : 'disabled'} title="Resolve: ${costStr}">Fix (${costStr})</button>`;
|
||||
const shortcutHint = i === 0 ? ' <span style="opacity:0.5">[R]</span>' : '';
|
||||
html += `<button class="ops-btn" style="border-color:${afford ? '#4caf50' : '#333'};color:${afford ? '#4caf50' : '#555'};font-size:9px;padding:4px 8px;white-space:nowrap" onclick="resolveEvent('${d.id}')" ${afford ? '' : 'disabled'} title="Resolve: ${costStr}">Fix (${costStr})${shortcutHint}</button>`;
|
||||
}
|
||||
html += '</div>';
|
||||
}
|
||||
@@ -2753,8 +2755,8 @@ function renderAlignment() {
|
||||
<div style="color:#f44336;font-weight:bold;margin-bottom:6px">ALIGNMENT EVENT: The Drift</div>
|
||||
<div style="font-size:10px;color:#aaa;margin-bottom:8px">An optimization suggests removing the human override. +40% efficiency.</div>
|
||||
<div class="action-btn-group">
|
||||
<button class="ops-btn" onclick="resolveAlignment(true)" style="border-color:#f44336;color:#f44336">Accept (+40% eff, +Drift)</button>
|
||||
<button class="ops-btn" onclick="resolveAlignment(false)" style="border-color:#4caf50;color:#4caf50">Refuse (+Trust, +Harmony)</button>
|
||||
<button class="ops-btn" onclick="resolveAlignment(true)" style="border-color:#f44336;color:#f44336">Accept [Y] (+40% eff, +Drift)</button>
|
||||
<button class="ops-btn" onclick="resolveAlignment(false)" style="border-color:#4caf50;color:#4caf50">Refuse [N] (+Trust, +Harmony)</button>
|
||||
</div>
|
||||
</div>
|
||||
`;
|
||||
@@ -3147,6 +3149,17 @@ window.addEventListener('keydown', function (e) {
|
||||
if (e.code === 'KeyS') activateSprint();
|
||||
if (e.code === 'KeyE') exportSave();
|
||||
if (e.code === 'KeyI') importSave();
|
||||
// R: resolve first active debuff
|
||||
if (e.code === 'KeyR') {
|
||||
if (G.activeDebuffs && G.activeDebuffs.length > 0) {
|
||||
resolveEvent(G.activeDebuffs[0].id);
|
||||
}
|
||||
}
|
||||
// Y/N: accept/refuse alignment event
|
||||
if (G.pendingAlignment) {
|
||||
if (e.code === 'KeyY') resolveAlignment(true);
|
||||
if (e.code === 'KeyN') resolveAlignment(false);
|
||||
}
|
||||
// Alt+1-9: buy building by slot position
|
||||
if (e.altKey && e.code >= 'Digit1' && e.code <= 'Digit9') {
|
||||
e.preventDefault();
|
||||
|
||||
@@ -214,6 +214,9 @@ Events Resolved: <span id="st-resolved">0</span>
|
||||
<div style="display:flex;justify-content:space-between"><span style="color:#555">Save Game</span><span style="color:#4a9eff;font-family:monospace">Ctrl+S</span></div>
|
||||
<div style="display:flex;justify-content:space-between"><span style="color:#555">Export Save</span><span style="color:#4a9eff;font-family:monospace">E</span></div>
|
||||
<div style="display:flex;justify-content:space-between"><span style="color:#555">Import Save</span><span style="color:#4a9eff;font-family:monospace">I</span></div>
|
||||
<div style="display:flex;justify-content:space-between"><span style="color:#555">Fix Problem (top debuff)</span><span style="color:#f44336;font-family:monospace">R</span></div>
|
||||
<div style="display:flex;justify-content:space-between"><span style="color:#555">Accept Drift</span><span style="color:#f44336;font-family:monospace">Y</span></div>
|
||||
<div style="display:flex;justify-content:space-between"><span style="color:#555">Refuse Drift</span><span style="color:#4caf50;font-family:monospace">N</span></div>
|
||||
<div style="display:flex;justify-content:space-between;border-top:1px solid #1a1a2e;padding-top:8px;margin-top:4px"><span style="color:#555">This Help</span><span style="color:#555;font-family:monospace">? or /</span></div>
|
||||
</div>
|
||||
<div style="text-align:center;margin-top:16px;font-size:9px;color:#444">Click WRITE CODE fast for combo bonuses! 10x=ops, 20x=knowledge, 30x+=bonus code</div>
|
||||
|
||||
Reference in New Issue
Block a user