import { Entity, EntityNames, makeLambdaTermHighlightComponent } from "."; import { BoundingBox, Colliding, Grid, Sprite } from "../components"; import { IMAGES, SPRITE_SPECS, SpriteSpec, Sprites } from "../config"; import { Coord2D } from "../interfaces"; export class Sign extends Entity { private static spriteSpec: SpriteSpec = SPRITE_SPECS.get( Sprites.SIGN ) as SpriteSpec; private text: string; constructor(text: string, gridPosition: Coord2D) { super(EntityNames.Sign); this.text = text; const dimension = { width: Sign.spriteSpec.width, height: Sign.spriteSpec.height, }; this.addComponent( new Sprite( IMAGES.get(Sign.spriteSpec.sheet)!, { x: 0, y: 0 }, dimension, Sign.spriteSpec.msPerFrame, Sign.spriteSpec.frames ) ); this.addComponent( new BoundingBox( { x: 0, y: 0, }, dimension, 0 ) ); this.addComponent(new Grid(gridPosition)); this.addComponent(new Colliding()); this.addComponent(makeLambdaTermHighlightComponent(this, this.text)); } }