diff options
author | Elizabeth Hunt <elizabeth@simponic.xyz> | 2025-03-02 19:11:33 -0700 |
---|---|---|
committer | Elizabeth Hunt <elizabeth@simponic.xyz> | 2025-03-02 19:11:33 -0700 |
commit | 78797aa175651d53df21d3f8d5c51a55649aaced (patch) | |
tree | cd3c5e168e069c5ac2c18514f0f69543d077ec30 /src/engine/systems/FacingDirection.ts | |
parent | 196773c3637f7dcf2a53a6cb9b3a8e8f790cce71 (diff) | |
download | the-abstraction-engine-78797aa175651d53df21d3f8d5c51a55649aaced.tar.gz the-abstraction-engine-78797aa175651d53df21d3f8d5c51a55649aaced.zip |
Diffstat (limited to 'src/engine/systems/FacingDirection.ts')
-rw-r--r-- | src/engine/systems/FacingDirection.ts | 44 |
1 files changed, 24 insertions, 20 deletions
diff --git a/src/engine/systems/FacingDirection.ts b/src/engine/systems/FacingDirection.ts index 042484a..ec73d58 100644 --- a/src/engine/systems/FacingDirection.ts +++ b/src/engine/systems/FacingDirection.ts @@ -27,34 +27,38 @@ export class FacingDirection extends System { game.forEachEntityWithComponent( ComponentNames.FacingDirection, (entity) => { - if (!entity.hasComponent(ComponentNames.BoundingBox)) { - return; - } - - const boundingBox = entity.getComponent<BoundingBox>( - ComponentNames.BoundingBox, - )!; const facingDirection = entity.getComponent<FacingDirectionComponent>( ComponentNames.FacingDirection, ); + if (!entity.hasComponent(ComponentNames.Sprite)) { + return; + } - const { center } = boundingBox; - const angle = Math.atan2( - mousePosition.y - center.y, - mousePosition.x - center.x, - ); + if (entity.hasComponent(ComponentNames.Control)) { + const boundingBox = entity.getComponent<BoundingBox>( + ComponentNames.BoundingBox, + )!; - const mouseInBoundingBox = - boundingBox.isCollidingWith(mouseBoundingBox); - const direction = mouseInBoundingBox - ? Direction.NONE - : angleToDirection(angle); + const { center } = boundingBox; + const angle = Math.atan2( + mousePosition.y - center.y, + mousePosition.x - center.x, + ); - facingDirection.setDirection(direction); - entity.addComponent(facingDirection); + const mouseInBoundingBox = + boundingBox.isCollidingWith(mouseBoundingBox); + const direction = mouseInBoundingBox + ? Direction.NONE + : angleToDirection(angle); + + facingDirection.setDirection(direction); + entity.addComponent(facingDirection); + } const oldSprite = entity.getComponent<Sprite>(ComponentNames.Sprite); - const sprite = facingDirection.directionSprites.get(direction)!; + const sprite = facingDirection.directionSprites.get( + facingDirection.currentDirection, + )!; sprite.fillTimingsFromSprite(oldSprite); entity.addComponent(sprite); |