244 lines
4.9 KiB
JavaScript
244 lines
4.9 KiB
JavaScript
const express = require('express');
|
|
const BaseSystem = require('../systems/BaseSystem');
|
|
|
|
const router = express.Router();
|
|
|
|
// Initialize base system
|
|
const baseSystem = new BaseSystem();
|
|
|
|
// Get player base
|
|
router.get('/player/:userId', async (req, res) => {
|
|
try {
|
|
const { userId } = req.params;
|
|
const base = baseSystem.getPlayerBase(userId);
|
|
|
|
res.json({
|
|
success: true,
|
|
base
|
|
});
|
|
} catch (error) {
|
|
res.status(500).json({
|
|
success: false,
|
|
error: error.message
|
|
});
|
|
}
|
|
});
|
|
|
|
// Get base statistics
|
|
router.get('/stats/:userId', async (req, res) => {
|
|
try {
|
|
const { userId } = req.params;
|
|
const stats = baseSystem.getBaseStatistics(userId);
|
|
|
|
res.json({
|
|
success: true,
|
|
stats
|
|
});
|
|
} catch (error) {
|
|
res.status(500).json({
|
|
success: false,
|
|
error: error.message
|
|
});
|
|
}
|
|
});
|
|
|
|
// Add experience to base
|
|
router.post('/experience/: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 experience amount required'
|
|
});
|
|
}
|
|
|
|
const result = baseSystem.addExperience(userId, amount);
|
|
|
|
res.json({
|
|
success: true,
|
|
result
|
|
});
|
|
} catch (error) {
|
|
res.status(500).json({
|
|
success: false,
|
|
error: error.message
|
|
});
|
|
}
|
|
});
|
|
|
|
// Build room
|
|
router.post('/build/:userId', async (req, res) => {
|
|
try {
|
|
const { userId } = req.params;
|
|
const { roomType, level = 1 } = req.body;
|
|
|
|
if (!roomType) {
|
|
return res.status(400).json({
|
|
success: false,
|
|
error: 'Room type required'
|
|
});
|
|
}
|
|
|
|
const result = baseSystem.buildRoom(userId, roomType, level);
|
|
|
|
res.json({
|
|
success: true,
|
|
result
|
|
});
|
|
} catch (error) {
|
|
res.status(500).json({
|
|
success: false,
|
|
error: error.message
|
|
});
|
|
}
|
|
});
|
|
|
|
// Upgrade room
|
|
router.post('/upgrade/:userId', async (req, res) => {
|
|
try {
|
|
const { userId } = req.params;
|
|
const { roomType } = req.body;
|
|
|
|
if (!roomType) {
|
|
return res.status(400).json({
|
|
success: false,
|
|
error: 'Room type required'
|
|
});
|
|
}
|
|
|
|
const result = baseSystem.upgradeRoom(userId, roomType);
|
|
|
|
res.json({
|
|
success: true,
|
|
result
|
|
});
|
|
} catch (error) {
|
|
res.status(500).json({
|
|
success: false,
|
|
error: error.message
|
|
});
|
|
}
|
|
});
|
|
|
|
// Demolish room
|
|
router.post('/demolish/:userId', async (req, res) => {
|
|
try {
|
|
const { userId } = req.params;
|
|
const { roomType } = req.body;
|
|
|
|
if (!roomType) {
|
|
return res.status(400).json({
|
|
success: false,
|
|
error: 'Room type required'
|
|
});
|
|
}
|
|
|
|
const result = baseSystem.demolishRoom(userId, roomType);
|
|
|
|
res.json({
|
|
success: true,
|
|
result
|
|
});
|
|
} catch (error) {
|
|
res.status(500).json({
|
|
success: false,
|
|
error: error.message
|
|
});
|
|
}
|
|
});
|
|
|
|
// Add decoration
|
|
router.post('/decoration/add/:userId', async (req, res) => {
|
|
try {
|
|
const { userId } = req.params;
|
|
const { decorationType } = req.body;
|
|
|
|
if (!decorationType) {
|
|
return res.status(400).json({
|
|
success: false,
|
|
error: 'Decoration type required'
|
|
});
|
|
}
|
|
|
|
const result = baseSystem.addDecoration(userId, decorationType);
|
|
|
|
res.json({
|
|
success: true,
|
|
result
|
|
});
|
|
} catch (error) {
|
|
res.status(500).json({
|
|
success: false,
|
|
error: error.message
|
|
});
|
|
}
|
|
});
|
|
|
|
// Remove decoration
|
|
router.post('/decoration/remove/:userId', async (req, res) => {
|
|
try {
|
|
const { userId } = req.params;
|
|
const { decorationIndex } = req.body;
|
|
|
|
if (decorationIndex === undefined || decorationIndex === null) {
|
|
return res.status(400).json({
|
|
success: false,
|
|
error: 'Decoration index required'
|
|
});
|
|
}
|
|
|
|
const result = baseSystem.removeDecoration(userId, decorationIndex);
|
|
|
|
res.json({
|
|
success: true,
|
|
result
|
|
});
|
|
} catch (error) {
|
|
res.status(500).json({
|
|
success: false,
|
|
error: error.message
|
|
});
|
|
}
|
|
});
|
|
|
|
// Get available rooms
|
|
router.get('/rooms/available/:userId', async (req, res) => {
|
|
try {
|
|
const { userId } = req.params;
|
|
const rooms = baseSystem.getAvailableRooms(userId);
|
|
|
|
res.json({
|
|
success: true,
|
|
rooms
|
|
});
|
|
} catch (error) {
|
|
res.status(500).json({
|
|
success: false,
|
|
error: error.message
|
|
});
|
|
}
|
|
});
|
|
|
|
// Get room upgrades
|
|
router.get('/rooms/upgrades/:userId', async (req, res) => {
|
|
try {
|
|
const { userId } = req.params;
|
|
const upgrades = baseSystem.getRoomUpgrades(userId);
|
|
|
|
res.json({
|
|
success: true,
|
|
upgrades
|
|
});
|
|
} catch (error) {
|
|
res.status(500).json({
|
|
success: false,
|
|
error: error.message
|
|
});
|
|
}
|
|
});
|
|
|
|
module.exports = router;
|