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 ;
@@ -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)}}