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

100% Statements 41/41
100% Branches 5/5
100% Functions 1/1
100% Lines 41/41

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 39 40 41 421x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 12x 12x 12x 12x 1x 1x 1x 12x 1x 1x 1x 12x 1x 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 ScreenFactoryCreateParametersInterface {
    type: string;
    engine: World;
    display: DisplayInterface;
}
 
export class ScreenFactory extends AbstractFactory<ScreenInterface, ScreenFactoryCreateParametersInterface> {
    // eslint-disable-next-line class-methods-use-this
    public create(parameters: ScreenFactoryCreateParametersInterface): ScreenInterface {
        let screen: ScreenInterface;
 
        switch (parameters.type) {
            case "lose": {
                screen = new LoseScreen(parameters.engine, parameters.display);
                break;
            }
            case "play": {
                screen = new PlayScreen(parameters.engine, parameters.display);
                break;
            }
            case "win": {
                screen = new WinScreen(parameters.engine, parameters.display);
                break;
            }
            // case "start":
            default: {
                screen = new StartScreen(parameters.engine, parameters.display);
                break;
            }
        }
 
        return screen;
    }
}