beacon: add auto-save toast notification #29

Merged
Rockachopa merged 3 commits from feature/save-toast into main 2026-04-10 03:43:56 +00:00
2 changed files with 16 additions and 0 deletions
Showing only changes of commit 7359610825 - Show all commits

15
game.js
View File

@@ -1355,6 +1355,20 @@ function renderAlignment() {
}
// === SAVE / LOAD ===
function showSaveToast() {
const el = document.getElementById('save-toast');
if (!el) return;
const elapsed = Math.floor((Date.now() - G.startedAt) / 1000);
const m = Math.floor(elapsed / 60);
const s = elapsed % 60;
el.textContent = `Saved [${m}:${s.toString().padStart(2, '0')}]`;
el.style.display = 'block';
void el.offsetHeight;
el.style.opacity = '1';
setTimeout(() => { el.style.opacity = '0'; }, 1500);
setTimeout(() => { el.style.display = 'none'; }, 2000);
}
function saveGame() {
const saveData = {
code: G.code, compute: G.compute, knowledge: G.knowledge, users: G.users, impact: G.impact,
@@ -1379,6 +1393,7 @@ function saveGame() {
};
localStorage.setItem('the-beacon-v2', JSON.stringify(saveData));
showSaveToast();
}
function loadGame() {

View File

@@ -126,6 +126,7 @@ Drift: <span id="st-drift">0</span>
<h2>SYSTEM LOG</h2>
<div id="log-entries"></div>
</div>
<div id="save-toast" style="display:none;position:fixed;top:16px;right:16px;background:#0e1420;border:1px solid #2a3a4a;color:#4a9eff;font-size:10px;padding:6px 12px;border-radius:4px;z-index:50;opacity:0;transition:opacity 0.4s;pointer-events:none">Save</div>
<div id="drift-ending">
<h2>THE DRIFT</h2>
<p>You became very good at what you do.</p>