diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/script_system.cpp | 7 | ||||
| -rw-r--r-- | src/transform_system.cpp | 9 | ||||
| -rw-r--r-- | src/transform_system.h | 2 |
3 files changed, 16 insertions, 2 deletions
| diff --git a/src/script_system.cpp b/src/script_system.cpp index 090bf46..d4ee0ce 100644 --- a/src/script_system.cpp +++ b/src/script_system.cpp | |||
| @@ -35,7 +35,8 @@ ScriptSystem::ScriptSystem(Game& game) : game_(game) { | |||
| 35 | "animFinished", &Sprite::animFinished, | 35 | "animFinished", &Sprite::animFinished, |
| 36 | "getCurrentFrame", [] (const Sprite& sprite) -> const SpriteFrame& { | 36 | "getCurrentFrame", [] (const Sprite& sprite) -> const SpriteFrame& { |
| 37 | return sprite.frames[sprite.animations[sprite.animationId].frameIndices[sprite.animationFrame]]; | 37 | return sprite.frames[sprite.animations[sprite.animationId].frameIndices[sprite.animationFrame]]; |
| 38 | }); | 38 | }, |
| 39 | "persistent", &Sprite::persistent); | ||
| 39 | 40 | ||
| 40 | engine_.new_usertype<MessageSystem>( | 41 | engine_.new_usertype<MessageSystem>( |
| 41 | "message", | 42 | "message", |
| @@ -54,6 +55,7 @@ ScriptSystem::ScriptSystem(Game& game) : game_(game) { | |||
| 54 | 55 | ||
| 55 | engine_.new_usertype<CharacterSystem>( | 56 | engine_.new_usertype<CharacterSystem>( |
| 56 | "character", | 57 | "character", |
| 58 | "addSpriteToParty", &CharacterSystem::addSpriteToParty, | ||
| 57 | "transplantParty", &CharacterSystem::transplantParty, | 59 | "transplantParty", &CharacterSystem::transplantParty, |
| 58 | "startRunning", &CharacterSystem::startRunning, | 60 | "startRunning", &CharacterSystem::startRunning, |
| 59 | "halt", &CharacterSystem::halt); | 61 | "halt", &CharacterSystem::halt); |
| @@ -62,7 +64,8 @@ ScriptSystem::ScriptSystem(Game& game) : game_(game) { | |||
| 62 | "transform", | 64 | "transform", |
| 63 | "initSprite", [] (TransformSystem& transform, int spriteId, int x, int y, SpriteLayer layer) { | 65 | "initSprite", [] (TransformSystem& transform, int spriteId, int x, int y, SpriteLayer layer) { |
| 64 | transform.initSprite(spriteId, vec2i{x, y}, layer); | 66 | transform.initSprite(spriteId, vec2i{x, y}, layer); |
| 65 | }); | 67 | }, |
| 68 | "undoCollision", &TransformSystem::undoCollision); | ||
| 66 | 69 | ||
| 67 | engine_.new_usertype<EffectSystem>( | 70 | engine_.new_usertype<EffectSystem>( |
| 68 | "effect", | 71 | "effect", |
| diff --git a/src/transform_system.cpp b/src/transform_system.cpp index 144477b..1d4a9f3 100644 --- a/src/transform_system.cpp +++ b/src/transform_system.cpp | |||
| @@ -19,6 +19,15 @@ void TransformSystem::setUpCollision(int spriteId, vec2i offset, vec2i size, boo | |||
| 19 | addCollidable(spriteId); | 19 | addCollidable(spriteId); |
| 20 | } | 20 | } |
| 21 | 21 | ||
| 22 | void TransformSystem::undoCollision(int spriteId) { | ||
| 23 | Sprite& sprite = game_.getSprite(spriteId); | ||
| 24 | |||
| 25 | sprite.collidable = false; | ||
| 26 | sprite.solid = false; | ||
| 27 | |||
| 28 | removeCollidable(spriteId); | ||
| 29 | } | ||
| 30 | |||
| 22 | void TransformSystem::moveSprite(int spriteId, vec2i newLoc) { | 31 | void TransformSystem::moveSprite(int spriteId, vec2i newLoc) { |
| 23 | Sprite& sprite = game_.getSprite(spriteId); | 32 | Sprite& sprite = game_.getSprite(spriteId); |
| 24 | if (sprite.collidable) { | 33 | if (sprite.collidable) { |
| diff --git a/src/transform_system.h b/src/transform_system.h index 4ee481e..d894b30 100644 --- a/src/transform_system.h +++ b/src/transform_system.h | |||
| @@ -35,6 +35,8 @@ public: | |||
| 35 | 35 | ||
| 36 | void setUpCollision(int spriteId, vec2i offset, vec2i size, bool solid); | 36 | void setUpCollision(int spriteId, vec2i offset, vec2i size, bool solid); |
| 37 | 37 | ||
| 38 | void undoCollision(int spriteId); | ||
| 39 | |||
| 38 | void moveSprite(int spriteId, vec2i newLoc); | 40 | void moveSprite(int spriteId, vec2i newLoc); |
| 39 | 41 | ||
| 40 | auto getSpritesByY(SpriteLayer layer) const { | 42 | auto getSpritesByY(SpriteLayer layer) const { |
