awacke1 commited on
Commit
b9973f5
·
verified ·
1 Parent(s): 761597c

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +28 -28
app.py CHANGED
@@ -52,33 +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 (Moved to Top and Called Immediately)
56
- def init_session_state():
57
- defaults = {
58
- 'server_running': False, 'server_task': None, 'active_connections': {},
59
- 'chat_history': [], 'audio_cache': {}, 'last_transcript': "",
60
- 'username': None, 'score': 0, 'treasures': 0, 'location': START_LOCATION,
61
- 'speech_processed': False, 'players': {}, 'last_update': time.time(),
62
- 'update_interval': 20, 'x_pos': 0, 'z_pos': 0, 'move_left': False,
63
- 'move_right': False, 'move_up': False, 'move_down': False
64
- }
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=""):
83
  now = datetime.now().strftime("%Y%m%d_%H%M%S")
84
  return f"{now}-by-{username}"
@@ -113,6 +87,32 @@ def load_username():
113
  return f.read().strip()
114
  return None
115
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
116
  # Audio Processing
117
  async def async_edge_tts_generate(text, voice, username):
118
  cache_key = f"{text[:100]}_{voice}"
@@ -239,7 +239,7 @@ def start_websocket_server():
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">
 
52
  STATE_FILE = "user_state.txt"
53
  CHAT_FILE = os.path.join(CHAT_DIR, "quest_log.md")
54
 
55
+ # Helpers (Moved Above init_session_state to Define load_username First)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
56
  def format_timestamp(username=""):
57
  now = datetime.now().strftime("%Y%m%d_%H%M%S")
58
  return f"{now}-by-{username}"
 
87
  return f.read().strip()
88
  return None
89
 
90
+ # Session State Init (Now Can Safely Use load_username)
91
+ def init_session_state():
92
+ defaults = {
93
+ 'server_running': False, 'server_task': None, 'active_connections': {},
94
+ 'chat_history': [], 'audio_cache': {}, 'last_transcript': "",
95
+ 'username': None, 'score': 0, 'treasures': 0, 'location': START_LOCATION,
96
+ 'speech_processed': False, 'players': {}, 'last_update': time.time(),
97
+ 'update_interval': 20, 'x_pos': 0, 'z_pos': 0, 'move_left': False,
98
+ 'move_right': False, 'move_up': False, 'move_down': False
99
+ }
100
+ for k, v in defaults.items():
101
+ if k not in st.session_state:
102
+ st.session_state[k] = v
103
+ # Ensure username is initialized immediately
104
+ if st.session_state.username is None:
105
+ saved_username = load_username()
106
+ if saved_username and saved_username in CHARACTERS:
107
+ st.session_state.username = saved_username
108
+ else:
109
+ st.session_state.username = random.choice(list(CHARACTERS.keys()))
110
+ asyncio.run(save_chat_entry(st.session_state.username, "🗺️ Begins the Rocky Mountain Quest!", CHARACTERS[st.session_state.username]["voice"]))
111
+ save_username(st.session_state.username)
112
+
113
+ # Call init_session_state immediately to ensure username is set
114
+ init_session_state()
115
+
116
  # Audio Processing
117
  async def async_edge_tts_generate(text, voice, username):
118
  cache_key = f"{text[:100]}_{voice}"
 
239
  asyncio.set_event_loop(loop)
240
  loop.run_until_complete(run_websocket_server())
241
 
242
+ # Game HTML with Map
243
  html_code = f"""
244
  <!DOCTYPE html>
245
  <html lang="en">