All files / 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 47x 47x 47x 47x 47x 47x 47x 47x 47x 47x 47x 16x 16x 47x 47x 4x 4x 47x 47x 4x 4x 47x 1x 1x 1x 17x 16x 15x  
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";