51 lines
1.4 KiB
TypeScript
51 lines
1.4 KiB
TypeScript
export interface GameState {
|
|
totalClicks: number;
|
|
users: Record<string, { name: string; clicks: number; lastSeen: number; bonusMultiplier: number }>; // Added bonusMultiplier
|
|
upgrades: Record<string, { owned: number; cost: number }>;
|
|
milestones: Record<string, boolean>;
|
|
clickMultiplier: number;
|
|
autoClickRate: number;
|
|
currentBackground: string;
|
|
currentClickImage: string;
|
|
}
|
|
|
|
export interface Upgrade {
|
|
id: string;
|
|
name: string;
|
|
description: string;
|
|
baseCost: number;
|
|
multiplier: number;
|
|
clickBonus?: number;
|
|
autoClickRate?: number;
|
|
clickMultiplierBonus?: number; // New: for compounding click boosts from mascots
|
|
icon: string;
|
|
mascotTiers?: MascotTier[]; // New: for defining mascot tiers for friendBoost
|
|
oneTime?: boolean; // New: Indicates if the upgrade is a one-time purchase
|
|
newsTitles?: string[]; // New: Array of news titles for the news upgrade
|
|
}
|
|
|
|
export interface MascotTier {
|
|
level: number;
|
|
imageSrc: string;
|
|
multiplier: number;
|
|
rarity: number; // 0 to 1, 1 being most common
|
|
}
|
|
|
|
export interface ClickableMascot { // Renamed from Shoominion
|
|
id: string;
|
|
x: number;
|
|
y: number;
|
|
multiplierBonus: number; // The multiplier this specific mascot provides
|
|
imageSrc: string; // New: Source for the mascot image
|
|
}
|
|
|
|
export interface Milestone {
|
|
threshold: number;
|
|
id: string;
|
|
name: string;
|
|
description: string;
|
|
background: string;
|
|
image: string;
|
|
reward: string;
|
|
}
|