import React, { useState, useEffect } from "react"; import { useSocket } from "../../../hooks/useSocket"; import GameDataManager from "../../../services/GameDataManager"; import "./styles/SkillsTab.css"; import CategorySelector from "../components/CategorySelector"; import MeteorRegion from "../../../components/Meteor/MeteorRegion.jsx"; import { SkillCard } from "./components/SkillsCard.jsx"; const SkillsTab = () => { const { socket } = useSocket(); const [categories, setCategories] = useState([]); const [activeCategory, setActiveCategory] = useState(""); const [skills, setSkills] = useState([]); const [playerSkills, setPlayerSkills] = useState({}); const [skillPoints, setSkillPoints] = useState(0); useEffect(() => { const manifestCategories = GameDataManager.getSkillCategories(); setCategories(manifestCategories); if (manifestCategories.length > 0) { setActiveCategory(manifestCategories[0].id); } }, []); useEffect(() => { if (activeCategory) { const filtered = GameDataManager.getSkillsByCategory(activeCategory); setSkills(filtered); } }, [activeCategory]); useEffect(() => { if (!socket) return; socket.emit("player:get_skill_points"); socket.emit("player:get_skills"); const handleSkillPoints = (data) => setSkillPoints(data.points || 0); const handleSkillsData = (data) => setPlayerSkills(data.skills || {}); socket.on("player:skill_points_data", handleSkillPoints); socket.on("player:skills_data", handleSkillsData); return () => { socket.off("player:skill_points_data", handleSkillPoints); socket.off("player:skills_data", handleSkillsData); }; }, [socket]); const handleUpgrade = (skillId) => { socket.emit("player:upgrade_skill", { skillId }); }; return (
No active modules found in this sector.