From bc4f87f178136ae137a4f932caba721efc89ebaf Mon Sep 17 00:00:00 2001 From: MayaTheShy Date: Fri, 20 Feb 2026 00:18:57 -0500 Subject: [PATCH] feat: Add player position tracking endpoints for updates and retrieval --- server/server.js | 50 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/server/server.js b/server/server.js index c118c65..6d24216 100644 --- a/server/server.js +++ b/server/server.js @@ -760,6 +760,56 @@ app.post('/api/groups/:groupId/command', (req, res) => { } }); +// Player position endpoints +app.post('/api/player/update', (req, res) => { + try { + const { playerID, position, timestamp } = req.body; + + if (!playerID || !position) { + return res.status(400).json({ error: 'Missing playerID or position' }); + } + + db.savePlayerPosition(playerID, position); + + // Broadcast to WebSocket clients + broadcastToClients({ + type: 'player_update', + playerID, + position, + timestamp: timestamp || Date.now() + }); + + res.json({ success: true, playerID, position }); + } catch (error) { + console.error('Error updating player position:', error); + res.status(500).json({ error: error.message }); + } +}); + +app.get('/api/players', (req, res) => { + try { + const players = db.getAllPlayerPositions(); + res.json(players); + } catch (error) { + res.status(500).json({ error: error.message }); + } +}); + +app.get('/api/player/:id', (req, res) => { + try { + const playerId = parseInt(req.params.id); + const player = db.getPlayerPosition(playerId); + + if (!player) { + return res.status(404).json({ error: 'Player not found' }); + } + + res.json(player); + } catch (error) { + res.status(500).json({ error: error.message }); + } +}); + // Graceful shutdown process.on('SIGINT', () => { console.log('\nšŸ›‘ Shutting down server...');