'use client'; import { SKILL_EVOLUTION_PATHS, getTierMultiplier } from '@/lib/game/skill-evolution'; import { SKILLS_DEF } from '@/lib/game/constants'; import type { GameStore, SkillUpgradeChoice } from '@/lib/game/types'; import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'; import { Badge } from '@/components/ui/badge'; import { Star } from 'lucide-react'; export interface UpgradeEffectsSectionProps { store: GameStore; } // Helper function to get all selected skill upgrades function getAllSelectedUpgrades(store: GameStore) { const upgrades: { skillId: string; upgrade: SkillUpgradeChoice }[] = []; for (const [skillId, selectedIds] of Object.entries(store.skillUpgrades)) { const baseSkillId = skillId.includes('_t') ? skillId.split('_t')[0] : skillId; const path = SKILL_EVOLUTION_PATHS[baseSkillId]; if (!path) continue; for (const tier of path.tiers) { if (tier.skillId === skillId) { for (const upgradeId of selectedIds) { const upgrade = tier.upgrades.find(u => u.id === upgradeId); if (upgrade) { upgrades.push({ skillId, upgrade }); } } } } } return upgrades; } export function UpgradeEffectsSection({ store }: UpgradeEffectsSectionProps) { const selectedUpgrades = getAllSelectedUpgrades(store); return ( Active Skill Upgrades ({selectedUpgrades.length}) {selectedUpgrades.length === 0 ? (
No skill upgrades selected yet. Level skills to 5 or 10 to choose upgrades.
) : (
{selectedUpgrades.map(({ skillId, upgrade }) => (
{upgrade.name} {SKILLS_DEF[skillId]?.name || skillId}
{upgrade.desc}
{upgrade.effect.type === 'multiplier' && (
+{Math.round((upgrade.effect.value! - 1) * 100)}% {upgrade.effect.stat}
)} {upgrade.effect.type === 'bonus' && (
+{upgrade.effect.value} {upgrade.effect.stat}
)} {upgrade.effect.type === 'special' && (
⚡ {upgrade.effect.specialDesc || 'Special effect active'}
)}
))}
)}
); }