sandhill-road
Version:
A narrative-driven startup simulation game where you guide a founder from garage to exit
69 lines (68 loc) • 2.02 kB
TypeScript
export type FounderStats = {
health: number;
morale: number;
hustle: number;
tech: number;
luck: number;
stamina: number;
maxStamina: number;
staminaRegen: number;
personalCash: number;
};
export type CompanyStats = {
runway: number;
burnRate: number;
users: number;
productProgress: number;
companyCash: number;
revenue: number;
investorTrust: number;
};
export declare enum GameStage {
Garage = "Garage",
DemoDay = "Demo Day",
Fundraising = "Fundraising",
PMF = "PMF",
Scaling = "Scaling",
Crisis = "Crisis",
Exit = "Exit"
}
export type StageProgress = {
currentStage: GameStage;
week: number;
completedEvents: string[];
availableEvents: string[];
completedExclusiveGroups: string[];
};
export type CompanyFlags = {
hasCoFounder: boolean;
coFounderEquity: number;
inAccelerator: boolean;
acceleratorName?: string;
hasRaisedSeed: boolean;
hasRaisedSeriesA: boolean;
hasPMF: boolean;
hasFirstEmployee: boolean;
hasOffice: boolean;
hasBoard: boolean;
majorCrisisSurvived: boolean;
exitOffersReceived: number;
};
export type GameState = {
founderName: string;
companyName: string;
founderStats: FounderStats;
companyStats: CompanyStats;
stageProgress: StageProgress;
companyFlags: CompanyFlags;
gameOver: boolean;
gameOverReason?: string;
};
export declare const createInitialGameState: (founderName: string, companyName: string, initialPersonalCash?: number) => GameState;
export declare const initGame: (founderName: string, companyName: string, initialCash?: number) => GameState;
export declare const getGameState: () => GameState;
export declare const updateGameState: (updater: (state: GameState) => GameState) => GameState;
export declare const saveGame: () => void;
export declare const loadGame: () => GameState | null;
export declare const endGame: (reason: string) => void;
export declare const advanceWeek: () => void;