erynies first step

This commit is contained in:
milo
2025-08-02 02:35:54 +02:00
parent 4066b60737
commit ebec044bb5
6 changed files with 68 additions and 3 deletions

View File

@@ -43,7 +43,6 @@ server.listen(PORT, async () => {
console.log('Initial Fetch Error');
}
// Setup scheduled tasks
//setupCronJobs(client, io);
console.log('[Cron Jobs Initialized]');

0
src/game/erynies.js Normal file
View File

View File

@@ -17,6 +17,9 @@ export let activeSolitaireGames = {};
// Stores active Poker rooms, keyed by a unique room ID (uuidv4).
export let pokerRooms = {};
// Stores active Erynies rooms, keyed by a unique room ID (uuidv4).
export let eryniesRooms = {};
// --- User and Session State ---
// Stores active user inventories for paginated embeds, keyed by the interaction ID.

View File

@@ -9,6 +9,7 @@ import { apiRoutes } from './routes/api.js';
import { pokerRoutes } from './routes/poker.js';
import { solitaireRoutes } from './routes/solitaire.js';
import {getSocketIo} from "./socket.js";
import {eryniesRoutes} from "./routes/erynies.js";
// --- EXPRESS APP INITIALIZATION ---
const app = express();
@@ -49,5 +50,8 @@ app.use('/api/poker', pokerRoutes(client, io));
// Solitaire-specific routes
app.use('/api/solitaire', solitaireRoutes(client, io));
// Erynies-specific routes
app.use('/api/erynies', eryniesRoutes(client, io));
export { app };

View File

@@ -0,0 +1,60 @@
import express from "express";
import { v4 as uuidv4 } from 'uuid';
import {eryniesRooms} from "../../game/state.js";
import {socketEmit} from "../socket.js";
const router = express.Router();
/**
* Factory function to create and configure the Erynies API routes.
* @param {object} client - The Discord.js client instance.
* @param {object} io - The Socket.IO server instance.
* @returns {object} The configured Express router.
*/
export function eryniesRoutes(client, io) {
// --- Router Management Endpoints
router.get('/', (req, res) => {
res.status(200).json({ rooms: eryniesRooms })
})
router.get('/:id', (req, res) => {
const room = eryniesRooms[req.params.id];
if (room) {
res.status(200).json({ room });
} else {
res.status(404).json({ message: 'Room not found.' });
}
})
router.post('/create', async (req, res) => {
const { creatorId } = req.body;
if (!creatorId) return res.status(404).json({ message: 'Creator ID is required.' });
if (Object.values(eryniesRooms).some(room => creatorId === room.host_id || room.players[creatorId])) {
res.status(404).json({ message: 'You are already in a room.' });
}
const creator = await client.users.fetch(creatorId);
const id = uuidv4()
eryniesRooms[id] = {
id,
host_id: creatorId,
host_name: creator.globalName,
created_at: Date.now(),
last_move_at: null,
players: {},
current_player: null,
current_turn: null,
playing: false,
winners: [],
};
await socketEmit('erynies-update', { room: eryniesRooms[id], type: 'room-created' });
res.status(200).json({ room: id });
})
return router;
}

View File

@@ -17,7 +17,7 @@ const router = express.Router();
/**
* Factory function to create and configure the poker API routes.
* @param {object} client - The Discord.js client instance.
* @param {object} io - The Socket.IO server instance. // FIX: Pass io in as a parameter
* @param {object} io - The Socket.IO server instance.
* @returns {object} The configured Express router.
*/
export function pokerRoutes(client, io) {
@@ -78,7 +78,6 @@ export function pokerRoutes(client, io) {
res.status(200).json({ message: 'Successfully joined.' });
});
// NEW: Endpoint to accept a player from the queue
router.post('/accept', async (req, res) => {
const { hostId, playerId, roomId } = req.body;
const room = pokerRooms[roomId];