All files / projects-dev/libs/games/src/engine/systems position.ts

100% Statements 30/30
100% Branches 5/5
100% Functions 4/4
100% Lines 30/30

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 311x 1x 1x 1x 1x 1x 1x 1x 3x 3x 3x 3x 3x 3x 3x 3x 3x 1x 1x 3x 3x 1x 1x 1x 1x 1x 1x 1x 1x 3x  
import { PositionInterface } from "../../maps/index";
 
import { ComponentName, isPositionComponent } from "../components";
 
import { Entity } from "../entities";
import { System } from "./system";
 
export class PositionSystem extends System {
    protected position: PositionInterface;
 
    public constructor(entities: Map<string, Entity>, position: PositionInterface) {
        super(entities, [ComponentName.POSITION]);
 
        this.position = position;
    }
 
    public getPosition(): PositionInterface {
        return this.position;
    }
 
    public run(): void {
        return this.entities.forEach((entity): void => {
            const positionComponent = entity.getComponent(ComponentName.POSITION);
 
            if (isPositionComponent(positionComponent)) {
                positionComponent.setPosition(this.position);
            }
        });
    }
}