import { useState } from 'react'; import { useGameStore } from '@/store'; import { formatMoney } from '@token-empire/shared'; function DevButton({ onClick, children, variant = 'default' }: { onClick: () => void; children: React.ReactNode; variant?: 'default' | 'success'; }) { const cls = variant === 'success' ? 'bg-emerald-500/20 hover:bg-emerald-500/30 border-emerald-500/50 text-emerald-400' : 'bg-surface-800 hover:bg-surface-700 border-surface-600 text-surface-300'; return ( ); } function DevInput({ value, onChange, placeholder, className = '' }: { value: string; onChange: (v: string) => void; placeholder?: string; className?: string; }) { return ( onChange(e.target.value)} placeholder={placeholder} className={`bg-surface-800 border border-surface-600 rounded px-2 py-1 text-xs text-surface-100 w-24 ${className}`} /> ); } export function ResourcesTab() { const money = useGameStore((s) => s.economy.money); const reputation = useGameStore((s) => s.reputation); const researchPoints = useGameStore((s) => s.research.researchPoints); const totalTrainingTokens = useGameStore((s) => s.data.totalTrainingTokens); const [customMoney, setCustomMoney] = useState(''); const [customTokens, setCustomTokens] = useState(''); const [customRP, setCustomRP] = useState(''); const addMoney = (amount: number) => { useGameStore.setState((s) => ({ economy: { ...s.economy, money: s.economy.money + amount } })); }; const setMoney = (amount: number) => { useGameStore.setState((s) => ({ economy: { ...s.economy, money: amount } })); }; const setRepField = (field: 'safetyRecord' | 'publicPerception' | 'employeeSatisfaction' | 'regulatoryStanding', value: number) => { const clamped = Math.max(0, Math.min(100, value)); useGameStore.setState((s) => ({ reputation: { ...s.reputation, [field]: clamped } })); }; const addResearchPoints = (amount: number) => { useGameStore.setState((s) => ({ research: { ...s.research, researchPoints: s.research.researchPoints + amount } })); }; const addTokens = (amount: number) => { useGameStore.setState((s) => ({ data: { ...s.data, totalTrainingTokens: s.data.totalTrainingTokens + amount } })); }; return (
Money ({formatMoney(money)})
addMoney(100_000)} variant="success">+100K addMoney(1_000_000)} variant="success">+1M addMoney(10_000_000)} variant="success">+10M addMoney(1_000_000_000)} variant="success">+1B
{ if (customMoney) setMoney(Number(customMoney)); }}>Set { if (customMoney) addMoney(Number(customMoney)); }} variant="success">Add
Reputation (score: {reputation.score})
{([ ['safetyRecord', 'Safety Record', reputation.safetyRecord], ['publicPerception', 'Public Perception', reputation.publicPerception], ['employeeSatisfaction', 'Employee Satisfaction', reputation.employeeSatisfaction], ['regulatoryStanding', 'Regulatory Standing', reputation.regulatoryStanding], ] as const).map(([field, label, val]) => (
{label} setRepField(field, Number(e.target.value))} className="flex-1 h-1 accent-accent" /> {Math.round(val)}
))}
Research Points ({researchPoints.toFixed(1)})
addResearchPoints(5)} variant="success">+5 addResearchPoints(25)} variant="success">+25 addResearchPoints(100)} variant="success">+100 { if (customRP) addResearchPoints(Number(customRP)); }} variant="success">Add
Training Tokens ({(totalTrainingTokens / 1e9).toFixed(1)}B)
addTokens(1_000_000_000)} variant="success">+1B addTokens(10_000_000_000)} variant="success">+10B addTokens(100_000_000_000)} variant="success">+100B { if (customTokens) addTokens(Number(customTokens)); }} variant="success">Add
); }