From 3aeb4fc2f1e67ddab00c88f908d45c9979e5f33d Mon Sep 17 00:00:00 2001 From: jwinterm Date: Wed, 28 Jan 2026 17:33:51 -0500 Subject: [PATCH] fix: remove old files and hardcoded stuff --- src/db/dbcalls.js | 80 --------- test/index.js | 422 ---------------------------------------------- tiles.xcf | Bin 168565 -> 0 bytes 3 files changed, 502 deletions(-) delete mode 100644 src/db/dbcalls.js delete mode 100644 test/index.js delete mode 100644 tiles.xcf diff --git a/src/db/dbcalls.js b/src/db/dbcalls.js deleted file mode 100644 index 540bcbc..0000000 --- a/src/db/dbcalls.js +++ /dev/null @@ -1,80 +0,0 @@ -const { Client } = require('pg'); - -// Environment-based console logging control -const CONSOLE_LOGGING = process.env.NODE_ENV === 'debug' || process.env.NODE_ENV === 'development'; - -const client = new Client({ - user: 'postgres', - host: 'localhost', - database: 'wownerogue', - password: 'postgres', - port: 5432, -}); -client.connect(); - -// Add this function to create the necessary table if it doesn't exist -function initializeDatabase() { - const createTableQuery = ` - CREATE TABLE IF NOT EXISTS visitors ( - id SERIAL PRIMARY KEY, - socketid VARCHAR(255) NOT NULL, - ip VARCHAR(100) NOT NULL, - time BIGINT NOT NULL - ) - `; - - client.query(createTableQuery) - .then(() => { - if (CONSOLE_LOGGING) { - console.log("Database initialized"); - } - }) - .catch(err => console.error("Database initialization error:", err)); -} - -// Call this function when starting up -initializeDatabase(); - -// String for inserting new visitor -const insertVisitorText = 'INSERT INTO visitors(socketid, ip, time) VALUES($1, $2, $3)'; -// Function for inserting new visitor and returning ID# -function insertVisitor(socketid, ip, cookie) { - values = [socketid, ip, Math.floor(new Date() / 1000)]; - - // First check if table exists to prevent errors - client.query("SELECT to_regclass('visitors')", (err, res) => { - if (err) { - console.error("Database check error:", err); - return; - } - - // If table doesn't exist yet, try to initialize again - if (res.rows[0].to_regclass === null) { - if (CONSOLE_LOGGING) { - console.log("Table 'visitors' doesn't exist yet, creating it now..."); - } - initializeDatabase(); - return; - } - - // Insert the visitor - client.query(insertVisitorText, values, (err, res) => { - if (err) { - console.error("Database insert error:", err.stack); - } else if (res.rows && res.rows[0]) { - if (CONSOLE_LOGGING) { - console.log("Visitor inserted:", res.rows[0]); - } - } else { - if (CONSOLE_LOGGING) { - console.log("Visitor inserted"); - } - } - }); - }); -} - - -module.exports = { - insertVisitor: insertVisitor -} diff --git a/test/index.js b/test/index.js deleted file mode 100644 index d1f1a5f..0000000 --- a/test/index.js +++ /dev/null @@ -1,422 +0,0 @@ -const express = require('express'); -var app = require('express')(); -var http = require('http').Server(app); -var io = require('socket.io')(http); -var rpc = require('../src/rpc/rpccalls.js'); -var db = require('./dbcalls.js'); -var user = require('./user'); - -// Function to get a user by socket ID -// Enhance the getUserBySocket function to try both IDs - -function getUserBySocket(socketId) { - console.log(`Looking up user with socketId: ${socketId}`); - - // Try direct lookup first - let foundUser = user.getUserBySocketId(socketId); - - // If not found but we have a socket map, try the mapped ID - if (!foundUser && clientSocketMap.has(socketId)) { - const mappedId = clientSocketMap.get(socketId); - console.log(`Socket ID ${socketId} not found directly, trying mapped ID: ${mappedId}`); - foundUser = user.getUserBySocketId(mappedId); - } - - console.log(`User lookup result for ${socketId}: ${foundUser ? "FOUND" : "NOT FOUND"}`); - return foundUser; -} - -const Game = require('./game'); -const activeGames = new Map(); // Maps socketId to Game objects -let lastBlockHeight = 0; // Track last block height -const MIN_FEE = 10; // Minimum entrance fee in WOW -const MAX_FEE = 100; // Maximum entrance fee in WOW -const WAITING_PLAYERS = []; // Players waiting for the next block -const DEBUG_MODE = true; // Set to false to disable debug mode -let debugBlockHeight = 1; -const clientSocketMap = new Map(); // To track client-to-server socket ID mappings - -app.use(express.static('html')); -app.get('/', function(req, res) { - res.sendfile('index.html'); -}); - -// Replace your existing block check interval with this conditional version -if (DEBUG_MODE) { - console.log("šŸ› DEBUG MODE ENABLED - Simulating blocks every 30 seconds"); - - // Initial debug block - io.emit('blockheight', debugBlockHeight); - - // Debug block height simulator - setInterval(function() { - debugBlockHeight++; - console.log(`šŸ› DEBUG: New simulated block: ${debugBlockHeight}`); - io.emit('blockheight', debugBlockHeight); - - // Start games for waiting players - startGamesForWaiting(debugBlockHeight); - - // Check active games for timeout - checkGamesTimeout(debugBlockHeight); - - }, 30000); // Every 30 seconds -} else { - // Your original block check code - setInterval(function() { - rpc.daemonCall("get_block_count", "", function(result) { - const currentHeight = result.result.count; - rpc.lastBlock.setHeight(currentHeight); - - // If new block found - if (currentHeight > lastBlockHeight) { - console.log(`New block found: ${currentHeight}`); - io.emit('blockheight', currentHeight); - - // Start games for waiting players - startGamesForWaiting(currentHeight); - - // Check active games for timeout - checkGamesTimeout(currentHeight); - - lastBlockHeight = currentHeight; - } else { - io.emit('blockheight', currentHeight); - } - }); - }, 5000); -} - -// Start games for waiting players -function startGamesForWaiting(blockHeight) { - console.log(`Starting games for ${WAITING_PLAYERS.length} waiting players at block height ${blockHeight}`); - - while (WAITING_PLAYERS.length > 0) { - const playerEntry = WAITING_PLAYERS.shift(); - const serverId = playerEntry.serverId; - - console.log(`Processing player: server=${serverId}`); - - const currentUser = getUserBySocket(serverId); - - if (currentUser) { - currentUser.blockRec = blockHeight; - - try { - const game = currentUser.startGame(80, 40); - activeGames.set(serverId, game); - - const gameState = game.getState(); - gameState.blockHeight = blockHeight; - - console.log(`šŸŽ® SENDING GAME_START to ${serverId}`); - - // Send ONLY ONE message - the game state itself - io.to(serverId).emit('game_start', gameState); - - console.log(`Game started for player ${serverId}`); - } catch (error) { - console.error(`Error creating game:`, error); - io.to(serverId).emit('message', 'Error starting game: ' + error.message); - } - } else { - console.error(`User not found for socket ${serverId}`); - io.to(serverId).emit('message', 'Error: User not found'); - } - } -} - -// Check if any active games have timed out -function checkGamesTimeout(currentHeight) { - activeGames.forEach((game, socketId) => { - const user = getUserBySocket(socketId); - - // Player has 3 blocks to complete the dungeon - // If they started on block 2, they must escape before block 5 is found - if (user && user.blockRec && currentHeight > user.blockRec + 2) { - console.log(`Game timeout for player ${socketId}: started on block ${user.blockRec}, current block ${currentHeight} (allowed until block ${user.blockRec + 2})`); - - // Game has timed out - player didn't escape in time - game.gameState = 'lost'; - io.to(socketId).emit('game_over', { - status: 'lost', - reason: 'timeout', - message: 'You didn\'t escape before the block time limit!' - }); - - activeGames.delete(socketId); - } - }); -} - -// Socket.io handlers -io.on('connection', function(socket) { - console.log('A user connected'); - console.log(socket.client.id); - console.log(socket.handshake.address); - - // Create and register user (automatically stored in registry) - new user.User(socket.id, socket.handshake.address); - // Also store socket.client.id as an attribute - const newUser = getUserBySocket(socket.id); - if (newUser) { - newUser.clientId = socket.client.id; - console.log(`User created with both socket.id (${socket.id}) and socket.client.id (${socket.client.id})`); - } - - // Insert into visitors DB - db.insertVisitor(socket.client.id, socket.handshake.address, 0); - - // Send welcome message - io.to(socket.client.id).emit('welcome', socket.client.id); - - socket.on('chat message', function(msg) { - console.log('Message received:', msg); - - if (msg.toLowerCase() == 'hello') { - io.to(`${socket.client.id}`).emit('message', - 'Welcome, to enter the dungeon type Enter, and you will be given a Wownero address, ' + - 'which you must send between 10-100 WOW to enter. The more you send, the more you can win.'); - } - // Update the 'enter' command handler to send waiting_status - if (msg.toLowerCase() == 'enter') { - console.log(`Player ${socket.id} requested to enter the dungeon`); - - // Use the updated user lookup function - const currentUser = getUserBySocket(socket.id); - - if (currentUser) { - console.log(`Found user for socket ${socket.id}, adding to queue...`); - - // Add to waiting players queue - if (!WAITING_PLAYERS.some(p => p.serverId === socket.id)) { - WAITING_PLAYERS.push({ - serverId: socket.id, - clientId: socket.id, - user: currentUser, - joinedAt: Date.now() - }); - - // Send waiting status data for display - THIS IS THE KEY PART - io.to(socket.id).emit('waiting_status', { - status: 'waiting', - message: 'Waiting for the next block to be found...', - position: WAITING_PLAYERS.length, - currentBlock: debugBlockHeight || lastBlockHeight || 0, - joinTime: Date.now() - }); - - console.log(`Added player to queue. Current queue: ${WAITING_PLAYERS.length} players`); - } else { - io.to(socket.id).emit('message', 'You are already in the queue. Please wait.'); - } - } else { - io.to(socket.id).emit('message', 'Error: Could not add you to the game queue. Please try again.'); - } - } - // Add a handler for the 'cancel' command - else if (msg.toLowerCase() == 'cancel') { - // Remove player from waiting queue - const index = WAITING_PLAYERS.findIndex(p => p.serverId === socket.id); - - if (index !== -1) { - WAITING_PLAYERS.splice(index, 1); - io.to(socket.id).emit('message', 'You have left the queue.'); - - // Reset to welcome screen - io.to(socket.id).emit('queue_cancelled'); - } else { - io.to(socket.id).emit('message', 'You were not in the queue.'); - } - } - else { - io.emit('message', msg); - } - }); - - // Handle player movement - socket.on('player_move', function(moveData) { // Changed from 'move' to 'player_move' and added moveData - console.log(`Player move event received from ${socket.id}:`, moveData); - const currentUser = getUserBySocket(socket.id); - - if (currentUser && currentUser.game && currentUser.game.gameState === 'active') { - if (typeof moveData.dx === 'number' && typeof moveData.dy === 'number') { - const game = currentUser.game; - const moveResult = game.movePlayer(moveData.dx, moveData.dy); // This should update player pos and FOV - - if (moveResult && moveResult.status === 'moved') { - // Move monster after player moves - game.moveMonster(); - - // Check if monster caught player - const GameModule = require('./game'); - const checkMonsterKill = GameModule.checkMonsterKill || - ((player, monster) => monster.x === player.x && monster.y === player.y); - - if (checkMonsterKill(game.player, game.monster)) { - game.gameState = 'lost'; - io.to(socket.id).emit('game_over', { - status: 'lost', - reason: 'monster', - message: 'The monster caught you!' - }); - activeGames.delete(socket.id); - return; - } - - // Check for treasure pickup - if (moveResult.event === 'treasure_found') { - io.to(socket.id).emit('message', 'You found the treasure!'); - } - - // Check for escape - if (moveResult.event === 'escaped') { - game.gameState = 'won'; - io.to(socket.id).emit('game_over', { - status: 'won', - reason: 'escaped', - message: 'Congratulations! You escaped the dungeon!' - }); - activeGames.delete(socket.id); - return; - } - - const updatedGameState = game.getState(); // Get the new state - - // Log before sending to client for debugging - console.log(`Sending game_update to ${socket.id} after player move. Player:`, updatedGameState.player, "Visible tiles keys:", Object.keys(updatedGameState.visibleTiles || {})); - - io.to(socket.id).emit('game_update', updatedGameState); - } else { - console.log(`Player move from ${socket.id} was invalid or resulted in no change.`); - // Optionally, send an update even for invalid moves if you want to provide feedback - // const currentGameState = game.getState(); - // io.to(socket.id).emit('game_update', currentGameState); - } - } else { - console.error(`Invalid moveData received from ${socket.id}:`, moveData); - } - } else { - console.log(`Player move event from ${socket.id} ignored: No active game found for user.`); - } - }); - - // Handle disconnection - socket.on('disconnect', function() { - console.log('User disconnected', socket.client.id); - user.removeUser(socket.client.id); - }); - - // Add this to your socket handlers in index.js - socket.on('debug_ping', function(data) { - console.log(`Debug ping received from ${socket.client.id}`); - socket.emit('debug_pong', { - message: "Hello from server!", - clientTime: data.time, - serverTime: Date.now(), - socketId: socket.client.id - }); - }); - - socket.on('register_client', function(data) { - console.log(`Client registered: ${socket.id} (server) <-> ${data.clientId} (client)`); - - // Store both mappings for lookup - clientSocketMap.set(data.clientId, socket.id); - clientSocketMap.set(socket.id, data.clientId); - - // Send confirmation back to client - socket.emit('socket_registered', { - clientId: data.clientId, - serverId: socket.id, - success: true - }); -}); - -}); // End of io.on('connection') handler - -// Add this debug function to check all registered users - -function debugRegisteredUsers() { - console.log("\nšŸ” CHECKING ALL REGISTERED USERS:"); - const allUsers = user.getAllUsers ? user.getAllUsers() : null; - - if (!allUsers) { - console.log("No getAllUsers function available or no users registered"); - return; - } - - console.log(`Found ${allUsers.length} registered users:`); - allUsers.forEach((u, i) => { - console.log(`User ${i+1}:`, { - id: u.id, - clientId: u.clientId || 'undefined', - address: u.address - }); - }); - console.log(); // Empty line for readability -} - -// Call this after a user registers and at intervals -setInterval(debugRegisteredUsers, 10000); - -http.listen(3000, function() { - console.log('listening on *:3000'); -}); - -// Make sure this function is defined in your file -function startGameForPlayer(socketId, blockHeight) { - console.log(`Starting game for player ${socketId} at block height ${blockHeight}`); - - const currentUser = getUserBySocket(socketId); - if (!currentUser) { - console.error(`User with socket ID ${socketId} not found`); - return; - } - - try { - // Create a new game - const game = currentUser.startGame(25, 19); - if (!game) { - console.error("Game creation failed"); - return; - } - - // Store the game in activeGames map - activeGames.set(socketId, game); - - // Get game state - ensure it has the required fields - const gameState = { - gameState: "active", // Add this so frontend knows it's active - player: { - x: game.player.x, - y: game.player.y, - hasKey: !!game.player.hasKey, - hasTreasure: !!game.player.hasTreasure - }, - monster: game.monster, - visibleTiles: game.calculateFOV ? game.calculateFOV() : {}, - entrance: [game.dungeon.entrance.x, game.dungeon.entrance.y], - exit: [game.dungeon.exit.x, game.dungeon.exit.y], - treasure: [game.dungeon.treasure.x, game.dungeon.treasure.y] - }; - - console.log("Sending game_start with state:", JSON.stringify(gameState, null, 2).substring(0, 200) + "..."); - - // Add a small delay before sending (sometimes helps with socket timing issues) - setTimeout(() => { - debugSocket(socketId, 'game_start', gameState); - // Send initial game state to client - io.to(socketId).emit('game_start', gameState); - console.log(`Game started for player ${socketId}`); - }, 100); - } catch (err) { - console.error("Error starting game:", err); - io.to(socketId).emit('message', 'Error starting game: ' + err.message); - } -} - -function debugSocket(socketId, eventName, data) { - console.log(`šŸ”Œ SOCKET DEBUG: Sending ${eventName} to ${socketId.substring(0, 8)}...`); - console.log(`šŸ“¦ PAYLOAD (first 300 chars): ${JSON.stringify(data).substring(0, 300)}...`); -} diff --git a/tiles.xcf b/tiles.xcf deleted file mode 100644 index f412c65fa694fe6b270a5f42a349f158e1611036..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 168565 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