All files / libs/roguelike-engine/src/screens factory.ts

100% Statements 38/38
100% Branches 6/6
100% Functions 1/1
100% Lines 38/38

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 391x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 12x 12x 12x 12x 1x 1x 12x 1x 1x 12x 1x 1x 12x 12x 9x 9x 9x 12x 12x 12x 12x 1x  
import type { DisplayInterface, ScreenInterface, World } from "@jga/games";
import { AbstractFactory } from "@jga/patterns";
import { LoseScreen } from "./lose";
import { PlayScreen } from "./play";
import { StartScreen } from "./start";
import { WinScreen } from "./win";
 
export interface ScreenFactoryCreateParamsInterface {
    type: string;
    engine: World;
    display: DisplayInterface;
}
 
export class ScreenFactory extends AbstractFactory<ScreenInterface, ScreenFactoryCreateParamsInterface> {
    // eslint-disable-next-line class-methods-use-this
    public create(params: ScreenFactoryCreateParamsInterface): ScreenInterface {
        let screen: ScreenInterface;
 
        switch (params.type) {
            case "lose":
                screen = new LoseScreen(params.engine, params.display);
                break;
            case "play":
                screen = new PlayScreen(params.engine, params.display);
                break;
            case "win":
                screen = new WinScreen(params.engine, params.display);
                break;
            case "start":
            default: {
                screen = new StartScreen(params.engine, params.display);
                break;
            }
        }
 
        return screen;
    }
}