import express from 'express';
import cors from 'cors';
import { Server } from 'colyseus';
import { WebSocketTransport } from '@colyseus/ws';
import dotenv from 'dotenv';
import { MatchmakingRoom } from './rooms/MatchmakingRoom';
import { GameRoom } from './rooms/GameRoom';
import scoresRouter from './api/scores';

dotenv.config();

const app = express();
const PORT = parseInt(process.env.PORT || '3000');

// Middleware
app.use(cors());
app.use(express.json());

// API Routes
app.use('/api', scoresRouter);

// Health check
app.get('/health', (req, res) => {
  res.json({ status: 'ok' });
});

// Initialize Colyseus server
const gameServer = new Server({
  transport: new WebSocketTransport({
    server: require('http').createServer(app)
  })
});

// Register rooms
gameServer.define('matchmaking', MatchmakingRoom);
gameServer.define('game', GameRoom);

// Start server
gameServer.listen(PORT, '0.0.0.0', () => {
  console.log(`🎮 Game server running on ws://0.0.0.0:${PORT}`);
});

export default app;
