All files / projects-dev/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 46x 46x 46x 46x 46x 46x 46x 46x 46x 46x 46x 15x 15x 46x 46x 3x 3x 46x 46x 3x 3x 46x 1x 1x 1x 16x 15x 14x  
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";