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 44x 44x 44x 44x 44x 44x 44x 44x 44x 44x 44x 13x 13x 44x 44x 1x 1x 44x 44x 1x 1x 44x 1x 1x 1x 14x 13x 12x  
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";