diff --git a/apps/web/src/components/game/AdventurerPanel.tsx b/apps/web/src/components/game/AdventurerPanel.tsx index e7ae9ea..2ae128b 100644 --- a/apps/web/src/components/game/AdventurerPanel.tsx +++ b/apps/web/src/components/game/AdventurerPanel.tsx @@ -19,9 +19,10 @@ interface AdventurerCardProps { adventurer: Adventurer; currentGold: number; unlockHint?: string | undefined; + formatNumber: (n: number) => string; } -const AdventurerCard = ({ adventurer, currentGold, unlockHint }: AdventurerCardProps): React.JSX.Element => { +const AdventurerCard = ({ adventurer, currentGold, unlockHint, formatNumber }: AdventurerCardProps): React.JSX.Element => { const { buyAdventurer } = useGame(); const cost = adventurerCost(adventurer); const canAfford = currentGold >= cost; @@ -31,9 +32,9 @@ const AdventurerCard = ({ adventurer, currentGold, unlockHint }: AdventurerCardP
{CLASS_ICONS[adventurer.class] ?? "⚔️"}

{adventurer.name}

-

{adventurer.goldPerSecond.toFixed(2)} gold/s each

+

{formatNumber(adventurer.goldPerSecond)} gold/s each

{adventurer.essencePerSecond > 0 && ( -

{adventurer.essencePerSecond.toFixed(3)} essence/s each

+

{formatNumber(adventurer.essencePerSecond)} essence/s each

)}
×{adventurer.count}
@@ -43,7 +44,7 @@ const AdventurerCard = ({ adventurer, currentGold, unlockHint }: AdventurerCardP onClick={() => { buyAdventurer(adventurer.id); }} type="button" > - {adventurer.unlocked ? `🪙 ${cost}` : "🔒 Locked"} + {adventurer.unlocked ? `🪙 ${formatNumber(cost)}` : "🔒 Locked"} {!adventurer.unlocked && unlockHint && (

📜 Complete: {unlockHint}

@@ -53,7 +54,7 @@ const AdventurerCard = ({ adventurer, currentGold, unlockHint }: AdventurerCardP }; export const AdventurerPanel = (): React.JSX.Element => { - const { state } = useGame(); + const { state, formatNumber } = useGame(); const [showLocked, setShowLocked] = useState(true); if (!state) return

Loading...

; @@ -87,6 +88,7 @@ export const AdventurerPanel = (): React.JSX.Element => { adventurer={adventurer} currentGold={state.resources.gold} unlockHint={adventurerUnlockHints.get(adventurer.id)} + formatNumber={formatNumber} /> ))} diff --git a/apps/web/src/components/game/PrestigePanel.tsx b/apps/web/src/components/game/PrestigePanel.tsx index 8fa891c..87ad443 100644 --- a/apps/web/src/components/game/PrestigePanel.tsx +++ b/apps/web/src/components/game/PrestigePanel.tsx @@ -5,7 +5,7 @@ import { useGame } from "../../context/GameContext.js"; const PRESTIGE_THRESHOLD = 1_000_000; export const PrestigePanel = (): React.JSX.Element => { - const { state, reload } = useGame(); + const { state, reload, formatNumber } = useGame(); const [characterName, setCharacterName] = useState(""); const [isPending, setIsPending] = useState(false); const [result, setResult] = useState<{ runestones: number; count: number } | null>(null); @@ -42,10 +42,10 @@ export const PrestigePanel = (): React.JSX.Element => {

Total gold earned:{" "} - {state.player.totalGoldEarned.toLocaleString()} + {formatNumber(state.player.totalGoldEarned)}

- Required: {PRESTIGE_THRESHOLD.toLocaleString()} + Required: {formatNumber(PRESTIGE_THRESHOLD)}

Current prestige count: {state.prestige.count}

@@ -82,7 +82,7 @@ export const PrestigePanel = (): React.JSX.Element => {

) : (

- Earn {(PRESTIGE_THRESHOLD - state.player.totalGoldEarned).toLocaleString()} more + Earn {formatNumber(PRESTIGE_THRESHOLD - state.player.totalGoldEarned)} more gold to unlock prestige.

)} diff --git a/apps/web/src/components/game/UpgradePanel.tsx b/apps/web/src/components/game/UpgradePanel.tsx index dc8efb0..a9f7944 100644 --- a/apps/web/src/components/game/UpgradePanel.tsx +++ b/apps/web/src/components/game/UpgradePanel.tsx @@ -9,9 +9,10 @@ interface UpgradeCardProps { currentEssence: number; currentCrystals: number; unlockHint?: string | undefined; + formatNumber: (n: number) => string; } -const UpgradeCard = ({ upgrade, currentGold, currentEssence, currentCrystals, unlockHint }: UpgradeCardProps): React.JSX.Element => { +const UpgradeCard = ({ upgrade, currentGold, currentEssence, currentCrystals, unlockHint, formatNumber }: UpgradeCardProps): React.JSX.Element => { const { buyUpgrade } = useGame(); const canAfford = currentGold >= upgrade.costGold && @@ -27,9 +28,9 @@ const UpgradeCard = ({ upgrade, currentGold, currentEssence, currentCrystals, un

×{upgrade.multiplier} multiplier

- {upgrade.costGold > 0 && 🪙 {upgrade.costGold.toLocaleString()}} - {upgrade.costEssence > 0 && ✨ {upgrade.costEssence.toLocaleString()}} - {(upgrade.costCrystals ?? 0) > 0 && 💎 {upgrade.costCrystals?.toLocaleString()}} + {upgrade.costGold > 0 && 🪙 {formatNumber(upgrade.costGold)}} + {upgrade.costEssence > 0 && ✨ {formatNumber(upgrade.costEssence)}} + {(upgrade.costCrystals ?? 0) > 0 && 💎 {formatNumber(upgrade.costCrystals ?? 0)}}
Locked {unlockHint &&

{unlockHint}

} @@ -54,9 +55,9 @@ const UpgradeCard = ({ upgrade, currentGold, currentEssence, currentCrystals, un

×{upgrade.multiplier} multiplier

- {upgrade.costGold > 0 && 🪙 {upgrade.costGold.toLocaleString()}} - {upgrade.costEssence > 0 && ✨ {upgrade.costEssence.toLocaleString()}} - {(upgrade.costCrystals ?? 0) > 0 && 💎 {upgrade.costCrystals?.toLocaleString()}} + {upgrade.costGold > 0 && 🪙 {formatNumber(upgrade.costGold)}} + {upgrade.costEssence > 0 && ✨ {formatNumber(upgrade.costEssence)}} + {(upgrade.costCrystals ?? 0) > 0 && 💎 {formatNumber(upgrade.costCrystals ?? 0)}}