Repository navigation
Expand file tree
/
Copy pathsettings.html
More file actions
138 lines (126 loc) · 6.42 KB
/
Copy pathsettings.html
File metadata and controls
138 lines (126 loc) · 6.42 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Settings – Fantasy Mini Games</title>
<link rel="stylesheet" href="style.css" />
<link rel="icon" href="favicon.svg" type="image/svg+xml" />
</head>
<body>
<div id="app" class="settings-app">
<a href="index.html" class="btn-back">← Return to Tavern</a>
<header>
<h1>⚙️ Settings</h1>
<p class="subtitle">Configure your adventure</p>
</header>
<div class="settings-section">
<h2>👥 Number of Adventurers</h2>
<div class="player-select-grid">
<button class="player-btn" data-players="1">
<span class="player-icon">🧙</span>
<span>1 Player</span>
<span style="font-family:'Cinzel',serif;font-size:0.65rem;color:var(--parchment-dim)">Solo</span>
</button>
<button class="player-btn" data-players="2">
<span class="player-icon">🧙🧝</span>
<span>2 Players</span>
<span style="font-family:'Cinzel',serif;font-size:0.65rem;color:var(--parchment-dim)">Duo</span>
</button>
<button class="player-btn" data-players="3">
<span class="player-icon">🧙🧝🛡️</span>
<span>3 Players</span>
<span style="font-family:'Cinzel',serif;font-size:0.65rem;color:var(--parchment-dim)">Party</span>
</button>
<button class="player-btn" data-players="4">
<span class="player-icon">⚔️🧙🧝🛡️</span>
<span>4 Players</span>
<span style="font-family:'Cinzel',serif;font-size:0.65rem;color:var(--parchment-dim)">Guild</span>
</button>
</div>
<div class="multiplayer-note">
Pass the device between players on their turns. Each player controls their own character when it's their time to act.
</div>
</div>
<div class="settings-section">
<h2>🎮 Multiplayer Support</h2>
<ul class="game-support-list">
<li>🐍 Snake <span class="support-badge support-4p">Up to 4P — Round Robin</span></li>
<li>🧠 Memory Match <span class="support-badge support-4p">Up to 4P — Alternating Turns</span></li>
<li>❌ Tic-Tac-Toe <span class="support-badge support-2p">2 Players</span></li>
<li>🎵 Simon Says <span class="support-badge support-4p">Up to 4P — Pass & Play</span></li>
<li>🔐 Mastermind <span class="support-badge support-4p">Up to 4P — Take Turns</span></li>
<li>🔨 Whack-a-Mole <span class="support-badge support-4p">Up to 4P — Rounds</span></li>
<li>🧩 Puzzle Slider <span class="support-badge support-4p">Up to 4P — Alternating</span></li>
<li>📜 Word Scramble <span class="support-badge support-4p">Up to 4P — Alternating</span></li>
<li>🎲 Dungeon Dice <span class="support-badge support-4p">Up to 4P — Cooperative</span></li>
<li>⚔️ Kingdom Wars <span class="support-badge support-2p">2 Players vs AI or PvP</span></li>
<li>⚙️ Physics Lab <span class="support-badge support-1p">Single Player</span></li>
<li>🚔 Police Chase <span class="support-badge support-4p">Up to 4P — Round Robin</span></li>
</ul>
</div>
<button id="btn-save-settings" class="btn-primary">💾 Save Settings</button>
<div id="save-msg" class="hidden" style="text-align:center;margin-top:14px;font-family:'Press Start 2P',monospace;font-size:0.55rem;color:var(--green-light);">
✅ Settings saved!
</div>
<div class="settings-section" style="margin-top:28px;">
<h2>🎵 Sound Effects</h2>
<div style="margin-top:12px;display:flex;align-items:center;gap:16px;">
<label style="font-family:'Cinzel',serif;font-size:0.85rem;color:var(--parchment-dim);cursor:pointer;">
<input type="checkbox" id="sound-toggle" style="accent-color:var(--gold);width:18px;height:18px;cursor:pointer;" />
Enable sound effects
</label>
</div>
<p style="font-family:'Cinzel',serif;font-size:0.75rem;color:var(--parchment-dim);margin-top:8px;line-height:1.5;">
Applies to Simon Says, Whack-a-Mole, and other games that support audio feedback.
</p>
</div>
<div class="settings-section" style="margin-top:24px;">
<h2>🗑️ Reset Progress</h2>
<p style="font-family:'Cinzel',serif;font-size:0.8rem;color:var(--parchment-dim);margin:10px 0 14px;line-height:1.5;">
Clear all saved high scores and records from your device.
</p>
<button id="btn-reset-scores" class="btn-secondary" style="font-family:'Press Start 2P',monospace;font-size:0.5rem;">
🗑️ Reset All Scores
</button>
<div id="reset-msg" class="hidden" style="text-align:left;margin-top:10px;font-family:'Press Start 2P',monospace;font-size:0.5rem;color:var(--red);">
✓ Scores cleared!
</div>
</div>
</div>
<script>
const savedPlayers = parseInt(localStorage.getItem('miniGamePlayers') || '1', 10);
let selectedPlayers = savedPlayers;
function updateButtons() {
document.querySelectorAll('.player-btn').forEach(btn => {
const n = parseInt(btn.dataset.players, 10);
btn.classList.toggle('active', n === selectedPlayers);
});
}
document.querySelectorAll('.player-btn').forEach(btn => {
btn.addEventListener('click', () => {
selectedPlayers = parseInt(btn.dataset.players, 10);
updateButtons();
});
});
document.getElementById('btn-save-settings').addEventListener('click', () => {
localStorage.setItem('miniGamePlayers', selectedPlayers);
localStorage.setItem('miniGameSound', document.getElementById('sound-toggle').checked ? '1' : '0');
const msg = document.getElementById('save-msg');
msg.classList.remove('hidden');
setTimeout(() => msg.classList.add('hidden'), 2000);
});
// Restore sound toggle state
document.getElementById('sound-toggle').checked = localStorage.getItem('miniGameSound') !== '0';
// Reset scores
document.getElementById('btn-reset-scores').addEventListener('click', () => {
const scoreKeys = ['snakeBest', 'moleBest', 'simonBest', 'wordscrambleBest', 'chaseBest'];
scoreKeys.forEach(k => localStorage.removeItem(k));
const msg = document.getElementById('reset-msg');
msg.classList.remove('hidden');
setTimeout(() => msg.classList.add('hidden'), 2500);
});
updateButtons();
</script>
</body>
</html>