From b1844bd2c278d7d3c1679f99b534548df031a5fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ji=C5=99=C3=AD=20Pale=C4=8Dek?= Date: Wed, 2 Aug 2023 21:40:12 +0200 Subject: [PATCH] Add a flip-action option for sprite actions (#2558) This PR adds a "flip-action" option for sprite actions. It's a vertical version of the existing "mirror-action", which is used to remove the need for sprite images to be stored twice, once for each direction. This does the same for up and down. As a result, UP images were removed for ispy, and replaced with flip-actions of down. --- .../creatures/crystallo/rcrystallo.sprite | 46 +++++---- data/images/creatures/dart/dart.sprite | 6 +- .../images/creatures/darttrap/darttrap.sprite | 17 ++-- data/images/objects/ispy/i-hiding-up.png | Bin 6090 -> 0 bytes data/images/objects/ispy/i-idle-up.png | Bin 10239 -> 0 bytes data/images/objects/ispy/i-shaking-up.png | Bin 10178 -> 0 bytes data/images/objects/ispy/i-shaking2-up.png | Bin 10241 -> 0 bytes data/images/objects/ispy/i-shaking3-up.png | Bin 10240 -> 0 bytes data/images/objects/ispy/i-showing1-up.png | Bin 6700 -> 0 bytes data/images/objects/ispy/i-showing2-up.png | Bin 8120 -> 0 bytes data/images/objects/ispy/i-showing3-up.png | Bin 10515 -> 0 bytes data/images/objects/ispy/ispy.sprite | 49 +--------- src/badguy/badguy.hpp | 5 - src/badguy/dart.cpp | 17 ++-- src/badguy/dart.hpp | 5 +- src/badguy/darttrap.cpp | 28 +++--- src/badguy/darttrap.hpp | 1 - src/badguy/rcrystallo.cpp | 1 - src/scripting/badguy.cpp | 2 +- src/sprite/sprite_data.cpp | 91 +++++++++++++++--- 20 files changed, 145 insertions(+), 123 deletions(-) delete mode 100644 data/images/objects/ispy/i-hiding-up.png delete mode 100644 data/images/objects/ispy/i-idle-up.png delete mode 100644 data/images/objects/ispy/i-shaking-up.png delete mode 100644 data/images/objects/ispy/i-shaking2-up.png delete mode 100644 data/images/objects/ispy/i-shaking3-up.png delete mode 100644 data/images/objects/ispy/i-showing1-up.png delete mode 100644 data/images/objects/ispy/i-showing2-up.png delete mode 100644 data/images/objects/ispy/i-showing3-up.png diff --git a/data/images/creatures/crystallo/rcrystallo.sprite b/data/images/creatures/crystallo/rcrystallo.sprite index 8699cb00242..48d15c5f6f0 100644 --- a/data/images/creatures/crystallo/rcrystallo.sprite +++ b/data/images/creatures/crystallo/rcrystallo.sprite @@ -1,6 +1,6 @@ (supertux-sprite (action - (name "left") + (name "left-upright") (fps 14) (hitbox 8 1 32 25) (images "crystallo-left-0.png" @@ -10,34 +10,39 @@ "crystallo-left-4.png" "crystallo-left-5.png" "crystallo-left-6.png" - "crystallo-left-7.png")) - + "crystallo-left-7.png") + ) + (action + (name "left") + (hitbox 8 1 32 25) + (flip-action "left-upright") + ) (action (name "right") (fps 14) (hitbox 8 1 32 25) - (mirror-action "left")) - + (mirror-action "left") + ) (action (name "slowdown-left") (fps 5) (hitbox 8 1 32 25) - (clone-action "left")) - + (clone-action "left") + ) (action (name "slowdown-right") (fps 5) (hitbox 8 1 32 25) - (clone-action "right")) - + (clone-action "right") + ) (action (name "shattered-left") - (images "shattered-left.png")) - + (images "shattered-left.png") + ) (action (name "shattered-right") - (mirror-action "shattered-left")) - + (mirror-action "shattered-left") + ) (action (name "detected-left") (fps 15) @@ -54,22 +59,23 @@ "crystallo-fall-6.png" "crystallo-fall-8.png" "crystallo-fall-9.png" - "crystallo-fall-8.png")) - + "crystallo-fall-8.png") + ) (action (name "detected-right") (fps 15) (hitbox 35 2 20 35) (loops 1) - (mirror-action "detected-left")) - + (mirror-action "detected-left") + ) (action (name "fall-left") (hitbox 45 2 20 35) - (images "crystallo-fall-10.png")) - + (images "crystallo-fall-10.png") + ) (action (name "fall-right") (hitbox 35 2 20 35) - (mirror-action "fall-left")) + (mirror-action "fall-left") + ) ) diff --git a/data/images/creatures/dart/dart.sprite b/data/images/creatures/dart/dart.sprite index 88c8f79114a..3c91b5ee706 100644 --- a/data/images/creatures/dart/dart.sprite +++ b/data/images/creatures/dart/dart.sprite @@ -14,11 +14,9 @@ (hitbox 6 10 7 12) (images "flying-down.png") ) - ;; This will never show up since the editor uses the flipped down texture - ;; But it prevents warnings for missing actions (action - (name "editor-up") + (name "flying-up") (hitbox 6 10 7 12) - (images "flying-down.png") + (flip-action "flying-down") ) ) diff --git a/data/images/creatures/darttrap/darttrap.sprite b/data/images/creatures/darttrap/darttrap.sprite index 474638ef28b..837fa68127f 100644 --- a/data/images/creatures/darttrap/darttrap.sprite +++ b/data/images/creatures/darttrap/darttrap.sprite @@ -23,19 +23,17 @@ "down-idle.png" ) ) - ;; This will never show up since the editor uses the flipped down texture - ;; But it prevents warnings for missing actions - (action - (hitbox 13 21 54 11) - (name "editor-up") - (images "down-1.png") - ) (action (hitbox 21 13 11 54) (name "idle-right") (loops 1) (mirror-action "idle-left") ) + (action + (hitbox 13 18 54 11) + (name "idle-up") + (flip-action "idle-down") + ) (action (hitbox 21 13 11 54) (name "loading-left") @@ -70,4 +68,9 @@ (fps 10) (mirror-action "loading-left") ) + (action + (hitbox 13 18 54 11) + (name "loading-up") + (flip-action "loading-down") + ) ) diff --git a/data/images/objects/ispy/i-hiding-up.png b/data/images/objects/ispy/i-hiding-up.png deleted file mode 100644 index cedbe799ad9e5a4699b22955167da72d4b697486..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6090 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 diff --git a/data/images/objects/ispy/i-idle-up.png b/data/images/objects/ispy/i-idle-up.png deleted file mode 100644 index 001bf1785b128e258d8112564c651541af31574f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10239 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

1Q_2DDi8x1e&md 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 diff --git a/data/images/objects/ispy/i-shaking2-up.png b/data/images/objects/ispy/i-shaking2-up.png deleted file mode 100644 index 3ef9eb7668d98f1236ccbf8f5befe2a3570d0fd5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10241 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 Sc5!b20000 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"sounds/stomp.wav"); } -Dart::Dart(const Vector& pos, Direction d, const BadGuy* parent_, const std::string& sprite, Flip flip) : +Dart::Dart(const Vector& pos, Direction d, const BadGuy* parent_, const std::string& sprite) : BadGuy(pos, d, sprite), parent(parent_), sound_source() { m_physic.enable_gravity(false); m_countMe = false; - m_flip = flip; SoundManager::current()->preload(DART_SOUND); SoundManager::current()->preload("sounds/darthit.wav"); SoundManager::current()->preload("sounds/stomp.wav"); @@ -67,8 +66,7 @@ Dart::initialize() { m_physic.set_velocity_x(m_dir == Direction::LEFT ? -::DART_SPEED : m_dir == Direction::RIGHT ? ::DART_SPEED : 0); m_physic.set_velocity_y(m_dir == Direction::UP ? -::DART_SPEED : m_dir == Direction::DOWN ? ::DART_SPEED : 0); - set_action("flying", m_dir == Direction::UP ? Direction::DOWN : m_dir); - if (m_dir == Direction::UP) m_flip = VERTICAL_FLIP; + set_action("flying", m_dir); } void @@ -147,18 +145,15 @@ Dart::play_looping_sounds() } void -Dart::after_editor_set() +Dart::set_flip(Flip flip) { - BadGuy::after_editor_set(); - if ((m_dir == Direction::UP && m_flip == NO_FLIP) || (m_dir == Direction::DOWN && m_flip == VERTICAL_FLIP)) - FlipLevelTransformer::transform_flip(m_flip); + m_flip = flip; } void Dart::on_flip(float height) { BadGuy::on_flip(height); - FlipLevelTransformer::transform_flip(m_flip); if (m_dir == Direction::UP) { m_dir = Direction::DOWN; @@ -169,6 +164,10 @@ Dart::on_flip(float height) m_dir = Direction::UP; m_physic.set_velocity_y(-::DART_SPEED); } + else + { + FlipLevelTransformer::transform_flip(m_flip); + } } /* EOF */ diff --git a/src/badguy/dart.hpp b/src/badguy/dart.hpp index 489d441977a..9512126eb34 100644 --- a/src/badguy/dart.hpp +++ b/src/badguy/dart.hpp @@ -26,7 +26,7 @@ class Dart final : public BadGuy { public: Dart(const ReaderMapping& reader); - Dart(const Vector& pos, Direction d, const BadGuy* parent, const std::string& sprite = "images/creatures/dart/dart.sprite", Flip flip = NO_FLIP); + Dart(const Vector& pos, Direction d, const BadGuy* parent, const std::string& sprite = "images/creatures/dart/dart.sprite"); virtual void initialize() override; virtual void activate() override; @@ -51,9 +51,10 @@ class Dart final : public BadGuy virtual void stop_looping_sounds() override; virtual void play_looping_sounds() override; - virtual void after_editor_set() override; virtual void on_flip(float height) override; + void set_flip(Flip flip); + protected: const BadGuy* parent; /**< collisions with this BadGuy will be ignored */ std::unique_ptr sound_source; /**< SoundSource for ambient sound */ diff --git a/src/badguy/darttrap.cpp b/src/badguy/darttrap.cpp index 4b886a90629..10d50b9c5e5 100644 --- a/src/badguy/darttrap.cpp +++ b/src/badguy/darttrap.cpp @@ -55,8 +55,7 @@ DartTrap::DartTrap(const ReaderMapping& reader) : void DartTrap::initialize() { - set_action("idle", m_dir == Direction::UP ? Direction::DOWN : m_dir); - if (m_dir == Direction::UP) m_flip = VERTICAL_FLIP; + set_action("idle", m_dir); } void @@ -100,14 +99,16 @@ void DartTrap::load() { m_state = LOADING; - set_action("loading", m_dir == Direction::UP ? Direction::DOWN : m_dir, 1); + set_action("loading", m_dir, 1); } void DartTrap::fire() { SoundManager::current()->play("sounds/dartfire.wav", get_pos()); - Dart &dart = Sector::get().add(Vector(0.f, 0.f), m_dir, this, m_dart_sprite, m_flip); + Dart &dart = Sector::get().add(Vector(0.f, 0.f), m_dir, this, m_dart_sprite); + if(m_dir == Direction::LEFT || m_dir == Direction::RIGHT) + dart.set_flip(m_flip); Vector pos; switch (m_dir) @@ -133,7 +134,7 @@ DartTrap::fire() dart.set_pos(pos); m_state = IDLE; - set_action("idle", m_dir == Direction::UP ? Direction::DOWN : m_dir); + set_action("idle", m_dir); } ObjectSettings @@ -152,23 +153,22 @@ DartTrap::get_settings() return result; } -void -DartTrap::after_editor_set() -{ - BadGuy::after_editor_set(); - if ((m_dir == Direction::UP && m_flip == NO_FLIP) || (m_dir == Direction::DOWN && m_flip == VERTICAL_FLIP)) - FlipLevelTransformer::transform_flip(m_flip); -} - void DartTrap::on_flip(float height) { BadGuy::on_flip(height); - FlipLevelTransformer::transform_flip(m_flip); if (m_dir == Direction::UP) + { m_dir = Direction::DOWN; + set_action(m_state == IDLE ? "idle" : "loading", m_dir, 1); + } else if (m_dir == Direction::DOWN) + { m_dir = Direction::UP; + set_action(m_state == IDLE ? "idle" : "loading", m_dir, 1); + } + else + FlipLevelTransformer::transform_flip(m_flip); } /* EOF */ diff --git a/src/badguy/darttrap.hpp b/src/badguy/darttrap.hpp index a5d31e4cf5e..8944c998e2a 100644 --- a/src/badguy/darttrap.hpp +++ b/src/badguy/darttrap.hpp @@ -37,7 +37,6 @@ class DartTrap final : public BadGuy virtual ObjectSettings get_settings() override; - virtual void after_editor_set() override; virtual void on_flip(float height) override; protected: diff --git a/src/badguy/rcrystallo.cpp b/src/badguy/rcrystallo.cpp index 962e797c3a1..c100cc271ed 100644 --- a/src/badguy/rcrystallo.cpp +++ b/src/badguy/rcrystallo.cpp @@ -114,7 +114,6 @@ void RCrystallo::draw(DrawingContext& context) { context.push_transform(); - context.set_flip(context.get_flip() ^ (state == RCRYSTALLO_ROOF ? VERTICAL_FLIP : NO_FLIP)); m_sprite->draw(context.color(), get_pos(), m_layer); context.pop_transform(); } diff --git a/src/scripting/badguy.cpp b/src/scripting/badguy.cpp index f208cae5073..68a872a0c78 100644 --- a/src/scripting/badguy.cpp +++ b/src/scripting/badguy.cpp @@ -45,7 +45,7 @@ void BadGuy::set_action(const std::string& action, int loops) { SCRIPT_GUARD_VOID; - object.set_sprite_action(action, loops); + object.set_action(action, loops); } void diff --git a/src/sprite/sprite_data.cpp b/src/sprite/sprite_data.cpp index 15935aecdff..b0d66ed8124 100644 --- a/src/sprite/sprite_data.cpp +++ b/src/sprite/sprite_data.cpp @@ -49,7 +49,8 @@ SpriteData::SpriteData(const ReaderMapping& mapping) : name() { auto iter = mapping.get_iter(); - while (iter.next()) { + while (iter.next()) + { if (iter.get_key() == "name") { iter.get(name); } else if (iter.get_key() == "action") { @@ -102,14 +103,15 @@ SpriteData::parse_action(const ReaderMapping& mapping) { auto action = std::make_unique(); - if (!mapping.get("name", action->name)) { + if (!mapping.get("name", action->name)) + { if (!actions.empty()) - throw std::runtime_error( - "If there are more than one action, they need names!"); + throw std::runtime_error("If there are more than one action, they need names!"); } std::vector hitbox; - if (mapping.get("hitbox", hitbox)) { + if (mapping.get("hitbox", hitbox)) + { switch (hitbox.size()) { case 4: @@ -145,18 +147,24 @@ SpriteData::parse_action(const ReaderMapping& mapping) } std::string mirror_action; + std::string flip_action; std::string clone_action; - if (mapping.get("mirror-action", mirror_action)) { + if (mapping.get("mirror-action", mirror_action)) + { const auto act_tmp = get_action(mirror_action); - if (act_tmp == nullptr) { + if (act_tmp == nullptr) + { std::ostringstream msg; msg << "Could not mirror action. Action not found: \"" << mirror_action << "\"\n" << "Mirror actions must be defined after the real one!"; throw std::runtime_error(msg.str()); - } else { + } + else + { float max_w = 0; float max_h = 0; - for (const auto& surf : act_tmp->surfaces) { + for (const auto& surf : act_tmp->surfaces) + { auto surface = surf->clone(HORIZONTAL_FLIP); max_w = std::max(max_w, static_cast(surface->get_width())); max_h = std::max(max_h, static_cast(surface->get_height())); @@ -182,18 +190,70 @@ SpriteData::parse_action(const ReaderMapping& mapping) action->fps = act_tmp->fps; } + if (action->family_name == "::" + action->name) + { + action->family_name = act_tmp->family_name; + } + } + } + else if (mapping.get("flip-action", flip_action)) + { + const auto act_tmp = get_action(flip_action); + if (act_tmp == nullptr) + { + std::ostringstream msg; + msg << "Could not flip action. Action not found: \"" << flip_action << "\"\n" + << "Flip actions must be defined after the real one!"; + throw std::runtime_error(msg.str()); + } + else + { + float max_w = 0; + float max_h = 0; + for (const auto& surf : act_tmp->surfaces) + { + auto surface = surf->clone(VERTICAL_FLIP); + max_w = std::max(max_w, static_cast(surface->get_width())); + max_h = std::max(max_h, static_cast(surface->get_height())); + action->surfaces.push_back(surface); + } + + if (action->hitbox_w < 1 && action->hitbox_h < 1) + { + action->hitbox_w = act_tmp->hitbox_w; + action->hitbox_h = act_tmp->hitbox_h; + action->x_offset = act_tmp->x_offset; + action->y_offset = act_tmp->y_offset; + } + + if (!action->has_custom_loops && act_tmp->has_custom_loops) + { + action->has_custom_loops = act_tmp->has_custom_loops; + action->loops = act_tmp->loops; + } + + if (action->fps == 0) + { + action->fps = act_tmp->fps; + } + if (action->family_name == "::" + action->name) { action->family_name = act_tmp->family_name; } } - } else if (mapping.get("clone-action", clone_action)) { + } + else if (mapping.get("clone-action", clone_action)) + { const auto* act_tmp = get_action(clone_action); - if (act_tmp == nullptr) { + if (act_tmp == nullptr) + { std::ostringstream msg; msg << "Could not clone action. Action not found: \"" << clone_action << "\"\n" << "Clone actions must be defined after the real one!"; throw std::runtime_error(msg.str()); - } else { + } + else + { // copy everything except the name (Semphris: and the family name) const std::string oldname = action->name; const std::string oldfam = action->family_name; @@ -205,14 +265,17 @@ SpriteData::parse_action(const ReaderMapping& mapping) action->family_name = act_tmp->family_name; } } - } else { // Load images + } + else + { // Load images std::optional surfaces_collection; std::vector images; if (mapping.get("images", images)) { float max_w = 0; float max_h = 0; - for (const auto& image : images) { + for (const auto& image : images) + { auto surface = Surface::from_file(FileSystem::join(mapping.get_doc().get_directory(), image)); max_w = std::max(max_w, static_cast(surface->get_width())); max_h = std::max(max_h, static_cast(surface->get_height()));