All files / 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 13x 13x 13x 13x 13x 13x 13x 13x 13x 13x 13x 13x 13x 13x 13x 13x 13x 13x 7x 7x 13x 13x 2x 2x 13x 13x 11x 11x 13x 13x 1x 1x 13x 13x 1x 1x 13x 13x 1x 1x 13x  
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;
    }
}