import { Player, TutorialDescription } from '@gamepark/react-client'; import { LocationBuilder, Material, MaterialGame, MaterialGameSetup, MaterialMove, MaterialMoveRandomized, MaterialRules, XYCoordinates } from '@gamepark/rules-api'; import { TFunction } from 'i18next'; import { ReactNode } from 'react'; import { MaterialContext } from '../../locators'; import { MaterialFocus } from '../material'; export declare abstract class MaterialTutorial
implements TutorialDescription > {
abstract options: any;
abstract setup: MaterialGameSetup ;
abstract steps: TutorialStep [];
abstract players: Player [];
material(game: MaterialGame , type: M): Material ;
location(type: L): LocationBuilder ;
setupTutorial(): [MaterialGame , Player []];
getNextMove(rules: MaterialRules ): MaterialMove | undefined;
}
export declare enum TutorialStepType {
Popup = 1,
Move = 2
}
export type TutorialStepBase = {
zoom?: number;
};
export type TutorialStep = {
popup?: TutorialPopup;
focus?: (game: MaterialGame , context: MaterialContext ) => Partial , game: MaterialGame ) => boolean;
randomize?: (move: MaterialMoveRandomized) => void;
interrupt?: (move: MaterialMove) => boolean;
auto?: boolean;
};
};
export type TutorialPopup = {
text: (t: TFunction, game: MaterialGame) => string | ReactNode;
position?: Partial (tutorialDescription?: TutorialDescription ;