UNPKG

@rbxts/flamework-tycoon

Version:
72 lines (71 loc) 3 kB
/// <reference types="@rbxts/compiler-types" /> /// <reference types="@rbxts/compiler-types" /> /// <reference types="@rbxts/types" /> /// <reference types="@rbxts/compiler-types" /> import { Modding, OnStart } from "@flamework/core"; import { BaseComponent, Components } from "@flamework/components"; import { TycoonService } from "../TycoonService"; import { BaseTycoonComponent } from "../BaseTycoonComponent"; import { TycoonLogger } from "../TycoonLogger"; import { Constructor } from "@flamework/components/out/utility"; import { AbstractConstructor } from "@flamework/core/out/utility"; type InferBaseTycoonGenerics<T extends BaseTycoonItem<any, any, any>> = T extends BaseTycoonItem<infer A, infer I, infer D> ? [A, I, D] : never; type AttrubutesGuard<T extends BaseTycoonItem<any, any, any>> = Required<{ [K in keyof InferBaseTycoonGenerics<T>[0]]: Modding.Generic<InferBaseTycoonGenerics<T>[0][K], "guard">; }>; export interface TycoonItemConfig { tag?: string; } export interface TycoonItemMetadata<T extends BaseTycoonItem = BaseTycoonItem> { AttributesGuard: AttrubutesGuard<T>; InstanceGuard: Modding.Generic<InferBaseTycoonGenerics<T>[1], "guard">; DataGuard: Modding.Generic<InferBaseTycoonGenerics<T>[2], "guard">; } export declare const DecoratedTycoonItems: Set<Constructor<BaseTycoonItem<any, any, any>>>; /** * Register a class as a tycoon item. * * @metadata reflect identifier flamework:implements flamework:parameters injectable macro */ export declare const TycoonItem: <T extends BaseTycoonItem<{}, Instance, {}>>(config?: TycoonItemConfig, metadata?: Modding.Many<TycoonItemMetadata<T>>) => (ctor: AbstractConstructor<T>) => void; interface Attributes { Id?: string; } export declare abstract class BaseTycoonItem<A extends Attributes = {}, I extends Instance = Instance, D extends {} = {}> extends BaseComponent<A, I> implements OnStart { readonly TycoonService: TycoonService; private logger; private components; private _tycoon; private __janitor; private isLocked; private baseParent; private id; private isDestroyed; private dataGuard; constructor(TycoonService: TycoonService, logger: TycoonLogger, components: Components); onStart(): void; onSetup(): void; protected GetTycoon(): BaseTycoonComponent<{}, Model, import("../../utility").ITycoonData>; private initEvents; private validateData; private initLockState; private haveLockTag; private initId; protected mutateData(newData: D): void; private clearData; protected abstract generateData(): D; GetId(): string; GetData(): D; TryGetData(): D | undefined; IsLocked(): boolean; protected onAppear(): Promise<void>; protected onDisappear(): Promise<void>; protected onDestroyed(): void; Disappear(): void; Appear(): void; protected setParentWhenUnlocked(): void; protected setParentWhenLocked(): void; /** @hidden */ destroy(): void; } export {};