diff --git a/src/app/page.tsx b/src/app/page.tsx index 787baf5..c847ef4 100755 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -1,13 +1,13 @@ 'use client'; import { useEffect, useState } from 'react'; -import { useGameStore, useGameLoop, fmt, fmtDec, getFloorElement, computeMaxMana, computeRegen, computeClickMana, getMeditationBonus, getIncursionStrength, canAffordSpellCost } from '@/lib/game/store'; +import { useGameStore, useGameLoop, fmt, getFloorElement, computeMaxMana, computeRegen, computeClickMana, getMeditationBonus, getIncursionStrength, canAffordSpellCost } from '@/lib/game/store'; import { getActiveEquipmentSpells, getTotalDPS } from '@/lib/game/computed-stats'; -import { getDamageBreakdown } from '@/lib/game/computed-stats'; + import { ELEMENTS, GUARDIANS, SPELLS_DEF, PRESTIGE_DEF, getStudySpeedMultiplier, getStudyCostMultiplier } from '@/lib/game/constants'; -import { SKILL_EVOLUTION_PATHS, getTierMultiplier } from '@/lib/game/skill-evolution'; + import { getUnifiedEffects, hasSpecial, SPECIAL_EFFECTS } from '@/lib/game/effects'; -import { formatHour } from '@/lib/game/formatting'; + import { Button } from '@/components/ui/button'; import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs'; import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'; diff --git a/src/components/game/ComboMeter.tsx b/src/components/game/ComboMeter.tsx deleted file mode 100755 index 12e39d6..0000000 --- a/src/components/game/ComboMeter.tsx +++ /dev/null @@ -1,143 +0,0 @@ -'use client'; - -import { Progress } from '@/components/ui/progress'; -import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'; -import { Badge } from '@/components/ui/badge'; -import { Zap, Flame, Sparkles } from 'lucide-react'; -import type { ComboState } from '@/lib/game/types'; -import { ELEMENTS } from '@/lib/game/constants'; - -interface ComboMeterProps { - combo: ComboState; - isClimbing: boolean; -} - -export function ComboMeter({ combo, isClimbing }: ComboMeterProps) { - const comboPercent = Math.min(100, combo.count); - const multiplierPercent = Math.min(100, ((combo.multiplier - 1) / 2) * 100); // Max 300% = 200% bonus - - // Combo tier names - const getComboTier = (count: number): { name: string; color: string } => { - if (count >= 100) return { name: 'LEGENDARY', color: 'text-amber-400' }; - if (count >= 75) return { name: 'Master', color: 'text-purple-400' }; - if (count >= 50) return { name: 'Expert', color: 'text-blue-400' }; - if (count >= 25) return { name: 'Adept', color: 'text-green-400' }; - if (count >= 10) return { name: 'Novice', color: 'text-cyan-400' }; - return { name: 'Building...', color: 'text-gray-400' }; - }; - - const tier = getComboTier(combo.count); - const hasElementChain = combo.elementChain.length === 3 && new Set(combo.elementChain).size === 3; - - if (!isClimbing && combo.count === 0) { - return null; - } - - return ( - - - - - Combo Meter - {combo.count >= 10 && ( - - {tier.name} - - )} - - - - {/* Combo Count */} -
-
- Hits - - {combo.count} - {combo.maxCombo > combo.count && ( - max: {combo.maxCombo} - )} - -
- -
- - {/* Multiplier */} -
-
- Multiplier - - {combo.multiplier.toFixed(2)}x - -
-
-
-
-
- - {/* Element Chain */} - {combo.elementChain.length > 0 && ( -
-
- Element Chain - {hasElementChain && ( - +25% bonus! - )} -
-
- {combo.elementChain.map((elem, i) => { - const elemDef = ELEMENTS[elem]; - return ( -
- {elemDef?.sym || '?'} -
- ); - })} - {/* Empty slots */} - {Array.from({ length: 3 - combo.elementChain.length }).map((_, i) => ( -
- ? -
- ))} -
-
- )} - - {/* Decay Warning */} - {isClimbing && combo.count > 0 && combo.decayTimer <= 3 && ( -
- - Combo decaying soon! -
- )} - - {/* Not climbing warning */} - {!isClimbing && combo.count > 0 && ( -
- - Resume climbing to maintain combo -
- )} - - - ); -} diff --git a/src/components/game/GameContext.tsx b/src/components/game/GameContext.tsx index 2e1307a..389d39f 100755 --- a/src/components/game/GameContext.tsx +++ b/src/components/game/GameContext.tsx @@ -9,7 +9,6 @@ import { useCombatStore } from '@/lib/game/stores/combatStore'; import { useGameStore, useGameLoop } from '@/lib/game/stores/gameStore'; import { computeEffects, hasSpecial, SPECIAL_EFFECTS } from '@/lib/game/upgrade-effects'; import { getStudySpeedMultiplier, getStudyCostMultiplier } from '@/lib/game/constants'; -import { getTierMultiplier } from '@/lib/game/skill-evolution'; import { computeMaxMana, computeRegen, diff --git a/src/components/game/SkillsTab.tsx b/src/components/game/SkillsTab.tsx index dc77ca3..7b8e065 100755 --- a/src/components/game/SkillsTab.tsx +++ b/src/components/game/SkillsTab.tsx @@ -2,9 +2,9 @@ import { useState } from 'react'; import { useGameStore, fmt, fmtDec } from '@/lib/game/store'; -import { SKILLS_DEF, SKILL_CATEGORIES, getStudySpeedMultiplier, getStudyCostMultiplier } from '@/lib/game/constants'; +import { SKILLS_DEF, SKILL_CATEGORIES } from '@/lib/game/constants'; import { SKILL_EVOLUTION_PATHS, getUpgradesForSkillAtMilestone, getNextTierSkill, getTierMultiplier } from '@/lib/game/skill-evolution'; -import { computeEffects, hasSpecial, SPECIAL_EFFECTS } from '@/lib/game/upgrade-effects'; +import { computeEffects } from '@/lib/game/upgrade-effects'; import { useStudyStats } from '@/lib/game/hooks/useGameDerived'; import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'; import { Badge } from '@/components/ui/badge'; diff --git a/src/components/game/SpellsTab.tsx b/src/components/game/SpellsTab.tsx index ae0a68a..9a1e788 100755 --- a/src/components/game/SpellsTab.tsx +++ b/src/components/game/SpellsTab.tsx @@ -1,7 +1,7 @@ 'use client'; -import { useGameStore, canAffordSpellCost, fmt, fmtDec, calcDamage } from '@/lib/game/store'; -import { ELEMENTS, SPELLS_DEF, getStudySpeedMultiplier, getStudyCostMultiplier } from '@/lib/game/constants'; +import { useGameStore, canAffordSpellCost } from '@/lib/game/store'; +import { ELEMENTS, SPELLS_DEF } from '@/lib/game/constants'; import { useStudyStats } from '@/lib/game/hooks/useGameDerived'; import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'; import { Badge } from '@/components/ui/badge'; diff --git a/src/components/game/SpireTab.tsx b/src/components/game/SpireTab.tsx index 7990b55..141f36c 100755 --- a/src/components/game/SpireTab.tsx +++ b/src/components/game/SpireTab.tsx @@ -1,7 +1,7 @@ 'use client'; -import { useGameStore, canAffordSpellCost, fmt, fmtDec, calcDamage, computePactMultiplier } from '@/lib/game/store'; -import { ELEMENTS, GUARDIANS, SPELLS_DEF, MANA_PER_ELEMENT } from '@/lib/game/constants'; +import { useGameStore, canAffordSpellCost, fmt, fmtDec, calcDamage } from '@/lib/game/store'; +import { ELEMENTS, GUARDIANS, SPELLS_DEF } from '@/lib/game/constants'; import { useManaStats, useCombatStats, useStudyStats } from '@/lib/game/hooks/useGameDerived'; import { formatSpellCost, getSpellCostColor, formatStudyTime } from '@/lib/game/formatting'; import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'; diff --git a/src/components/game/StatsTab.tsx b/src/components/game/StatsTab.tsx index 6b76ded..240aec7 100755 --- a/src/components/game/StatsTab.tsx +++ b/src/components/game/StatsTab.tsx @@ -1,7 +1,7 @@ 'use client'; -import { useGameStore, fmt, fmtDec, calcDamage, computePactMultiplier, computePactInsightMultiplier } from '@/lib/game/store'; -import { ELEMENTS, GUARDIANS, SPELLS_DEF } from '@/lib/game/constants'; +import { useGameStore, fmt, fmtDec } from '@/lib/game/store'; +import { ELEMENTS } from '@/lib/game/constants'; import { SKILL_EVOLUTION_PATHS, getTierMultiplier } from '@/lib/game/skill-evolution'; import { useManaStats, useCombatStats, useStudyStats } from '@/lib/game/hooks/useGameDerived'; import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'; diff --git a/src/components/game/layout/GameFooter.tsx b/src/components/game/layout/GameFooter.tsx deleted file mode 100755 index 5268afe..0000000 --- a/src/components/game/layout/GameFooter.tsx +++ /dev/null @@ -1,19 +0,0 @@ -'use client'; - -import { useGameContext } from '../GameContext'; - -export function GameFooter() { - const { store } = useGameContext(); - - return ( - - ); -} diff --git a/src/components/game/layout/GameHeader.tsx b/src/components/game/layout/GameHeader.tsx index 6b33705..e989e75 100755 --- a/src/components/game/layout/GameHeader.tsx +++ b/src/components/game/layout/GameHeader.tsx @@ -1,7 +1,6 @@ 'use client'; import { Button } from '@/components/ui/button'; -import { Progress } from '@/components/ui/progress'; import { Tooltip, TooltipContent, TooltipTrigger } from '@/components/ui/tooltip'; import { Pause, Play } from 'lucide-react'; import { useGameContext } from '../GameContext'; diff --git a/src/components/game/shared/MemorySlotPicker.tsx b/src/components/game/shared/MemorySlotPicker.tsx index 1e290b5..f1d48f6 100755 --- a/src/components/game/shared/MemorySlotPicker.tsx +++ b/src/components/game/shared/MemorySlotPicker.tsx @@ -5,7 +5,7 @@ import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'; import { Button } from '@/components/ui/button'; import { Badge } from '@/components/ui/badge'; import { ScrollArea } from '@/components/ui/scroll-area'; -import { Save, Trash2, Star, ChevronUp } from 'lucide-react'; +import { Save, Trash2, Star } from 'lucide-react'; import { useGameContext } from '../GameContext'; import { SKILLS_DEF } from '@/lib/game/constants'; import { getTierMultiplier, getBaseSkillId } from '@/lib/game/skill-evolution'; diff --git a/src/components/game/tabs/AttunementsTab.tsx b/src/components/game/tabs/AttunementsTab.tsx index 5530ab9..5e65710 100755 --- a/src/components/game/tabs/AttunementsTab.tsx +++ b/src/components/game/tabs/AttunementsTab.tsx @@ -5,9 +5,8 @@ import { ELEMENTS } from '@/lib/game/constants'; import type { GameStore, AttunementState } from '@/lib/game/types'; import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'; import { Badge } from '@/components/ui/badge'; -import { Button } from '@/components/ui/button'; import { Progress } from '@/components/ui/progress'; -import { Lock, Sparkles, TrendingUp } from 'lucide-react'; +import { Lock, TrendingUp } from 'lucide-react'; export interface AttunementsTabProps { store: GameStore; diff --git a/src/components/game/tabs/CraftingTab.tsx b/src/components/game/tabs/CraftingTab.tsx index 2fb6e2e..5b2e608 100755 --- a/src/components/game/tabs/CraftingTab.tsx +++ b/src/components/game/tabs/CraftingTab.tsx @@ -12,8 +12,8 @@ import { Wand2, Scroll, Hammer, Sparkles, Trash2, Plus, Minus, Package, Zap, Clock, ChevronRight, Circle, Anvil } from 'lucide-react'; -import { EQUIPMENT_TYPES, type EquipmentType, type EquipmentSlot } from '@/lib/game/data/equipment'; -import { ENCHANTMENT_EFFECTS, type EnchantmentEffectDef, calculateEffectCapacityCost } from '@/lib/game/data/enchantment-effects'; +import { EQUIPMENT_TYPES } from '@/lib/game/data/equipment'; +import { ENCHANTMENT_EFFECTS, calculateEffectCapacityCost } from '@/lib/game/data/enchantment-effects'; import { CRAFTING_RECIPES, canCraftRecipe } from '@/lib/game/data/crafting-recipes'; import { LOOT_DROPS, RARITY_COLORS } from '@/lib/game/data/loot-drops'; import type { EquipmentInstance, EnchantmentDesign, DesignEffect, AppliedEnchantment, LootInventory, EquipmentCraftingProgress } from '@/lib/game/types'; diff --git a/src/components/game/tabs/DebugTab.tsx b/src/components/game/tabs/DebugTab.tsx index cce4684..2ddd141 100755 --- a/src/components/game/tabs/DebugTab.tsx +++ b/src/components/game/tabs/DebugTab.tsx @@ -3,7 +3,6 @@ import { useState } from 'react'; import { Button } from '@/components/ui/button'; import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'; -import { Badge } from '@/components/ui/badge'; import { Separator } from '@/components/ui/separator'; import { Switch } from '@/components/ui/switch'; import { Label } from '@/components/ui/label'; diff --git a/src/components/game/tabs/SpellsTab.tsx b/src/components/game/tabs/SpellsTab.tsx index eb3c7d3..c3b5f15 100755 --- a/src/components/game/tabs/SpellsTab.tsx +++ b/src/components/game/tabs/SpellsTab.tsx @@ -5,7 +5,7 @@ import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'; import { Badge } from '@/components/ui/badge'; import { ELEMENTS, SPELLS_DEF } from '@/lib/game/constants'; import { ENCHANTMENT_EFFECTS } from '@/lib/game/data/enchantment-effects'; -import { calcDamage, canAffordSpellCost, fmt } from '@/lib/game/store'; +import { canAffordSpellCost } from '@/lib/game/store'; import { formatSpellCost, getSpellCostColor } from '@/lib/game/formatting'; interface SpellsTabProps { diff --git a/src/components/game/tabs/SpireTab.tsx b/src/components/game/tabs/SpireTab.tsx index 7dc13fe..ab2be33 100755 --- a/src/components/game/tabs/SpireTab.tsx +++ b/src/components/game/tabs/SpireTab.tsx @@ -7,7 +7,7 @@ import { Badge } from '@/components/ui/badge'; import { ScrollArea } from '@/components/ui/scroll-area'; import { Separator } from '@/components/ui/separator'; import { TooltipProvider } from '@/components/ui/tooltip'; -import { Swords, BookOpen, ChevronUp, ChevronDown, RotateCcw, X, Mountain } from 'lucide-react'; +import { BookOpen, ChevronUp, ChevronDown, RotateCcw, X, Mountain } from 'lucide-react'; import type { GameStore } from '@/lib/game/types'; import { ELEMENTS, GUARDIANS, SPELLS_DEF, SKILLS_DEF } from '@/lib/game/constants'; import { GOLEMS_DEF, getGolemDamage, getGolemAttackSpeed } from '@/lib/game/data/golems'; diff --git a/src/components/game/tabs/StatsTab.tsx b/src/components/game/tabs/StatsTab.tsx index fbcf40b..5a674e4 100755 --- a/src/components/game/tabs/StatsTab.tsx +++ b/src/components/game/tabs/StatsTab.tsx @@ -3,7 +3,7 @@ import { ELEMENTS, GUARDIANS, SKILLS_DEF } from '@/lib/game/constants'; import { SKILL_EVOLUTION_PATHS, getTierMultiplier } from '@/lib/game/skill-evolution'; import { hasSpecial, SPECIAL_EFFECTS } from '@/lib/game/effects'; -import { fmt, fmtDec, calcDamage } from '@/lib/game/store'; +import { fmt, fmtDec } from '@/lib/game/store'; import type { SkillUpgradeChoice, GameStore, UnifiedEffects } from '@/lib/game/types'; import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'; import { Badge } from '@/components/ui/badge'; diff --git a/src/components/game/tabs/UpgradeDialog.tsx b/src/components/game/tabs/UpgradeDialog.tsx index 77e58cf..3e3db90 100755 --- a/src/components/game/tabs/UpgradeDialog.tsx +++ b/src/components/game/tabs/UpgradeDialog.tsx @@ -1,7 +1,6 @@ 'use client'; import { SKILLS_DEF } from '@/lib/game/constants'; -import { getUpgradesForSkillAtMilestone, getTierMultiplier } from '@/lib/game/skill-evolution'; import { Dialog, DialogContent,