awacke1 commited on
Commit
761597c
ยท
verified ยท
1 Parent(s): ec303be

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +15 -12
app.py CHANGED
@@ -52,7 +52,7 @@ AUDIO_DIR = "audio_logs"
52
  STATE_FILE = "user_state.txt"
53
  CHAT_FILE = os.path.join(CHAT_DIR, "quest_log.md")
54
 
55
- # Session State Init
56
  def init_session_state():
57
  defaults = {
58
  'server_running': False, 'server_task': None, 'active_connections': {},
@@ -65,6 +65,18 @@ def init_session_state():
65
  for k, v in defaults.items():
66
  if k not in st.session_state:
67
  st.session_state[k] = v
 
 
 
 
 
 
 
 
 
 
 
 
68
 
69
  # Helpers
70
  def format_timestamp(username=""):
@@ -163,7 +175,7 @@ async def websocket_handler(websocket, path):
163
  if room_id not in st.session_state.active_connections:
164
  st.session_state.active_connections[room_id] = {}
165
  st.session_state.active_connections[room_id][client_id] = websocket
166
- username = st.session_state.get('username', random.choice(list(CHARACTERS.keys())))
167
  st.session_state.players[client_id] = {
168
  "username": username,
169
  "x": random.uniform(-20, 20),
@@ -227,7 +239,7 @@ def start_websocket_server():
227
  asyncio.set_event_loop(loop)
228
  loop.run_until_complete(run_websocket_server())
229
 
230
- # Game HTML with Map
231
  html_code = f"""
232
  <!DOCTYPE html>
233
  <html lang="en">
@@ -359,15 +371,6 @@ html_code = f"""
359
 
360
  # Main Game Loop
361
  def main():
362
- init_session_state()
363
- saved_username = load_username()
364
- if saved_username and saved_username in CHARACTERS:
365
- st.session_state.username = saved_username
366
- if not st.session_state.username:
367
- st.session_state.username = random.choice(list(CHARACTERS.keys()))
368
- asyncio.run(save_chat_entry(st.session_state.username, "๐Ÿ—บ๏ธ Begins the Rocky Mountain Quest!", CHARACTERS[st.session_state.username]["voice"]))
369
- save_username(st.session_state.username)
370
-
371
  st.title(f"๐ŸŽฎ {GAME_NAME}")
372
  st.subheader(f"๐ŸŒ„ {st.session_state.username}โ€™s Adventure - Score: {st.session_state.score} ๐Ÿ†")
373
 
 
52
  STATE_FILE = "user_state.txt"
53
  CHAT_FILE = os.path.join(CHAT_DIR, "quest_log.md")
54
 
55
+ # Session State Init (Moved to Top and Called Immediately)
56
  def init_session_state():
57
  defaults = {
58
  'server_running': False, 'server_task': None, 'active_connections': {},
 
65
  for k, v in defaults.items():
66
  if k not in st.session_state:
67
  st.session_state[k] = v
68
+ # Ensure username is initialized immediately
69
+ if st.session_state.username is None:
70
+ saved_username = load_username()
71
+ if saved_username and saved_username in CHARACTERS:
72
+ st.session_state.username = saved_username
73
+ else:
74
+ st.session_state.username = random.choice(list(CHARACTERS.keys()))
75
+ asyncio.run(save_chat_entry(st.session_state.username, "๐Ÿ—บ๏ธ Begins the Rocky Mountain Quest!", CHARACTERS[st.session_state.username]["voice"]))
76
+ save_username(st.session_state.username)
77
+
78
+ # Call init_session_state immediately to ensure username is set
79
+ init_session_state()
80
 
81
  # Helpers
82
  def format_timestamp(username=""):
 
175
  if room_id not in st.session_state.active_connections:
176
  st.session_state.active_connections[room_id] = {}
177
  st.session_state.active_connections[room_id][client_id] = websocket
178
+ username = st.session_state.username # Now guaranteed to be set
179
  st.session_state.players[client_id] = {
180
  "username": username,
181
  "x": random.uniform(-20, 20),
 
239
  asyncio.set_event_loop(loop)
240
  loop.run_until_complete(run_websocket_server())
241
 
242
+ # Game HTML with Map (Now Safe to Use st.session_state.username)
243
  html_code = f"""
244
  <!DOCTYPE html>
245
  <html lang="en">
 
371
 
372
  # Main Game Loop
373
  def main():
 
 
 
 
 
 
 
 
 
374
  st.title(f"๐ŸŽฎ {GAME_NAME}")
375
  st.subheader(f"๐ŸŒ„ {st.session_state.username}โ€™s Adventure - Score: {st.session_state.score} ๐Ÿ†")
376