All files / libs/games/src/display display.ts

100% Statements 56/56
100% Branches 8/8
100% Functions 8/8
100% Lines 56/56

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 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 571x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 7x 7x 7x 7x 7x 7x 7x 7x 7x 7x 7x 7x 7x 7x 7x 7x 7x 7x 1x 1x 7x 7x 2x 2x 7x 7x 1x 1x 7x 7x 1x 1x 7x 7x 1x 1x 7x 7x 1x 1x 7x  
import * as ROT from "rot-js";
 
import { GlyphInterface } from "../glyphs/index";
import { PositionInterface } from "../maps/index";
 
export interface DisplayInterface {
    clear(): void;
    draw(position: PositionInterface, glyph: GlyphInterface): void;
    drawText(position: PositionInterface, text: string): number;
    getContainer(): HTMLElement | null;
    getHeight(): number;
    getWidth(): number;
}
 
export class Display implements DisplayInterface {
    protected height: number;
 
    protected width: number;
 
    private readonly display: ROT.Display;
 
    public constructor(height: number, width: number) {
        this.height = height;
        this.width = width;
 
        this.display = new ROT.Display({
            forceSquareRatio: true,
            height: this.height,
            width: this.width,
        });
    }
 
    public clear(): void {
        return this.display.clear();
    }
 
    public draw(position: PositionInterface, glyph: GlyphInterface): void {
        return this.display.draw(position.x, position.y, glyph.getChar(), glyph.getForeground(), glyph.getBackground());
    }
 
    public drawText(position: PositionInterface, text: string): number {
        return this.display.drawText(position.x, position.y, text);
    }
 
    public getContainer(): HTMLElement | null {
        return this.display.getContainer();
    }
 
    public getHeight(): number {
        return this.height;
    }
 
    public getWidth(): number {
        return this.width;
    }
}