PHP Classes

File: public_html/webdoors/source-games/source-games.js

Recommend this page to a friend!
  Packages of Matthew Asham   Binkterm PHP   public_html/webdoors/source-games/source-games.js   Download  
File: public_html/webdoors/source-games/source-games.js
Role: Auxiliary data
Content type: text/plain
Description: Auxiliary data
Class: Binkterm PHP
Bulletin board system based on the Web
Author: By
Last change:
Date: 5 days ago
Size: 4,422 bytes
 

Contents

Class file image Download
// Source Games WebDoor - Community Server Browser // Displays configured Source engine game servers let config = null; // Load game configuration from BBS API async function loadConfig() { try { const response = await fetch('/api/webdoor/source-games/config'); if (!response.ok) { throw new Error('Failed to load configuration'); } config = await response.json(); console.log('Loaded config:', config); displayServers(); } catch (error) { console.error('Error loading config:', error); showError('Failed to load server list. Please try again later.'); } } // Display servers in the grid function displayServers() { const container = document.getElementById('servers-container'); if (!config || !config.servers || config.servers.length === 0) { container.innerHTML = '<div class="error">No servers configured. Contact the system operator.</div>'; return; } container.innerHTML = ''; config.servers.forEach((server, index) => { const card = createServerCard(server, index); container.appendChild(card); }); } // Create a server card element function createServerCard(server, index) { const card = document.createElement('div'); card.className = 'server-card'; card.innerHTML = ` <div class="server-header"> <div> <div class="server-name">${escapeHtml(server.name)}</div> <div class="server-game">${escapeHtml(server.game)}</div> </div> </div> <div class="server-description"> ${escapeHtml(server.description || 'Join us for some great gaming!')} </div> <div class="server-info"> <div class="server-info-row"> <span class="info-label">Current Map:</span> <span class="info-value">${escapeHtml(server.map || 'Unknown')}</span> </div> <div class="server-info-row"> <span class="info-label">Max Players:</span> <span class="info-value player-count">${server.maxPlayers || 'Unknown'}</span> </div> ${server.steamAppId ? ` <div class="server-info-row"> <span class="info-label">Steam App ID:</span> <span class="info-value">${server.steamAppId}</span> </div> ` : ''} </div> <div class="server-address"> ? ${escapeHtml(server.address)} </div> <button class="connect-btn" onclick="connectToServer('${escapeHtml(server.address)}', ${server.steamAppId || 0})"> <span class="steam-icon">?</span> Connect to Server </button> `; return card; } // Connect to a Source server function connectToServer(address, steamAppId) { // Try Steam browser protocol first (requires Steam installed) if (steamAppId) { const steamUrl = `steam://connect/${address}`; console.log('Connecting via Steam:', steamUrl); window.location.href = steamUrl; // Show fallback instructions after a delay setTimeout(() => { showConnectInstructions(address, steamAppId); }, 1000); } else { showConnectInstructions(address, 0); } } // Show connection instructions function showConnectInstructions(address, steamAppId) { const message = steamAppId ? `To connect to this server:\n\n` + `1. Make sure Steam is running\n` + `2. Launch the game from Steam\n` + `3. Open the console (~) and type:\n` + ` connect ${address}\n\n` + `Or click the connect button again to try the Steam protocol.` : `To connect to this server:\n\n` + `Launch the game and open the console (~)\n` + `Type: connect ${address}`; alert(message); } // Show error message function showError(message) { const container = document.getElementById('servers-container'); container.innerHTML = `<div class="error">${escapeHtml(message)}</div>`; } // Escape HTML to prevent XSS function escapeHtml(text) { const div = document.createElement('div'); div.textContent = text; return div.innerHTML; } // Initialize when page loads document.addEventListener('DOMContentLoaded', () => { console.log('Source Games WebDoor loading...'); loadConfig(); });