feat: implement comprehensive combat system with plugin architecture

- Complete combat system with instant, turn-based, and tactical combat
- Plugin-based architecture with CombatPluginManager for extensibility
- Real-time combat events via WebSocket
- Fleet vs fleet and fleet vs colony combat support
- Comprehensive combat statistics and history tracking
- Admin panel for combat management and configuration
- Database migrations for combat tables and fleet system
- Complete test suite for combat functionality
- Combat middleware for validation and logging
- Service locator pattern for dependency management

Combat system features:
• Multiple combat resolution types with plugin support
• Real-time combat events and spectator support
• Detailed combat logs and casualty calculations
• Experience gain and veterancy system for ships
• Fleet positioning and tactical formations
• Combat configurations and modifiers
• Queue system for battle processing
• Comprehensive admin controls and monitoring

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
MegaProxy 2025-08-02 14:02:04 +00:00
parent 1a60cf55a3
commit 8d9ef427be
37 changed files with 13302 additions and 26 deletions

View file

@ -0,0 +1,53 @@
/**
* Player Colony Routes
* Handles all colony-related endpoints for players
*/
const express = require('express');
const router = express.Router();
const {
createColony,
getPlayerColonies,
getColonyDetails,
constructBuilding,
getBuildingTypes,
getPlanetTypes,
getGalaxySectors
} = require('../../controllers/player/colony.controller');
const { validateRequest } = require('../../middleware/validation.middleware');
const {
createColonySchema,
constructBuildingSchema,
colonyIdParamSchema
} = require('../../validators/colony.validators');
// Colony CRUD operations
router.post('/',
validateRequest(createColonySchema),
createColony
);
router.get('/',
getPlayerColonies
);
router.get('/:colonyId',
validateRequest(colonyIdParamSchema, 'params'),
getColonyDetails
);
// Building operations
router.post('/:colonyId/buildings',
validateRequest(colonyIdParamSchema, 'params'),
validateRequest(constructBuildingSchema),
constructBuilding
);
// Reference data endpoints
router.get('/ref/building-types', getBuildingTypes);
router.get('/ref/planet-types', getPlanetTypes);
router.get('/ref/galaxy-sectors', getGalaxySectors);
module.exports = router;

View file

@ -4,7 +4,7 @@
const express = require('express');
const { authenticateToken, optionalAuth } = require('../../middleware/auth');
const { asyncHandler } = require('../../middleware/error-handler');
const { asyncHandler } = require('../../middleware/error.middleware');
const router = express.Router();
@ -12,6 +12,7 @@ const router = express.Router();
const authRoutes = require('./auth');
const profileRoutes = require('./profile');
const coloniesRoutes = require('./colonies');
const resourcesRoutes = require('./resources');
const fleetsRoutes = require('./fleets');
const researchRoutes = require('./research');
const galaxyRoutes = require('./galaxy');
@ -25,6 +26,7 @@ router.use('/galaxy', optionalAuth('player'), galaxyRoutes);
// Protected routes (authentication required)
router.use('/profile', authenticateToken('player'), profileRoutes);
router.use('/colonies', authenticateToken('player'), coloniesRoutes);
router.use('/resources', authenticateToken('player'), resourcesRoutes);
router.use('/fleets', authenticateToken('player'), fleetsRoutes);
router.use('/research', authenticateToken('player'), researchRoutes);
router.use('/events', authenticateToken('player'), eventsRoutes);

View file

@ -0,0 +1,54 @@
/**
* Player Resource Routes
* Handles all resource-related endpoints for players
*/
const express = require('express');
const router = express.Router();
const {
getPlayerResources,
getPlayerResourceSummary,
getResourceProduction,
addResources,
transferResources,
getResourceTypes
} = require('../../controllers/player/resource.controller');
const { validateRequest } = require('../../middleware/validation.middleware');
const {
transferResourcesSchema,
addResourcesSchema,
resourceQuerySchema
} = require('../../validators/resource.validators');
// Resource information endpoints
router.get('/',
validateRequest(resourceQuerySchema, 'query'),
getPlayerResources
);
router.get('/summary',
getPlayerResourceSummary
);
router.get('/production',
getResourceProduction
);
// Resource manipulation endpoints
router.post('/transfer',
validateRequest(transferResourcesSchema),
transferResources
);
// Development/testing endpoints
router.post('/add',
validateRequest(addResourcesSchema),
addResources
);
// Reference data endpoints
router.get('/types', getResourceTypes);
module.exports = router;