UNPKG

@kitten-science/kitten-scientists

Version:

Add-on for the wonderful incremental browser game: https://kittensgame.com/web/

204 lines 9.01 kB
import type { AnyFunction } from "@oliversalzburg/js-utils/core.js"; import type { AllBuildingStackableBtnOptions, BuildingStackableBtn, BuildingStackableBtnController, ButtonModern, ButtonModernController, Tab, TabManager, UnsafeBuildingBtnModernModel, UnsafeButtonModernModel, UnsafeLinkResult } from "./core.js"; import type { GamePage } from "./game.js"; import type { Building, BuildingEffect, Price, UnsafeBuyItemResult, UnsafeMeta } from "./index.js"; export type Metadata<TMeta extends Record<string, unknown> | unknown = unknown> = { meta: TMeta; new (meta: TMeta): Metadata<TMeta>; getMeta(): TMeta; get<TAttr extends keyof TMeta>(attr: TAttr): TMeta[TAttr]; set<TAttr extends keyof TMeta>(attr: TAttr, val: TMeta[TAttr]): void; }; export type BuildingMeta<TMeta extends UnsafeBuilding = UnsafeBuilding, TMetaCache = TMeta extends { stages: Array<infer S>; } ? TMeta & S : TMeta> = Metadata<TMeta> & { _metaCache: TMetaCache; _metaCacheStage: number; getMeta(): TMetaCache; get<TAttr extends keyof TMetaCache>(attr: TAttr): TMetaCache[TAttr]; set<TAttr extends keyof TMetaCache>(attr: TAttr, val: TMetaCache[TAttr]): void; }; export type BuildingsManager = TabManager<UnsafeMeta<UnsafeBuilding>> & { buildingGroups: Array<{ name: string; title: string; buildings: Array<Building>; }>; buildingsData: Array<UnsafeBuilding>; cacheCathPollutionPerTick: () => void; calculatePollutionEffects: () => void; cathPollution: number; cathPollutionFastForward: (ticks: number, simplified: boolean) => void; cathPollutionPerTick: number; devAddStorage: () => void; effectsBase: Record<"catnipMax" | "woodMax" | "mineralsMax" | "coalMax" | "ironMax" | "titaniumMax" | "goldMax" | "oilMax" | "uraniumMax" | "unobtainiumMax" | "antimatterMax" | "manpowerMax" | "scienceMax" | "cultureMax" | "faithMax" | "hutFakeBought" | "logHouseFakeBought" | "mansionFakeBought", number>; fastforward: (daysOffset: number) => void; game: GamePage; gatherCatnip: () => void; /** @deprecated Use `getBuildingExt()` instead. */ get: (name: Building) => UnsafeBuilding; getAutoProductionRatio: () => number; getBuildingExt: (name: Building) => BuildingMeta<UnsafeBuilding>; getCleanEnergy: () => number; getCleanEnergyProdRatio: () => number; getDetailedPollutionInfo: () => string; getEffect: (effectName: BuildingEffect) => number; /** * returns pollution value at which pollutionDissipationRatio will make pollutionPerTick equal to 0, or -1 if such value doesn't exits */ getEquilibriumPollution: () => number; getPollutingEnergy: () => number; getPollutionLevel: () => number; getPollutionLevelBase: () => number; getPollutionRatio: () => number; getPriceRatio: (bldName: Building) => number; getPriceRatioWithAccessor: (bld: BuildingMeta<UnsafeBuilding>) => number; getPrices: (bldName: Building, additionalBought?: number) => Array<Price>; getPricesWithAccessor: (bld: BuildingMeta<UnsafeBuilding>, additionalBought?: number) => Array<Price>; getUndissipatedPollutionPerTick: () => number; gflopsFastForward: (ticks: number) => void; groupBuildings: boolean; isUnlockable: (building: Building) => boolean; isUnlocked: (building: Building) => boolean; load: (saveData: unknown) => void; metaCache: Record<Building, BuildingMeta<UnsafeBuilding>>; new (game: GamePage): BuildingsManager; pollutionEffects: Record<"catnipPollutionRatio" | "pollutionHappines" | "solarRevolutionPollution" | "pollutionDissipationRatio" | "pollutionArrivalSlowdown", number>; refineCatnip: () => void; resetState: () => void; save: (saveData: unknown) => void; setEffectsCachedExisting: () => void; setEquilibriumPollution: () => void; twoRows: boolean; undo: (data: unknown) => void; update: () => void; }; export type GatherCatnipButtonController = ButtonModernController & { new (game: GamePage): GatherCatnipButtonController; buyItem: (model: unknown, event: unknown) => UnsafeBuyItemResult; }; export type RefineCatnipButtonController = ButtonModernController & { new (game: GamePage): RefineCatnipButtonController; fetchModel: <TModel extends UnsafeRefineCatnipButtonModel = UnsafeRefineCatnipButtonModel>(options: unknown) => TModel; handleX100Click: <TModel extends UnsafeRefineCatnipButtonModel = UnsafeRefineCatnipButtonModel>(model: TModel) => void; }; export type RefineCatnipButton = ButtonModern<UnsafeRefineCatnipButtonOptions> & { new (game: GamePage): RefineCatnipButton; x100Href: UnsafeLinkResult; update: () => void; }; export type BuildingBtnModernController<TModel extends UnsafeBuildingBtnModernModel<AllBuildingStackableBtnOptions> | unknown = unknown> = BuildingStackableBtnController<TModel> & { getMetadata: (model: TModel) => BuildingMeta<UnsafeBuilding> | null; getName: (model: TModel) => string; getPrices: (model: TModel) => Array<Price>; hasSellLink: (model: TModel) => boolean; build: (model: TModel) => void; sell: (event: unknown, model: TModel) => void; decrementValue: (model: TModel) => void; incrementValue: (model: { metadata: Metadata<TModel>; metaAccessor: unknown; }) => void; }; export type StagingBldBtnController<TModel extends UnsafeBuildingBtnModernModel<AllBuildingStackableBtnOptions> | unknown = unknown> = BuildingBtnModernController<TModel> & { stageLinks: null; fetchModel: (options: unknown) => TModel; getEffects: (model: TModel) => unknown; getTotalEffects: (model: TModel) => unknown; getStageLinks: (model: TModel) => Array<UnsafeStageLink>; downgrade: (model: TModel) => void; upgrade: (model: TModel) => void; deltagrade: (model: TModel, delta: number) => void; getMetadataRaw: (model: TModel) => BuildingMeta<UnsafeBuilding>; }; export type StagingBldBtn<TOpts extends AllBuildingStackableBtnOptions | unknown = unknown> = BuildingStackableBtn<TOpts> & { stageLinks: Array<unknown>; renderLinks: () => void; }; export type BuildingsModern = Tab<ButtonModern<UnsafeGatherCatnipButtonOptions> | RefineCatnipButton | StagingBldBtn<AllBuildingStackableBtnOptions> | BuildingStackableBtn<AllBuildingStackableBtnOptions>> & { bldGroups: Array<unknown>; activeGroup: null; new (tabName: unknown): BuildingsModern; render: (content?: HTMLElement) => void; renderActiveGroup: (groupContainer: unknown) => void; addCoreBtns: (container: unknown) => void; update: () => void; }; export type UnsafeBuilding = { calculateEffects?: (model: unknown, game: GamePage) => void; defaultUnlockable?: boolean; description?: string; effects?: Partial<Record<BuildingEffect, number>>; flavor?: string; jammed?: boolean; label?: string; name: Building; on: number; priceRatio?: number; prices?: Array<Price>; stage?: number; stages?: Array<{ calculateEffects?: (model: unknown, game: GamePage) => void; calculateEnergyProduction?: (game: GamePage, season: unknown) => void; description: string; effects?: Partial<Record<BuildingEffect, number>>; flavor?: string; label: string; priceRatio: number; prices: Array<Price>; stageUnlocked: boolean; }>; unlockRatio?: number; unlockable?: boolean; unlocked: boolean; /** * How many of these do you have? */ val: number; noStackable?: boolean; isAutomationEnabled?: boolean | null; lackResConvert?: boolean; toggleable?: boolean; }; export type UnsafeGatherCatnipButtonOptions = { name: string; controller: GatherCatnipButtonController; description: string; twoRow: boolean; }; export type UnsafeUnstagedBuildingButtonOptions<TModel extends UnsafeBuildingBtnModernModel<AllBuildingStackableBtnOptions> | unknown = unknown> = { name: string; description: string; building: Building; twoRow: boolean; controller: BuildingBtnModernController<TModel>; }; export type UnsafeRefineCatnipButtonOptions = { name: string; controller: RefineCatnipButtonController; handler: AnyFunction; description: string; prices: Array<Price>; twoRow: boolean; }; export type UnsafeStagingBldButtonOptions<TModel extends UnsafeBuildingBtnModernModel<AllBuildingStackableBtnOptions> | unknown = unknown> = { name: string; description: string; building: Building; twoRow: boolean; controller: StagingBldBtnController<TModel>; }; export type UnsafeRefineCatnipButtonModel = UnsafeButtonModernModel<{ name: string; controller: RefineCatnipButtonController; handler: (btn: unknown) => void; description: string; prices: Array<Price>; twoRow: boolean; }>; export type UnsafeStageLink = { title: string; handler: AnyFunction; enabled: boolean; }; //# sourceMappingURL=buildings.d.ts.map