UNPKG

@civ-clone/core-science

Version:

The basics of having the concept of research. Includes `Advance`s and associated `Registry`s and the `PlayerResearch` class to manage a `Player`s research projects and progress towards it.

46 lines (45 loc) 1.39 kB
import { AdvanceRegistry } from './AdvanceRegistry'; import { DataObject, IDataObject, } from '@civ-clone/core-data-object/DataObject'; import { RuleRegistry } from '@civ-clone/core-rule/RuleRegistry'; import Advance from './Advance'; import Player from '@civ-clone/core-player/Player'; import { Research } from './Yields'; export interface IPlayerResearch extends IDataObject { add(researchYield: Research): void; addAdvance(CompleteAdvance: typeof Advance): void; available(): typeof Advance[]; check(): void; complete(): Advance[]; completed(CompleteAdvance: typeof Advance): boolean; cost(): Research; player(): Player; progress(): Research; research(AdvanceToResearch: typeof Advance): void; researching(): typeof Advance | null; } export declare class PlayerResearch extends DataObject implements IPlayerResearch { #private; constructor( player: Player, advanceRegistry?: AdvanceRegistry, rulesRegistry?: RuleRegistry ); add(researchYield: Research): void; addAdvance(CompleteAdvance: typeof Advance): void; available(): typeof Advance[]; check(): void; complete(): Advance[]; completed(CompleteAdvance: typeof Advance): boolean; cost(): Research; player(): Player; progress(): Research; research(AdvanceToResearch: typeof Advance): void; researching(): typeof Advance | null; } export default PlayerResearch;