Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 19 additions & 1 deletion js/main.js
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ const levelEl = document.getElementById('level');
const timerEl = document.getElementById('timer');

const STORAGE_KEY = 'teeter_highscores';
const PLAYER_NAME_STORAGE_KEY = 'teeter_player_name';
const MAX_SCORES = 10;
const NON_QUALIFYING_DELAY = 2000;
const CHUNK_LENGTH = 20;
Expand Down Expand Up @@ -140,6 +141,18 @@ function renderLeaderboard() {
function showLeaderboard() { renderLeaderboard(); leaderboardPanel.classList.add('visible'); }
function hideLeaderboard() { leaderboardPanel.classList.remove('visible'); }

// --- Player name persistence ---

function loadPlayerName() {
try {
return localStorage.getItem(PLAYER_NAME_STORAGE_KEY) || '';
} catch { return ''; }
}

function savePlayerName(name) {
try { localStorage.setItem(PLAYER_NAME_STORAGE_KEY, name); } catch {}
}

// --- Game over flow ---

function enterGameOver() {
Expand All @@ -152,8 +165,12 @@ function enterGameOver() {
if (scoreQualifies(finalScore)) {
gameoverMessage.textContent = 'New high score!';
nameEntry.classList.add('visible');
nameInput.value = '';
const savedName = loadPlayerName();
nameInput.value = savedName;
nameInput.focus();
if (savedName) {
nameInput.select();
}
} else {
gameoverMessage.textContent = '';
nameEntry.classList.remove('visible');
Expand All @@ -168,6 +185,7 @@ function enterGameOver() {
function submitScore() {
let name = nameInput.value.trim();
if (!name) name = 'Anonymous';
savePlayerName(name);
addScore(name, finalScore);
exitGameOver();
}
Expand Down
20 changes: 19 additions & 1 deletion public/js/main.js
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@ const sensitivityReset = document.getElementById('sensitivity-reset');
const INIT_TIMEOUT_MS = 15000;

const SENSITIVITY_STORAGE_KEY = 'teeter_sensitivity';
const PLAYER_NAME_STORAGE_KEY = 'teeter_player_name';
const MAX_SCORES = 10;
const NON_QUALIFYING_DELAY = 2000;
const CHUNK_LENGTH = 20;
Expand Down Expand Up @@ -136,6 +137,18 @@ function saveSensitivity(val) {
try { localStorage.setItem(SENSITIVITY_STORAGE_KEY, String(val)); } catch {}
}

// --- Player name persistence ---

function loadPlayerName() {
try {
return localStorage.getItem(PLAYER_NAME_STORAGE_KEY) || '';
} catch { return ''; }
}

function savePlayerName(name) {
try { localStorage.setItem(PLAYER_NAME_STORAGE_KEY, name); } catch {}
}

function showSettings() { settingsPanel.classList.add('visible'); }
function hideSettings() { settingsPanel.classList.remove('visible'); }

Expand Down Expand Up @@ -294,8 +307,12 @@ async function enterGameOver() {
if (qualifies) {
gameoverMessage.textContent = 'New high score!';
nameEntry.classList.add('visible');
nameInput.value = '';
const savedName = loadPlayerName();
nameInput.value = savedName;
nameInput.focus();
if (savedName) {
nameInput.select();
}
} else {
gameoverMessage.textContent = '';
nameEntry.classList.remove('visible');
Expand All @@ -306,6 +323,7 @@ async function enterGameOver() {
async function submitScore() {
let name = nameInput.value.trim();
if (!name) name = 'Anonymous';
savePlayerName(name);
nameSubmit.disabled = true;
nameSubmit.textContent = 'Submitting...';
const result = await addScore(name, finalScore);
Expand Down
Loading