-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.html
More file actions
166 lines (154 loc) · 6.52 KB
/
index.html
File metadata and controls
166 lines (154 loc) · 6.52 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
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Stroll — A calm, relaxing browser-based 3D city walk at golden hour. Built with Three.js.">
<meta name="theme-color" content="#1a1a2e">
<title>Stroll — A Peaceful City Walk</title>
<link rel="icon" href="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'><text y='.9em' font-size='90'>🌇</text></svg>">
<link rel="stylesheet" href="css/style.css">
</head>
<body>
<!-- Cinematic Intro Overlay -->
<div id="cinematic-overlay">
<div id="cinematic-title">Stroll</div>
<div id="cinematic-subtitle">a peaceful city walk</div>
<div id="cinematic-skip">Press any key to skip</div>
</div>
<!-- UI Overlay -->
<div id="ui-overlay">
<div id="title">Stroll</div>
<div id="subtitle">a peaceful city walk</div>
<div id="controls-hint">
<span class="key">W A S D</span> or <span class="key">↑ ← ↓ →</span> to walk
<br><span class="key">Mouse</span> to look around
<br><span class="key">Left Click</span> shoot · <span class="key">Right Click</span> interact
<br><span class="key">M</span> sound · <span class="key">P</span> photo · <span class="key">N</span> meditate
<br><span class="key">J</span> journal · <span class="key">R</span> weather · <span class="key">G</span> mini-games
<br><span class="key">Esc</span> pause
<br><span class="key">Click</span> to start
</div>
<div id="thought-bubble"></div>
<div id="sound-toggle" role="button" aria-label="Toggle ambient sound" tabindex="0" title="Toggle ambient sound (M)">🔇</div>
<!-- Crosshair for orientation -->
<div id="crosshair"></div>
</div>
<!-- HUD -->
<div id="hud">
<div id="hud-left">
<div class="hud-item" title="Score">
<span class="hud-icon">✨</span>
<span id="hud-score">0</span>
</div>
<div class="hud-item" title="Collectibles">
<span class="hud-icon">💎</span>
<span id="hud-collected">0/0</span>
</div>
<div class="hud-item" title="Waypoints">
<span class="hud-icon">📍</span>
<span id="hud-waypoints">0/0</span>
</div>
</div>
<div id="hud-center">
<div id="compass">
<div id="compass-ring">
<div id="compass-needle"></div>
<span id="compass-n">N</span>
</div>
<div id="compass-dir">N</div>
</div>
</div>
<div id="hud-right">
<div class="hud-item" title="Time of Day">
<span class="hud-icon">🌅</span>
<span id="hud-time">Golden Hour</span>
</div>
</div>
</div>
<!-- Toast Notifications -->
<div id="toast-container"></div>
<!-- Photo Mode UI -->
<div id="photo-mode-ui" style="display:none;">
<div id="photo-mode-header">📸 Photo Mode</div>
<div id="photo-mode-controls">
<span>Mouse: Orbit</span> · <span>Scroll: Zoom</span>
<br><span class="key">F</span> Filter: <span id="filter-name">None</span>
<br><span class="key">Space</span> Take Photo
<br><span class="key">P</span> Exit
</div>
<div id="photo-vignette"></div>
</div>
<!-- Meditation UI -->
<div id="meditation-ui" style="display:none;">
<div id="meditation-header">🧘 Meditation</div>
<div id="meditation-hint">Press N to exit</div>
</div>
<!-- Breathing Guide -->
<div id="breathing-guide" style="display:none;">
<div id="breathing-circle"></div>
<div id="breathing-text">Breathe in...</div>
</div>
<!-- Pause Menu -->
<div id="pause-menu" style="display:none;">
<div id="pause-content">
<div id="pause-title">⏸ Paused</div>
<button id="pause-resume" class="pause-btn">Resume</button>
<div id="pause-stats"></div>
<div id="pause-controls-info">
<div><span class="key">W A S D</span> Walk</div>
<div><span class="key">P</span> Photo Mode</div>
<div><span class="key">N</span> Meditation</div>
<div><span class="key">J</span> Journal</div>
<div><span class="key">M</span> Toggle Sound</div>
<div><span class="key">Esc</span> Pause/Resume</div>
<div><span class="key">Click</span> Interact with flowers</div>
</div>
</div>
</div>
<!-- Discovery Journal -->
<div id="journal-overlay" style="display:none;">
<div id="journal-content">
<div id="journal-header">
<span>📖 Discovery Journal</span>
<button id="journal-close" class="journal-btn">✕</button>
</div>
<div id="journal-tabs">
<button class="journal-tab active" data-tab="discoveries">Discoveries</button>
<button class="journal-tab" data-tab="achievements">Achievements</button>
</div>
<div id="journal-discoveries" class="journal-section"></div>
<div id="journal-achievements" class="journal-section" style="display:none;"></div>
</div>
</div>
<!-- Loading screen with progress bar -->
<div id="loading-screen">
<div id="loading-content">
<div id="loading-title">🌇</div>
<div id="loading-text">Loading your peaceful walk...</div>
<div id="loading-bar">
<div id="loading-bar-fill"></div>
</div>
</div>
</div>
<!-- Mobile controls -->
<div id="mobile-controls">
<div id="joystick-area">
<div id="joystick-base">
<div id="joystick-thumb"></div>
</div>
</div>
</div>
<!-- Import map so bare "three" specifiers inside CDN addons resolve correctly -->
<script type="importmap">
{
"imports": {
"three": "https://cdn.jsdelivr.net/npm/three@0.160.0/build/three.module.js",
"three/addons/": "https://cdn.jsdelivr.net/npm/three@0.160.0/examples/jsm/"
}
}
</script>
<!-- ES Module entry point (Three.js loaded via import map) -->
<script type="module" src="js/main.js"></script>
</body>
</html>