This repository has been archived on 2026-05-04. You can view files and clone it, but cannot push or open issues or pull requests.
Galaxy-Strike-Online/GameServer/routes/skills.js
2026-01-24 21:39:56 -04:00

188 lines
3.8 KiB
JavaScript

const express = require('express');
const SkillSystem = require('../systems/SkillSystem');
const router = express.Router();
// Initialize skill system
const skillSystem = new SkillSystem();
// Get all skills
router.get('/', async (req, res) => {
try {
const skills = skillSystem.getAllSkills();
res.json({
success: true,
skills
});
} catch (error) {
res.status(500).json({
success: false,
error: error.message
});
}
});
// Get skills by category
router.get('/category/:category', async (req, res) => {
try {
const { category } = req.params;
const skills = skillSystem.getSkillsByCategory(category);
res.json({
success: true,
skills
});
} catch (error) {
res.status(500).json({
success: false,
error: error.message
});
}
});
// Get player skills
router.get('/player/:userId', async (req, res) => {
try {
const { userId } = req.params;
const skills = skillSystem.getPlayerSkills(userId);
res.json({
success: true,
skills
});
} catch (error) {
res.status(500).json({
success: false,
error: error.message
});
}
});
// Add experience to skill
router.post('/experience/:userId/:skillId', async (req, res) => {
try {
const { userId, skillId } = req.params;
const { amount } = req.body;
if (!amount || amount <= 0) {
return res.status(400).json({
success: false,
error: 'Valid experience amount required'
});
}
const result = skillSystem.addExperience(userId, skillId, amount);
res.json({
success: true,
result
});
} catch (error) {
res.status(500).json({
success: false,
error: error.message
});
}
});
// Unlock skill
router.post('/unlock/:userId/:skillId', async (req, res) => {
try {
const { userId, skillId } = req.params;
const result = skillSystem.unlockSkill(userId, skillId);
res.json({
success: true,
result
});
} catch (error) {
res.status(500).json({
success: false,
error: error.message
});
}
});
// Get skill bonuses
router.get('/bonuses/:userId', async (req, res) => {
try {
const { userId } = req.params;
const bonuses = skillSystem.getSkillBonuses(userId);
res.json({
success: true,
bonuses
});
} catch (error) {
res.status(500).json({
success: false,
error: error.message
});
}
});
// Award skill points
router.post('/points/award/:userId', async (req, res) => {
try {
const { userId } = req.params;
const { amount } = req.body;
if (!amount || amount <= 0) {
return res.status(400).json({
success: false,
error: 'Valid point amount required'
});
}
const result = skillSystem.awardSkillPoints(userId, amount);
res.json({
success: true,
result
});
} catch (error) {
res.status(500).json({
success: false,
error: error.message
});
}
});
// Allocate skill point
router.post('/points/allocate/:userId/:skillId', async (req, res) => {
try {
const { userId, skillId } = req.params;
const result = skillSystem.allocateSkillPoint(userId, skillId);
res.json({
success: true,
result
});
} catch (error) {
res.status(500).json({
success: false,
error: error.message
});
}
});
// Get skill statistics
router.get('/stats/:userId', async (req, res) => {
try {
const { userId } = req.params;
const stats = skillSystem.getSkillStatistics(userId);
res.json({
success: true,
stats
});
} catch (error) {
res.status(500).json({
success: false,
error: error.message
});
}
});
module.exports = router;