diff options
Diffstat (limited to 'src/input_system.cpp')
| -rw-r--r-- | src/input_system.cpp | 18 |
1 files changed, 5 insertions, 13 deletions
| diff --git a/src/input_system.cpp b/src/input_system.cpp index 38423a2..c399e91 100644 --- a/src/input_system.cpp +++ b/src/input_system.cpp | |||
| @@ -87,25 +87,17 @@ void InputSystem::tick(double dt) { | |||
| 87 | vec2i checkLoc = sprite.loc + (unitVecInDirection(sprite.dir) * LUCAS_MOVEMENT_SPEED); | 87 | vec2i checkLoc = sprite.loc + (unitVecInDirection(sprite.dir) * LUCAS_MOVEMENT_SPEED); |
| 88 | CollisionResult collision = game_.getSystem<TransformSystem>().checkCollision(spriteId, sprite.loc, checkLoc, sprite.dir); | 88 | CollisionResult collision = game_.getSystem<TransformSystem>().checkCollision(spriteId, sprite.loc, checkLoc, sprite.dir); |
| 89 | 89 | ||
| 90 | if (collision.horiz.blocked || collision.vert.blocked) { | 90 | if (collision.blocked) { |
| 91 | inFrontOfSomething = true; | 91 | inFrontOfSomething = true; |
| 92 | } | 92 | } |
| 93 | 93 | ||
| 94 | // If there is a sprite to be interacted with, rotate that sprite so it is facing the player. | 94 | // If there is a sprite to be interacted with, rotate that sprite so it is facing the player. |
| 95 | // Then, run its interaction script if present. | 95 | // Then, run its interaction script if present. |
| 96 | if (collision.horiz.colliderSprite != -1) { | 96 | for (int colliderSpriteId : collision.colliders) { |
| 97 | game_.getSystem<AnimationSystem>().setSpriteDirection(collision.horiz.colliderSprite, oppositeDirection(sprite.dir)); | 97 | game_.getSystem<AnimationSystem>().setSpriteDirection(colliderSpriteId, oppositeDirection(sprite.dir)); |
| 98 | 98 | ||
| 99 | Sprite& collider = game_.getSprite(collision.horiz.colliderSprite); | 99 | Sprite& collider = game_.getSprite(colliderSpriteId); |
| 100 | if (collider.interactionScript != "") { | 100 | if (!collider.interactionScript.empty()) { |
| 101 | game_.getSystem<ScriptSystem>().runScript(game_.getMap().getName(), collider.interactionScript); | ||
| 102 | activated = true; | ||
| 103 | } | ||
| 104 | } else if (collision.vert.colliderSprite != -1) { | ||
| 105 | game_.getSystem<AnimationSystem>().setSpriteDirection(collision.vert.colliderSprite, oppositeDirection(sprite.dir)); | ||
| 106 | |||
| 107 | Sprite& collider = game_.getSprite(collision.vert.colliderSprite); | ||
| 108 | if (collider.interactionScript != "") { | ||
| 109 | game_.getSystem<ScriptSystem>().runScript(game_.getMap().getName(), collider.interactionScript); | 101 | game_.getSystem<ScriptSystem>().runScript(game_.getMap().getName(), collider.interactionScript); |
| 110 | activated = true; | 102 | activated = true; |
| 111 | } | 103 | } |
