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 48x 48x 48x 48x 48x 48x 48x 48x 48x 48x 48x 17x 17x 48x 48x 5x 5x 48x 48x 5x 5x 48x 1x 1x 1x 18x 17x 16x  
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";