59 lines
3.0 KiB
HTML
59 lines
3.0 KiB
HTML
|
|
// Handle player position updates
|
||
|
|
if (data.data_type === 'player_position_update' && data.payload) {
|
||
|
|
const playerData = data.payload;
|
||
|
|
const steamid = playerData.steamid;
|
||
|
|
const pos = playerData.position;
|
||
|
|
|
||
|
|
console.log('[MAP] Processing player update for:', steamid, pos);
|
||
|
|
|
||
|
|
if (!steamid || !pos) {
|
||
|
|
console.warn('[MAP] Invalid player update data:', playerData);
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
|
||
|
|
// Update or create player data in players object
|
||
|
|
if (!players[steamid]) {
|
||
|
|
players[steamid] = {};
|
||
|
|
}
|
||
|
|
|
||
|
|
// Update all player data
|
||
|
|
players[steamid].pos = pos;
|
||
|
|
players[steamid].name = playerData.name || players[steamid].name || 'Player';
|
||
|
|
players[steamid].level = playerData.level !== undefined ? playerData.level : (players[steamid].level || 0);
|
||
|
|
players[steamid].health = playerData.health !== undefined ? playerData.health : (players[steamid].health || 0);
|
||
|
|
players[steamid].zombies = playerData.zombies !== undefined ? playerData.zombies : (players[steamid].zombies || 0);
|
||
|
|
players[steamid].deaths = playerData.deaths !== undefined ? playerData.deaths : (players[steamid].deaths || 0);
|
||
|
|
players[steamid].players = playerData.players !== undefined ? playerData.players : (players[steamid].players || 0);
|
||
|
|
players[steamid].score = playerData.score !== undefined ? playerData.score : (players[steamid].score || 0);
|
||
|
|
players[steamid].ping = playerData.ping !== undefined ? playerData.ping : (players[steamid].ping || 0);
|
||
|
|
players[steamid].is_muted = playerData.is_muted !== undefined ? playerData.is_muted : (players[steamid].is_muted || false);
|
||
|
|
players[steamid].is_authenticated = playerData.is_authenticated !== undefined ? playerData.is_authenticated : (players[steamid].is_authenticated || false);
|
||
|
|
players[steamid].in_limbo = playerData.in_limbo !== undefined ? playerData.in_limbo : (players[steamid].in_limbo || false);
|
||
|
|
players[steamid].is_initialized = playerData.is_initialized !== undefined ? playerData.is_initialized : (players[steamid].is_initialized || false);
|
||
|
|
players[steamid].permission_level = playerData.permission_level || players[steamid].permission_level || null;
|
||
|
|
players[steamid].dataset = playerData.dataset || players[steamid].dataset || '';
|
||
|
|
|
||
|
|
// Update or create marker
|
||
|
|
if (playerMarkers[steamid]) {
|
||
|
|
// Update existing marker position and popup
|
||
|
|
playerMarkers[steamid].setLatLng([pos.x, pos.z]);
|
||
|
|
playerMarkers[steamid].setPopupContent(createPlayerPopup(steamid, players[steamid]));
|
||
|
|
console.log('[MAP] Updated player marker:', steamid);
|
||
|
|
} else {
|
||
|
|
// Create new marker
|
||
|
|
const marker = L.circleMarker([pos.x, pos.z], {
|
||
|
|
radius: 5,
|
||
|
|
fillColor: '#66ccff',
|
||
|
|
color: '#0099ff',
|
||
|
|
weight: 2,
|
||
|
|
opacity: 1,
|
||
|
|
fillOpacity: 0.9,
|
||
|
|
className: 'player-marker'
|
||
|
|
}).addTo(map);
|
||
|
|
|
||
|
|
marker.bindPopup(createPlayerPopup(steamid, players[steamid]));
|
||
|
|
playerMarkers[steamid] = marker;
|
||
|
|
console.log('[MAP] Created new player marker:', steamid);
|
||
|
|
}
|
||
|
|
}
|