const express = require('express'); const CraftingSystem = require('../systems/CraftingSystem'); const router = express.Router(); // Initialize crafting system const craftingSystem = new CraftingSystem(); // Get all recipes router.get('/recipes', async (req, res) => { try { const recipes = craftingSystem.getAllRecipes(); res.json({ success: true, recipes }); } catch (error) { res.status(500).json({ success: false, error: error.message }); } }); // Get recipe by ID router.get('/recipes/:id', async (req, res) => { try { const { id } = req.params; const recipe = craftingSystem.getRecipe(id); if (!recipe) { return res.status(404).json({ success: false, error: 'Recipe not found' }); } res.json({ success: true, recipe }); } catch (error) { res.status(500).json({ success: false, error: error.message }); } }); // Get recipes by type router.get('/recipes/type/:type', async (req, res) => { try { const { type } = req.params; const recipes = craftingSystem.getRecipesByType(type); res.json({ success: true, recipes }); } catch (error) { res.status(500).json({ success: false, error: error.message }); } }); // Get player crafting data router.get('/player/:userId', async (req, res) => { try { const { userId } = req.params; const playerData = craftingSystem.getPlayerData(userId); res.json({ success: true, playerData }); } catch (error) { res.status(500).json({ success: false, error: error.message }); } }); // Check if can craft router.post('/can-craft/:userId/:recipeId', async (req, res) => { try { const { userId, recipeId } = req.params; const { inventory } = req.body; if (!inventory) { return res.status(400).json({ success: false, error: 'Inventory data required' }); } const canCraft = craftingSystem.canCraft(userId, recipeId, inventory); res.json({ success: true, canCraft }); } catch (error) { res.status(500).json({ success: false, error: error.message }); } }); // Craft item router.post('/craft/:userId/:recipeId', async (req, res) => { try { const { userId, recipeId } = req.params; const { inventory } = req.body; if (!inventory) { return res.status(400).json({ success: false, error: 'Inventory data required' }); } const result = await craftingSystem.craftItem(userId, recipeId, inventory); res.json({ success: true, result }); } catch (error) { res.status(500).json({ success: false, error: error.message }); } }); // Learn recipe router.post('/learn/:userId/:recipeId', async (req, res) => { try { const { userId, recipeId } = req.params; const result = craftingSystem.learnRecipe(userId, recipeId); res.json({ success: true, result }); } catch (error) { res.status(500).json({ success: false, error: error.message }); } }); // Get player known recipes router.get('/known/:userId', async (req, res) => { try { const { userId } = req.params; const recipes = craftingSystem.getPlayerKnownRecipes(userId); res.json({ success: true, recipes }); } catch (error) { res.status(500).json({ success: false, error: error.message }); } }); // Get crafting stats router.get('/stats/:userId', async (req, res) => { try { const { userId } = req.params; const stats = craftingSystem.getCraftingStats(userId); res.json({ success: true, stats }); } catch (error) { res.status(500).json({ success: false, error: error.message }); } }); // Discover recipe router.post('/discover/:userId/:recipeId', async (req, res) => { try { const { userId, recipeId } = req.params; const result = craftingSystem.discoverRecipe(userId, recipeId); res.json({ success: true, result }); } catch (error) { res.status(500).json({ success: false, error: error.message }); } }); module.exports = router;