@rbxts/flamework-tycoon
Version:
50 lines (49 loc) • 2.1 kB
TypeScript
/// <reference types="@rbxts/types" />
/// <reference types="@rbxts/compiler-types" />
import { BaseComponent, Components } from "@flamework/components";
import { IOwnerProfile, ITycoonData } from "../utility";
import { Modding, OnStart } from "@flamework/core";
import { Janitor } from "@rbxts/janitor";
import { TycoonLogger } from "./TycoonLogger";
import { TycoonService } from "./TycoonService";
import { BaseTycoonItem } from "./item/BaseTycoonItem";
import { Signal } from "@rbxts/signals-tooling";
export declare abstract class BaseTycoonComponent<A extends object = {}, I extends Model = Model, D extends ITycoonData = ITycoonData> extends BaseComponent<A, I> implements OnStart {
private logger;
private components;
private tycoonService;
readonly OnChangedData: Signal<(newData: Readonly<D>, prevData: Readonly<D>) => void>;
readonly OnClaim: Signal<(newOwner: Player) => void>;
readonly OnDisown: Signal<() => void>;
readonly OnChangedOwner: Signal<(newOwner?: Player) => void>;
readonly OnResetData: Signal<() => void>;
private container;
private owner?;
private dataContrainter;
private items;
private itemsByInstance;
protected readonly janitor: Janitor<void>;
protected abstract generateData(): D;
constructor(logger: TycoonLogger, components: Components, tycoonService: TycoonService);
onStart(): void;
private initEvents;
private findAllItemTags;
private initItems;
private setupItem;
private resetData;
private destroyItems;
private createOwnerProfile;
/** @metadata macro */
GetItem<T extends BaseTycoonItem = BaseTycoonItem>(qualifier: Instance | string, itemType?: Modding.Generic<T, "id">): T | undefined;
GetContainer(): Folder;
GetOwner(): IOwnerProfile | undefined;
VerifyOwner(player?: Player): boolean;
VerifyOwnerByCharacter(model?: Instance): boolean;
HaveOwner(): boolean;
GetData(): Readonly<D>;
Claim(owner: Player, data?: D): IOwnerProfile<ITycoonData>;
Disown(): void;
Destroy(): void;
/** @hidden */
destroy(): void;
}