From c1a62ba1459cf849b5ee965aa461e10695bb0b01 Mon Sep 17 00:00:00 2001 From: Kelly Rauchenberger Date: Thu, 18 Feb 2021 12:32:53 -0500 Subject: Started adding event where Claus joins the party --- src/script_system.cpp | 7 +++++-- src/transform_system.cpp | 9 +++++++++ src/transform_system.h | 2 ++ 3 files changed, 16 insertions(+), 2 deletions(-) (limited to 'src') 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) { "animFinished", &Sprite::animFinished, "getCurrentFrame", [] (const Sprite& sprite) -> const SpriteFrame& { return sprite.frames[sprite.animations[sprite.animationId].frameIndices[sprite.animationFrame]]; - }); + }, + "persistent", &Sprite::persistent); engine_.new_usertype( "message", @@ -54,6 +55,7 @@ ScriptSystem::ScriptSystem(Game& game) : game_(game) { engine_.new_usertype( "character", + "addSpriteToParty", &CharacterSystem::addSpriteToParty, "transplantParty", &CharacterSystem::transplantParty, "startRunning", &CharacterSystem::startRunning, "halt", &CharacterSystem::halt); @@ -62,7 +64,8 @@ ScriptSystem::ScriptSystem(Game& game) : game_(game) { "transform", "initSprite", [] (TransformSystem& transform, int spriteId, int x, int y, SpriteLayer layer) { transform.initSprite(spriteId, vec2i{x, y}, layer); - }); + }, + "undoCollision", &TransformSystem::undoCollision); engine_.new_usertype( "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 addCollidable(spriteId); } +void TransformSystem::undoCollision(int spriteId) { + Sprite& sprite = game_.getSprite(spriteId); + + sprite.collidable = false; + sprite.solid = false; + + removeCollidable(spriteId); +} + void TransformSystem::moveSprite(int spriteId, vec2i newLoc) { Sprite& sprite = game_.getSprite(spriteId); 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: void setUpCollision(int spriteId, vec2i offset, vec2i size, bool solid); + void undoCollision(int spriteId); + void moveSprite(int spriteId, vec2i newLoc); auto getSpritesByY(SpriteLayer layer) const { -- cgit 1.4.1