Spaces:
Running
Running
Update app.py
Browse files
app.py
CHANGED
@@ -106,7 +106,7 @@ def play_and_download_audio(file_path):
|
|
106 |
st.audio(file_path)
|
107 |
st.markdown(get_download_link(file_path), unsafe_allow_html=True)
|
108 |
|
109 |
-
# WebSocket Broadcast
|
110 |
async def broadcast_message(message, room_id):
|
111 |
if room_id in st.session_state.active_connections:
|
112 |
disconnected = []
|
@@ -144,7 +144,7 @@ async def load_chat():
|
|
144 |
content = f.read().strip()
|
145 |
return content.split('\n')
|
146 |
|
147 |
-
# Session State Init
|
148 |
def init_session_state():
|
149 |
defaults = {
|
150 |
'server_running': False, 'server_task': None, 'active_connections': {},
|
@@ -240,7 +240,7 @@ def start_websocket_server():
|
|
240 |
asyncio.set_event_loop(loop)
|
241 |
loop.run_until_complete(run_websocket_server())
|
242 |
|
243 |
-
# Game HTML with Map
|
244 |
html_code = f"""
|
245 |
<!DOCTYPE html>
|
246 |
<html lang="en">
|
@@ -296,6 +296,8 @@ html_code = f"""
|
|
296 |
|
297 |
let players = {{}};
|
298 |
const playerMeshes = {{}};
|
|
|
|
|
299 |
|
300 |
function updatePlayers(playerData) {{
|
301 |
playerData.forEach(player => {{
|
@@ -315,38 +317,25 @@ html_code = f"""
|
|
315 |
document.addEventListener('keydown', (event) => {{
|
316 |
const speed = 2;
|
317 |
switch (event.code) {{
|
318 |
-
case 'ArrowLeft': case 'KeyA':
|
319 |
-
|
320 |
-
|
321 |
-
ws.send(`{playerName}|MOVE:${{st.session_state.x_pos}}:${{st.session_state.z_pos}}`);
|
322 |
break;
|
323 |
-
case 'ArrowRight': case 'KeyD':
|
324 |
-
|
325 |
-
|
326 |
-
ws.send(`{playerName}|MOVE:${{st.session_state.x_pos}}:${{st.session_state.z_pos}}`);
|
327 |
break;
|
328 |
-
case 'ArrowUp': case 'KeyW':
|
329 |
-
|
330 |
-
|
331 |
-
ws.send(`{playerName}|MOVE:${{st.session_state.x_pos}}:${{st.session_state.z_pos}}`);
|
332 |
break;
|
333 |
-
case 'ArrowDown': case 'KeyS':
|
334 |
-
|
335 |
-
|
336 |
-
ws.send(`{playerName}|MOVE:${{st.session_state.x_pos}}:${{st.session_state.z_pos}}`);
|
337 |
break;
|
338 |
}}
|
339 |
}});
|
340 |
|
341 |
-
document.addEventListener('keyup', (event) => {{
|
342 |
-
switch (event.code) {{
|
343 |
-
case 'ArrowLeft': case 'KeyA': st.session_state.move_left = false; break;
|
344 |
-
case 'ArrowRight': case 'KeyD': st.session_state.move_right = false; break;
|
345 |
-
case 'ArrowUp': case 'KeyW': st.session_state.move_up = false; break;
|
346 |
-
case 'ArrowDown': case 'KeyS': st.session_state.move_down = false; break;
|
347 |
-
}}
|
348 |
-
}});
|
349 |
-
|
350 |
ws.onmessage = function(event) {{
|
351 |
const data = event.data;
|
352 |
if (data.startsWith('MAP_UPDATE:')) {{
|
|
|
106 |
st.audio(file_path)
|
107 |
st.markdown(get_download_link(file_path), unsafe_allow_html=True)
|
108 |
|
109 |
+
# WebSocket Broadcast
|
110 |
async def broadcast_message(message, room_id):
|
111 |
if room_id in st.session_state.active_connections:
|
112 |
disconnected = []
|
|
|
144 |
content = f.read().strip()
|
145 |
return content.split('\n')
|
146 |
|
147 |
+
# Session State Init
|
148 |
def init_session_state():
|
149 |
defaults = {
|
150 |
'server_running': False, 'server_task': None, 'active_connections': {},
|
|
|
240 |
asyncio.set_event_loop(loop)
|
241 |
loop.run_until_complete(run_websocket_server())
|
242 |
|
243 |
+
# Game HTML with Map (Corrected JavaScript)
|
244 |
html_code = f"""
|
245 |
<!DOCTYPE html>
|
246 |
<html lang="en">
|
|
|
296 |
|
297 |
let players = {{}};
|
298 |
const playerMeshes = {{}};
|
299 |
+
let xPos = 0; // Local JavaScript variables for position
|
300 |
+
let zPos = 0;
|
301 |
|
302 |
function updatePlayers(playerData) {{
|
303 |
playerData.forEach(player => {{
|
|
|
317 |
document.addEventListener('keydown', (event) => {{
|
318 |
const speed = 2;
|
319 |
switch (event.code) {{
|
320 |
+
case 'ArrowLeft': case 'KeyA':
|
321 |
+
xPos -= speed;
|
322 |
+
ws.send(`${{playerName}}|MOVE:${{xPos}}:${{zPos}}`);
|
|
|
323 |
break;
|
324 |
+
case 'ArrowRight': case 'KeyD':
|
325 |
+
xPos += speed;
|
326 |
+
ws.send(`${{playerName}}|MOVE:${{xPos}}:${{zPos}}`);
|
|
|
327 |
break;
|
328 |
+
case 'ArrowUp': case 'KeyW':
|
329 |
+
zPos -= speed;
|
330 |
+
ws.send(`${{playerName}}|MOVE:${{xPos}}:${{zPos}}`);
|
|
|
331 |
break;
|
332 |
+
case 'ArrowDown': case 'KeyS':
|
333 |
+
zPos += speed;
|
334 |
+
ws.send(`${{playerName}}|MOVE:${{xPos}}:${{zPos}}`);
|
|
|
335 |
break;
|
336 |
}}
|
337 |
}});
|
338 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
339 |
ws.onmessage = function(event) {{
|
340 |
const data = event.data;
|
341 |
if (data.startsWith('MAP_UPDATE:')) {{
|