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:
parent
1a60cf55a3
commit
8d9ef427be
37 changed files with 13302 additions and 26 deletions
|
|
@ -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;
|
||||
|
|
@ -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);
|
||||
|
|
|
|||
54
src/routes/player/resources.js
Normal file
54
src/routes/player/resources.js
Normal 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;
|
||||
Loading…
Add table
Add a link
Reference in a new issue