UNPKG

react-incremental-library

Version:

A React library for incremental, idle, and clicker games. Build high-performance, engaging experiences with minimal setup.

334 lines (308 loc) 10.3 kB
interface GameLoopOptions { tickRate?: number; startPaused?: boolean; maxTickTime?: number; catchupThreshold?: number; onTick?: (delta: number) => void; debugMode?: boolean; } interface GameLoopReturn { tick: number; deltaTime: number; isPaused: boolean; fps: number; togglePause: () => void; pause: () => void; resume: () => void; resetTick: () => void; } declare function useGameLoop(options?: GameLoopOptions): GameLoopReturn; type UpgradeStatic = { cost: number; onUpgrade: () => void; onBuy: () => void; onBuyAll: () => void; onBuyCustom: (amount: number) => void; onSell: () => void; onSellAll: () => void; onSellCustom: (amount: number) => void; }; type UpgradeSellable = { isSellable: true; }; type UpgradeNonSellable = { isSellable: false; }; interface UseTickProps { interval: number; onTick: () => void; startImmediately?: boolean; } type Notation = 'compact' | 'standard' | 'scientific' | 'engineering'; type UseTickPropsWithEnabled = Omit<UseTickProps, 'onTick'> & { callback: () => void; enabled?: boolean; }; declare const useTick: ({ interval, callback, enabled, }: UseTickPropsWithEnabled) => void; interface UseAutoIncrementProps { interval: number; increaseBy: number; onPause?: () => void; onResume?: () => void; onAutoIncrement?: (amount: number) => void; options?: { startPaused?: boolean; }; } /** * Hook to automatically increase currency by `increaseBy` every `interval` ms. * * @param {UseAutoIncrementProps} props * @param {number} props.interval - The interval in milliseconds. * @param {number} props.increaseBy - The amount to increase the currency by each interval. * @param {object} [props.options] - Additional configuration. * @param {boolean} [props.options.startPaused] - If true, starts in a paused state. * @param {Function} [props.onPause] - Called when the timer is paused. * @param {Function} [props.onResume] - Called when the timer is resumed. * @param {Function} [props.onAutoIncrement] - Called when the timer increments the currency. * @returns {{ pause: () => boolean, resume: () => void, isPaused: boolean }} * An object with control methods and the paused state. */ declare const useAutoIncrement: ({ interval, increaseBy, onPause, onResume, onAutoIncrement, options, }: UseAutoIncrementProps) => { pause: () => boolean; resume: () => void; isPaused: boolean; }; interface UseIdleProgressProps { resourcePerSecond: number; } declare const useIdleProgress: ({ resourcePerSecond, }: UseIdleProgressProps) => { idleGain: number; }; declare const useOfflineProgress: () => { maxOfflineTime: number; offlineMultiplier: number; setMaxOfflineTime: (time: number) => void; setOfflineMultiplier: (multiplier: number) => void; registerOfflineCallback: (callback: (elapsedTime: number) => void) => void; }; interface UseAchievementProps { name: string; condition: boolean; onUnlock?: () => void; progress?: number; progressCurrent?: number; progressTarget?: number; category?: string; description?: string; icon?: string; hidden?: boolean; } declare const useAchievement: ({ name, condition, onUnlock, progress, progressCurrent, progressTarget, category, description, icon, hidden, }: UseAchievementProps) => { unlocked: boolean; progress: number; category: string; description: string; icon: string | undefined; hidden: boolean; }; interface Achievement { name: string; condition: boolean; onUnlock?: () => void; category?: string; description?: string; icon?: string; hidden?: boolean; progress?: number; progressTarget?: number; progressCurrent?: number; } interface UseAchievementsOptions { persistenceKey?: string; onAchievementUnlocked?: (achievementName: string) => void; } interface UseAchievementsReturn { allAchievements: { name: string; unlocked: boolean; category: string; description: string; icon?: string; hidden: boolean; progress: number; }[]; getAchievement: (name: string) => { name: string; unlocked: boolean; category: string; description: string; icon?: string; hidden: boolean; progress: number; }; getAchievementsByCategory: (category: string) => { name: string; unlocked: boolean; category: string; description: string; icon?: string; hidden: boolean; progress: number; }[]; categories: string[]; completionPercentage: number; } declare const useAchievements: (achievementsList: Achievement[], options?: UseAchievementsOptions) => UseAchievementsReturn; declare const usePrestige: () => { prestigePoints: number; prestigeMultiplier: number; prestigeThreshold: number; canPrestige: boolean; prestige: () => void; setPrestigeThreshold: (threshold: number) => void; registerResetCallback: (callback: () => void) => void; reset: () => void; }; type UseUpgradeProps = UpgradeStatic & (UpgradeSellable | UpgradeNonSellable); declare const useUpgrade: (props: UseUpgradeProps) => { handleUpgrade: () => void; handleBuy: () => void; handleBuyAll: () => void; handleBuyCustom: (amount: number) => void; handleSell: () => void; handleSellAll: () => void; handleSellCustom: (amount: number) => void; owned: number; }; interface UseCooldownProps { duration: number; autoReset?: boolean; } declare const useCooldown: ({ duration, autoReset, }: UseCooldownProps) => { isCoolingDown: boolean; remainingTime: number; startCooldown: () => void; resetCooldown: () => void; }; interface UseCurrencyOptions { /** * Custom formatter for currency display * @param value The currency value to format * @returns Formatted string representation of the currency */ formatter?: (value: number) => string; /** * Number of decimal places to display * @default 2 */ precision?: number; /** * Initial currency name */ initialName?: string; } /** * Hook for managing game currency with formatting options * @param options Configuration options for the currency * @returns Currency state and methods */ declare const useCurrency: (options?: UseCurrencyOptions) => { currency: number; increase: (by: number) => void; decrease: (by: number) => void; currencyName: string; reset: () => void; setCurrencyName: (name: string) => void; setPrecision: (precision: number) => void; setFormat: (formatter: ((value: number) => string) | undefined) => void; getFormatted: () => string; getValue: () => number; setMaxValue: (max: number | undefined) => void; setMinValue: (min: number | undefined) => void; }; interface Producer { id: string; name: string; baseCost: number; baseProduction: number; costScaling: number; count: number; dependencies?: { producerId: string; requiredCount: number; }[]; } declare const useProduction: () => { addProducer: (producer: Omit<Producer, "count">) => void; buyProducer: (producerId: string) => boolean; updateProduction: (deltaTime: number) => void; getProducerCost: (producerId: string) => number; getProducerProduction: (producerId: string) => number; canBuyProducer: (producerId: string) => boolean; reset: () => void; producers: Record<string, Producer>; lastUpdate: number; }; interface UseResourceCapProps { initialValue: number; max: number; } declare const useResourceCap: ({ initialValue, max }: UseResourceCapProps) => { resource: number; addResource: (amount: number) => void; removeResource: (amount: number) => void; }; interface UseMultiplierProps { baseValue: number; initialMultiplier?: number; } declare const useMultiplier: ({ baseValue, initialMultiplier, }: UseMultiplierProps) => { multiplier: number; applyMultiplier: () => number; increaseMultiplier: (by: number) => void; resetMultiplier: () => void; }; interface UseClickerProps { initialValue?: number; onClick?: (newValue: number) => void; } declare const useClicker: ({ initialValue, onClick }: UseClickerProps) => { count: number; handleClick: () => void; }; type HotKeyType = 'keydown' | 'keyup'; type KeyCombination = string[]; interface UseHotKeyProps { /** Single key or combination of keys that trigger the callback */ keys: string | KeyCombination; /** Function to call when the hotkey is triggered */ callback: (event: KeyboardEvent) => void; /** Type of keyboard event to listen for */ eventType?: HotKeyType; /** Whether to prevent the default browser behavior */ preventDefault?: boolean; /** Whether to stop the event propagation */ stopPropagation?: boolean; /** Whether the hotkey is currently disabled */ disabled?: boolean; /** Minimum time (in ms) between callback executions */ debounceMs?: number; /** Whether keys must be pressed in the exact order specified */ requireExactOrder?: boolean; /** Whether to allow key repeat events */ allowRepeat?: boolean; } declare const useHotKey: ({ keys, callback, eventType, preventDefault, stopPropagation, disabled, debounceMs, requireExactOrder, allowRepeat }: UseHotKeyProps) => null; declare const useNotation: (number: string | number, notation: Notation, locale?: string) => string | number; declare const useLoadSaveGame: <T>() => T; interface UseSaveGameProps<T> { data: T; onSave?: () => void; onDiscard?: () => void; } declare const useSaveGame: <T>(props: UseSaveGameProps<T>) => { data: T; }; export { useAchievement, useAchievements, useAutoIncrement, useClicker, useCooldown, useCurrency, useGameLoop, useHotKey, useIdleProgress, useLoadSaveGame, useMultiplier, useNotation, useOfflineProgress, usePrestige, useProduction, useResourceCap, useSaveGame, useTick, useUpgrade }; export type { Achievement, UseAchievementProps, UseAchievementsOptions, UseAchievementsReturn };