@kitten-science/kitten-scientists
Version:
Add-on for the wonderful incremental browser game: https://kittensgame.com/web/
305 lines • 11.6 kB
TypeScript
import type { AnyFunction } from "@oliversalzburg/js-utils/core.js";
import type { BuildingStackableBtn, BuildingStackableBtnController, ButtonModern, ButtonModernController, IChildrenAware, IGameAware, Panel, Tab, TabManager, UnsafeBuildingStackableBtnModel, UnsafeButtonModernModel } from "./core.js";
import type { GamePage } from "./game.js";
import type { BuildingEffect, BuyItemResultReason, ChronoForgeUpgrade, Link, Price, QueueElementType, QueueElementTypeMap, Unlocks, UnsafeBuyItemResult, UnsafeMeta, VoidSpaceUpgrade } from "./index.js";
export type TimeManager = TabManager<UnsafeMeta<UnsafeChronoForgeUpgrade> | UnsafeMeta<UnsafeVoidSpaceUpgrade>> & {
meta: [UnsafeMeta<UnsafeChronoForgeUpgrade>, UnsafeMeta<UnsafeVoidSpaceUpgrade>];
game: GamePage;
/**
* 0 is current function call, 1 is shatterInGroupCycles, 2 is shatterInCycles (deprecated)
*/
testShatter: number;
flux: number;
/**
* should not be visible to player other than on time tab
*/
heat: number;
isAccelerated: boolean;
timestamp: null;
queue: Manager;
new (game: GamePage): TimeManager;
save: (saveData: unknown) => void;
_forceChronoFurnaceStop: (cfuSave: Array<unknown>) => void;
load: (saveData: unknown) => void;
gainTemporalFlux: (timestamp: number) => void;
resetState: () => void;
update: () => void;
updateQueue: () => void;
applyRedshift: (daysOffset: number, ignoreCalendar: boolean) => number;
calculateRedshift: () => void;
chronoforgeUpgrades: Array<UnsafeChronoForgeUpgrade>;
voidspaceUpgrades: Array<UnsafeVoidSpaceUpgrade>;
effectsBase: {
heatPerTick: number;
heatMax: number;
temporalFluxMax: number;
};
getCFU: (id: ChronoForgeUpgrade) => Required<UnsafeChronoForgeUpgrade>;
getVSU: (id: VoidSpaceUpgrade) => Required<UnsafeVoidSpaceUpgrade>;
shatter: (amt: number) => void;
shatterInCycles: (amt: number) => void;
shatterInGroupCycles: (amt: number) => void;
compareShatterTime: (shatters: number, times: number, ignoreOldFunction: boolean, ignoreShatterInCycles: boolean, ignoreGroupCycles: boolean) => void;
unlockAll: () => void;
};
export type AccelerateTimeBtnController = ButtonModernController & {
fetchModel: (options: unknown) => ReturnType<ButtonModernController["fetchModel"]> & {
toggle: {
title: string;
tooltip: string;
cssClass: string;
handler: () => void;
};
};
buyItem: (model: unknown, event: unknown) => UnsafeBuyItemResult;
};
export type AccelerateTimeBtn = ButtonModern<UnsafeAccelerateTimeButtonOptions> & {
renderLinks: () => void;
toggle?: Link;
update: () => void;
};
export type TimeControlWgt = IChildrenAware<AccelerateTimeBtn> & IGameAware & {
new (game: GamePage): TimeControlWgt;
render: (container?: HTMLElement) => void;
update: () => void;
};
export type ShatterTCBtnController = ButtonModernController<UnsafeShatterTCBtnModel> & {
defaults: () => ReturnType<ButtonModernController["defaults"]> & {
hasResourceHover: boolean;
};
fetchModel: (options: unknown) => UnsafeShatterTCBtnModel;
_newLink: (model: UnsafeShatterTCBtnModel) => Link;
getName: (model: UnsafeShatterTCBtnModel) => string;
getPrices: (model: UnsafeShatterTCBtnModel) => Array<Price>;
getPricesMultiple: (model: UnsafeShatterTCBtnModel, amt: number) => {
void: number;
timeCrystal: number;
};
buyItem: (model: UnsafeShatterTCBtnModel, event: unknown) => UnsafeBuyItemResult;
doShatterAmt: (model: UnsafeShatterTCBtnModel, amt: number) => void;
doShatter: (model: unknown, amt: number) => void;
updateVisible: (model: UnsafeShatterTCBtnModel) => void;
};
export type ShatterTCBtn = ButtonModern<{
name: string;
description: string;
prices: Array<Price>;
controller: ShatterTCBtnController;
}> & {
renderLinks: () => void;
tenEras?: Link;
previousCycle?: Link;
nextCycle?: Link;
custom?: Link;
update: () => void;
};
export type ChronoforgeBtnController<TModel extends UnsafeBuildingStackableBtnModel<UnsafeChronoforgeUpgradeButtonOptions> = UnsafeBuildingStackableBtnModel<UnsafeChronoforgeUpgradeButtonOptions>> = BuildingStackableBtnController<TModel> & {
getMetadata: (model: TModel) => UnsafeChronoForgeUpgrade;
getName: (model: TModel) => string;
handleToggleAutomationLinkClick: (model: TModel) => void;
};
export type ChronoforgeWgt = IChildrenAware<ShatterTCBtn | BuildingStackableBtn<UnsafeChronoforgeUpgradeButtonOptions>> & IGameAware & {
new (game: GamePage): ChronoforgeWgt;
render: (container?: HTMLElement) => void;
update: () => void;
};
export type VoidSpaceBtnController<TModel extends UnsafeBuildingStackableBtnModel<UnsafeVoidSpaceUpgradeButtonOptions> = UnsafeBuildingStackableBtnModel<UnsafeVoidSpaceUpgradeButtonOptions>> = BuildingStackableBtnController<TModel> & {
getMetadata: (model: TModel) => UnsafeVoidSpaceUpgrade;
getName: (model: TModel) => string;
getPrices: (model: TModel) => Array<Price>;
};
export type FixCryochamberBtnController = ButtonModernController<UnsafeFixCryochamberBtnModel> & {
defaults: () => UnsafeFixCryochamberBtnModel;
buyItem: (model: UnsafeFixCryochamberBtnModel, event: Event) => UnsafeBuyItemResult;
doFixCryochamber: (model: UnsafeFixCryochamberBtnModel) => boolean;
updateVisible: (model: UnsafeFixCryochamberBtnModel) => void;
getDescription: (model: unknown) => string;
getPrices: (model: UnsafeFixCryochamberBtnModel) => Array<Price>;
};
export type VoidSpaceWgt = IChildrenAware<ButtonModern<UnsafeFixCryochamberButtonOptions> | BuildingStackableBtn<UnsafeVoidSpaceUpgradeButtonOptions>> & IGameAware & {
new (game: GamePage): VoidSpaceWgt;
render: (container?: HTMLElement) => void;
update: () => void;
};
export type ResetWgt = IChildrenAware<ButtonModern<{
name: string;
description: string;
prices: Array<Price>;
handler: AnyFunction;
controller: ButtonModernController;
}>> & IGameAware & {
new (game: GamePage): ResetWgt;
render: (container?: HTMLElement) => void;
update: () => void;
};
export type TimeTab = Tab<Panel<TimeControlWgt> | Panel<ResetWgt> | Panel<ChronoforgeWgt> | Panel<VoidSpaceWgt>> & {
container: null;
new (tabName: unknown): TimeTab;
resetPanel: Panel;
/**
* Chronoforge panel.
*/
cfPanel: Panel<ChronoforgeWgt>;
/**
* Void space panel
*/
vsPanel: Panel<VoidSpaceWgt>;
render: (content?: HTMLElement) => void;
update: () => void;
};
export type Manager = {
game: GamePage;
alphabeticalSort: boolean;
queueItems: Array<unknown>;
toggleAlphabeticalSort: () => void;
getFirstItemEtaDay: () => [number, boolean];
updateQueueSourcesArr: () => void;
queueLabels: Record<string, string>;
queueSourcesArr: Array<{
name: string;
label: string;
}>;
queueSourcesDefault: Record<string, boolean>;
queueSources: Record<string, unknown>;
queueNonStackable: Array<string>;
unlockQueueSource: () => void;
cap: number;
baseCap: number;
new (game: GamePage): Manager;
resetState: () => void;
calculateCap: () => number;
queueLength: () => number;
addToQueue: (name: string, type: unknown, label: string, shiftKey: boolean) => void;
remove: (index: number, amt: number) => boolean;
pushBack: (index: number) => boolean;
pushFront: (index: number) => boolean;
getQueueOptions: (type: unknown) => unknown;
getQueueOptionsAlphabetical: (type: unknown) => unknown;
getQueueOptionsUnsorted: (type: unknown) => unknown;
dropLastItem: () => void;
listDrop: (event: unknown) => void;
getQueueElementModel: (el: unknown) => unknown;
getQueueElementControllerAndModel: <TType extends QueueElementType>(el: {
name: unknown;
type: TType;
}) => QueueElementTypeMap[TType];
update: () => void;
_isReasonToSkipItem: (reason: BuyItemResultReason) => boolean;
onDeltagrade: (itemName: string) => void;
};
export type QueueTab = Tab & {};
export type UnsafeChronoForgeUpgrade = {
name: ChronoForgeUpgrade;
/**
* An internationalized label for this time upgrade.
*/
label: string;
/**
* An internationalized description for this space building.
*/
description: string;
prices: Array<Price>;
effects: Partial<Record<BuildingEffect, number>>;
priceRatio: number;
unlocked: boolean;
heat?: number;
action?: (self: UnsafeChronoForgeUpgrade, game: GamePage) => void;
unlocks?: Partial<Unlocks>;
calculateEffects?: (self: UnsafeChronoForgeUpgrade, game: GamePage) => void;
updateEffects?: (self: UnsafeChronoForgeUpgrade, game: unknown) => void;
/**
* This flag is set by KS itself to "hide" a given build from being
* processed in the BulkManager. This is likely not ideal and will
* be refactored later.
*/
tHidden?: boolean;
val?: number;
on?: number;
noStackable?: boolean;
isAutomationEnabled?: boolean | null;
lackResConvert?: boolean;
toggleable?: boolean;
};
export type UnsafeVoidSpaceUpgrade = {
name: VoidSpaceUpgrade;
/**
* An internationalized label for this time upgrade.
*/
label: string;
/**
* An internationalized description for this space building.
*/
description: string;
prices: Array<Price>;
priceRatio: number;
limitBuild?: 0;
breakIronWill?: boolean;
fixPrices?: Array<Price>;
unlocked: boolean;
flavor?: string;
effects: Partial<Record<BuildingEffect, number>>;
upgrades?: {
voidSpace: Array<"cryochambers">;
};
unlockScheme?: {
name: "arctic" | "dune" | "fluid" | "space" | "vessel";
threshold: number;
};
/**
* This flag is set by KS itself to "hide" a given build from being
* processed in the BulkManager. This is likely not ideal and will
* be refactored later.
*/
tHidden?: boolean;
val?: number;
on?: number;
noStackable?: boolean;
isAutomationEnabled?: boolean | null;
lackResConvert?: boolean;
toggleable?: boolean;
};
export type UnsafeFixCryochamberButtonOptions = {
name: string;
description: string;
controller: FixCryochamberBtnController;
};
export type UnsafeResetButtonOptions = {
name: string;
description: string;
prices: Array<Price>;
handler: AnyFunction;
controller: ButtonModernController;
};
export type UnsafeShatterTCButtonOptions = {
name: string;
description: string;
prices: Array<Price>;
controller: ShatterTCBtnController;
};
export type UnsafeChronoforgeUpgradeButtonOptions = {
id: ChronoForgeUpgrade;
controller: ChronoforgeBtnController;
};
export type UnsafeVoidSpaceUpgradeButtonOptions = {
id: VoidSpaceUpgrade;
controller: VoidSpaceBtnController;
};
export type UnsafeAccelerateTimeButtonOptions = {
name: string;
description: string;
prices: Array<Price>;
controller: AccelerateTimeBtnController;
};
export type UnsafeShatterTCBtnModel = UnsafeButtonModernModel & {
nextCycleLink: Link;
previousCycleLink: Link;
tenErasLink: Link;
customLink?: Link;
};
export type UnsafeFixCryochamberBtnModel = UnsafeButtonModernModel<{
name: string;
description: string;
}> & {
hasResourceHover: boolean;
};
//# sourceMappingURL=time.d.ts.map