All files / libs/games/src/engine/components spread.ts

100% Statements 33/33
100% Branches 8/8
100% Functions 6/6
100% Lines 33/33

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 341x 1x 1x 1x 1x 45x 45x 45x 45x 45x 45x 45x 45x 45x 45x 45x 14x 14x 45x 45x 2x 2x 45x 45x 2x 2x 45x 1x 1x 1x 15x 14x 13x  
import { Component } from "@jga/patterns";
 
import { ComponentName } from "./enum";
 
export class SpreadComponent extends Component {
    private readonly spreadedName: string;
 
    private growth: number;
 
    public constructor(spreadedName: string, growth = 5) {
        super(ComponentName.SPREAD);
        this.spreadedName = spreadedName;
        this.growth = growth;
    }
 
    public getRemainingGrowth(): number {
        return this.growth;
    }
 
    public getSpreadedName(): string {
        return this.spreadedName;
    }
 
    public spread(): void {
        this.growth -= 1;
    }
}
 
// eslint-disable-next-line @typescript-eslint/no-explicit-any
export const isSpreadComponent = (value: any): value is SpreadComponent =>
    typeof value.getRemainingGrowth === "function" &&
    typeof value.getSpreadedName === "function" &&
    typeof value.spread === "function";