11import SingleCandidate from './SingleCandidate' ;
22import type { HireFunction } from '../types' ;
33import { byCategory } from '../data/catalog' ;
4- import { AGENCY_COST , AGENCY_UPGRADE_COST , PYRAMID_COST } from '../hooks/useGameLogic' ;
5- import { formatMoney } from '../utils/format' ;
4+ import { AGENCY_COST , AGENCY_UPGRADE_COST , PYRAMID_COST , FLIP_COST } from '../hooks/useGameLogic' ;
5+ import { formatMoney , formatDuration } from '../utils/format' ;
66
77const devs = byCategory ( 'dev' ) ;
88// Hidden sellers (e.g. the agency-only LinkedIn Bro) never get a manual hire button
@@ -24,6 +24,11 @@ interface HireProps {
2424 pyramidUnlocked : boolean ;
2525 pyramidPurchased : boolean ;
2626 buyPyramidScheme : ( ) => void ;
27+ flipUnlocked : boolean ;
28+ flipPurchased : boolean ;
29+ buyFlip : ( ) => void ;
30+ agiAchieved : boolean ;
31+ agiElapsedMs : number ;
2732}
2833
2934const DISPLAY_COST_DIFFERENCE = 500 ;
@@ -43,11 +48,29 @@ export default function HirePanel({
4348 buyAgencyUpgrade,
4449 pyramidUnlocked,
4550 pyramidPurchased,
46- buyPyramidScheme
51+ buyPyramidScheme,
52+ flipUnlocked,
53+ flipPurchased,
54+ buyFlip,
55+ agiAchieved,
56+ agiElapsedMs
4757} : HireProps ) {
58+ if ( agiAchieved ) {
59+ return (
60+ < div className = "rounded border border-ink-faint/30 p-6 text-center" >
61+ < h4 className = "text-ink font-semibold uppercase tracking-widest mb-2" >
62+ AGI Achieved: no more working
63+ </ h4 >
64+ < p className = "text-sm text-ink-muted" >
65+ Time to AGI:{ ' ' }
66+ < span className = "text-ink font-semibold" > { formatDuration ( agiElapsedMs ) } </ span >
67+ </ p >
68+ </ div >
69+ ) ;
70+ }
4871 const teamFull = people >= maxPeople ;
4972 const listDevs = devs
50- . filter ( ( dev ) => dev . cost / 2 <= maxMoney ) // TODO - esto igual renta irlo ajustando o tener alguna regla especial
73+ . filter ( ( dev , index ) => index === 0 || dev . cost / 2 <= maxMoney ) // TODO - esto igual renta irlo ajustando o tener alguna regla especial
5174 . map ( ( dev , index ) => (
5275 < SingleCandidate
5376 key = { index }
@@ -86,31 +109,31 @@ export default function HirePanel({
86109 { agencyPurchased ? (
87110 < >
88111 < p className = "text-xs text-ink-muted" >
89- Active — auto-hires LinkedIn Bros ($10M each, sells +50M /s) every{ ' ' }
112+ Active: auto-hires LinkedIn Bros ($10M each, sells +5M /s) every{ ' ' }
90113 { agencyUpgraded ? '1s' : '3s' } .
91114 </ p >
92115 < p className = "text-xs text-ink-faint mt-1" > LinkedIn Bros: { linkedInBros } </ p >
93116 { agencyUpgraded ? (
94- < p className = "text-xs text-ink-faint mt-1" > Upgraded — hires every 1s.</ p >
117+ < p className = "text-xs text-ink-faint mt-1" > Upgraded: hires every 1s.</ p >
95118 ) : (
96119 < button
97120 onClick = { buyAgencyUpgrade }
98121 disabled = { money < AGENCY_UPGRADE_COST }
99122 className = "ghost disabled:opacity-40 disabled:cursor-not-allowed mt-2" >
100- Upgrade Agency — { formatMoney ( AGENCY_UPGRADE_COST ) }
123+ Upgrade Agency: { formatMoney ( AGENCY_UPGRADE_COST ) }
101124 </ button >
102125 ) }
103126 </ >
104127 ) : (
105128 < >
106129 < p className = "text-xs text-ink-muted mb-2" >
107- Buy once to auto-hire LinkedIn Bros (+50M /s).
130+ Buy once to auto-hire LinkedIn Bros (+5M /s).
108131 </ p >
109132 < button
110133 onClick = { buyAgency }
111134 disabled = { money < AGENCY_COST }
112135 className = "ghost disabled:opacity-40 disabled:cursor-not-allowed" >
113- Buy Agency — ${ AGENCY_COST . toLocaleString ( ) }
136+ Buy Agency: ${ AGENCY_COST . toLocaleString ( ) }
114137 </ button >
115138 </ >
116139 ) }
@@ -134,7 +157,31 @@ export default function HirePanel({
134157 onClick = { buyPyramidScheme }
135158 disabled = { money < PYRAMID_COST }
136159 className = "ghost disabled:opacity-40 disabled:cursor-not-allowed" >
137- Buy Pyramid Scheme — ${ PYRAMID_COST . toLocaleString ( ) }
160+ Try Ponzi Scheme: { formatMoney ( PYRAMID_COST ) }
161+ </ button >
162+ </ >
163+ ) }
164+ </ div >
165+ ) }
166+ { flipUnlocked && (
167+ < div className = "mt-4 rounded border border-ink-faint/30 p-3" >
168+ < h4 className = "text-ink-muted text-xs font-semibold uppercase tracking-widest mb-1" >
169+ IPO
170+ </ h4 >
171+ { flipPurchased ? (
172+ < p className = "text-xs text-ink-muted" >
173+ Active: each manual Sell now nets 1% of your money.
174+ </ p >
175+ ) : (
176+ < >
177+ < p className = "text-xs text-ink-muted mb-2" >
178+ Buy once: every manual Sell pays 1% of your money instead of quality.
179+ </ p >
180+ < button
181+ onClick = { buyFlip }
182+ disabled = { money < FLIP_COST }
183+ className = "ghost disabled:opacity-40 disabled:cursor-not-allowed" >
184+ Buy IPO: { formatMoney ( FLIP_COST ) }
138185 </ button >
139186 </ >
140187 ) }
0 commit comments