// Simulated admin data - this would be replaced with actual game data
let adminData = {
players: [
{
id: 1,
name: "John_Doe",
role: "admin",
money: 50000,
status: "online"
},
{
id: 2,
name: "Jane_Smith",
role: "mod",
money: 25000,
status: "online"
},
{
id: 3,
name: "Mike_Johnson",
role: "player",
money: 10000,
status: "offline"
}
],
paydayAmount: 1000
};
let selectedPlayerId = null;
// Initialize the admin panel
function initializeAdmin() {
updateStats();
setupFilterListeners();
updatePlayerList();
}
// Update header statistics
function updateStats() {
const onlinePlayers = adminData.players.filter(p => p.status === "online").length;
const onlineStaff = adminData.players.filter(p => p.status === "online" && (p.role === "admin" || p.role === "mod")).length;
document.getElementById('playerCount').textContent = onlinePlayers;
document.getElementById('staffCount').textContent = onlineStaff;
}
// Set up filter button listeners
function setupFilterListeners() {
const filterButtons = document.querySelectorAll('.filter-btn');
filterButtons.forEach(button => {
button.addEventListener('click', () => {
filterButtons.forEach(btn => btn.classList.remove('active'));
button.classList.add('active');
filterPlayers(button.dataset.filter);
});
});
// Set up search functionality
const searchInput = document.getElementById('playerSearch');
searchInput.addEventListener('input', () => {
const activeFilter = document.querySelector('.filter-btn.active').dataset.filter;
filterPlayers(activeFilter, searchInput.value);
});
}
// Filter players based on category and search term
function filterPlayers(filter, searchTerm = '') {
let filteredPlayers = adminData.players;
// Apply category filter
if (filter === 'online') {
filteredPlayers = filteredPlayers.filter(p => p.status === 'online');
} else if (filter === 'staff') {
filteredPlayers = filteredPlayers.filter(p => p.role === 'admin' || p.role === 'moderator');
}
// Apply search filter
if (searchTerm) {
const term = searchTerm.toLowerCase();
filteredPlayers = filteredPlayers.filter(p =>
p.name.toLowerCase().includes(term)
);
}
updatePlayerList(filteredPlayers);
}
// Update the player list display
function updatePlayerList(players = adminData.players) {
const playerList = document.getElementById('playerList');
playerList.innerHTML = players.map(player => `
${player.name}
${player.role}
${player.status}
$${player.money.toLocaleString()}
${player.role !== 'admin' ? `
` : ''}
${player.role !== 'player' ? `
` : ''}
`).join('');
}
// Role management functions
function promotePlayer(playerId) {
const player = adminData.players.find(p => p.id === playerId);
if (player) {
if (player.role === 'player') {
player.role = 'moderator';
} else if (player.role === 'moderator') {
player.role = 'admin';
}
updatePlayerList();
}
}
function demotePlayer(playerId) {
const player = adminData.players.find(p => p.id === playerId);
if (player) {
if (player.role === 'admin') {
player.role = 'moderator';
} else if (player.role === 'moderator') {
player.role = 'player';
}
updatePlayerList();
}
}
// Money management functions
function openMoneyModal(playerId) {
selectedPlayerId = playerId;
const modal = document.getElementById('moneyModal');
modal.style.display = 'block';
}
function closeMoneyModal() {
const modal = document.getElementById('moneyModal');
modal.style.display = 'none';
document.getElementById('moneyAmount').value = '';
selectedPlayerId = null;
}
function giveMoney() {
const amount = parseInt(document.getElementById('moneyAmount').value);
if (amount && selectedPlayerId) {
const player = adminData.players.find(p => p.id === selectedPlayerId);
if (player) {
player.money += amount;
updatePlayerList();
closeMoneyModal();
}
}
}
function takeMoney() {
const amount = parseInt(document.getElementById('moneyAmount').value);
if (amount && selectedPlayerId) {
const player = adminData.players.find(p => p.id === selectedPlayerId);
if (player) {
player.money = Math.max(0, player.money - amount);
updatePlayerList();
closeMoneyModal();
}
}
}
// Message system functions
function openMessageModal(playerId) {
selectedPlayerId = playerId;
const player = adminData.players.find(p => p.id === playerId);
const modal = document.getElementById('messageModal');
document.getElementById('messagePlayerName').textContent = player.name;
modal.style.display = 'block';
}
function closeMessageModal() {
const modal = document.getElementById('messageModal');
modal.style.display = 'none';
document.getElementById('messageInput').value = '';
selectedPlayerId = null;
}
function sendPlayerMessage() {
const message = document.getElementById('messageInput').value;
if (message && selectedPlayerId) {
const player = adminData.players.find(p => p.id === selectedPlayerId);
if (player) {
console.log(`Message sent to ${player.name}: ${message}`);
closeMessageModal();
}
}
}
function broadcastMessage() {
const message = document.getElementById('broadcastMessage').value;
if (message) {
console.log(`Broadcasting message to all players: ${message}`);
document.getElementById('broadcastMessage').value = '';
}
}
// Global actions
function triggerPayday() {
const amount = parseInt(document.getElementById('paydayAmount').value);
if (amount) {
adminData.players.forEach(player => {
player.money += amount;
});
updatePlayerList();
}
}
// Initialize when DOM is loaded
document.addEventListener('DOMContentLoaded', initializeAdmin);