diff -Nru supertux-0.6.3/debian/changelog supertux-0.6.3/debian/changelog --- supertux-0.6.3/debian/changelog 2023-07-19 20:17:27.000000000 +0000 +++ supertux-0.6.3/debian/changelog 2023-07-20 20:17:20.000000000 +0000 @@ -1,8 +1,8 @@ -supertux (0.6.3-2~git202307192017+17~ubuntu22.10.1) kinetic; urgency=low +supertux (0.6.3-2~git202307202017+17~ubuntu22.10.1) kinetic; urgency=low * Auto build. - -- Launchpad Package Builder Wed, 19 Jul 2023 20:17:27 +0000 + -- Launchpad Package Builder Thu, 20 Jul 2023 20:17:20 +0000 supertux (0.6.3) UNRELEASED; urgency=low diff -Nru supertux-0.6.3/debian/git-build-recipe.manifest supertux-0.6.3/debian/git-build-recipe.manifest --- supertux-0.6.3/debian/git-build-recipe.manifest 2023-07-19 20:17:27.000000000 +0000 +++ supertux-0.6.3/debian/git-build-recipe.manifest 2023-07-20 20:17:20.000000000 +0000 @@ -1,5 +1,5 @@ -# git-build-recipe format 0.4 deb-version {debupstream}-2~git202307192017+17 -lp:~supertux-dev/supertux/+git/github-clone git-commit:3a41b420e467955c9a9efd51fc5909436e747ff9 +# git-build-recipe format 0.4 deb-version {debupstream}-2~git202307202017+17 +lp:~supertux-dev/supertux/+git/github-clone git-commit:63390054e0182b705fbaea140c9b0ef98a37094c nest-part packaging lp:~supertux-dev/supertux/+git/supertux-debian debian debian git-commit:30d6625a450dd04d0a75f7ecf85fda0a8fc2acaa nest physfs lp:~supertux-dev/supertux/+git/external-physfs external/physfs git-commit:9bac3bc908b19997b301cc77f03008a90df55885 nest sexp-cpp lp:~supertux-dev/supertux/+git/external-sexp-cpp external/sexp-cpp git-commit:6018831abc1e5d5020c7b62f99962806dacf4c9f diff -Nru supertux-0.6.3/.pc/.quilt_patches supertux-0.6.3/.pc/.quilt_patches --- supertux-0.6.3/.pc/.quilt_patches 2023-07-19 20:17:27.000000000 +0000 +++ supertux-0.6.3/.pc/.quilt_patches 2023-07-20 20:17:20.000000000 +0000 @@ -1 +1 @@ -/home/buildd/build-RECIPEBRANCHBUILD-3575988/chroot-autobuild/home/buildd/work/tree/recipe/debian/patches +/home/buildd/build-RECIPEBRANCHBUILD-3576625/chroot-autobuild/home/buildd/work/tree/recipe/debian/patches diff -Nru supertux-0.6.3/.pc/.quilt_series supertux-0.6.3/.pc/.quilt_series --- supertux-0.6.3/.pc/.quilt_series 2023-07-19 20:17:27.000000000 +0000 +++ supertux-0.6.3/.pc/.quilt_series 2023-07-20 20:17:20.000000000 +0000 @@ -1 +1 @@ -/home/buildd/build-RECIPEBRANCHBUILD-3575988/chroot-autobuild/home/buildd/work/tree/recipe/debian/patches/series +/home/buildd/build-RECIPEBRANCHBUILD-3576625/chroot-autobuild/home/buildd/work/tree/recipe/debian/patches/series diff -Nru supertux-0.6.3/src/object/bonus_block.cpp supertux-0.6.3/src/object/bonus_block.cpp --- supertux-0.6.3/src/object/bonus_block.cpp 2023-07-19 20:16:39.000000000 +0000 +++ supertux-0.6.3/src/object/bonus_block.cpp 2023-07-20 20:16:43.000000000 +0000 @@ -69,7 +69,8 @@ m_hit_counter(1), m_script(), m_lightsprite(), - m_custom_sx() + m_custom_sx(), + m_coin_sprite("images/objects/coin/coin.sprite") { m_default_sprite_name = "images/objects/bonus_block/bonusblock.sprite"; @@ -86,7 +87,8 @@ m_hit_counter(1), m_script(), m_lightsprite(), - m_custom_sx() + m_custom_sx(), + m_coin_sprite("images/objects/coin/coin.sprite") { m_default_sprite_name = "images/objects/bonus_block/bonusblock.sprite"; @@ -138,6 +140,8 @@ } } } + } else if (token == "coin-sprite") { + iter.get(m_coin_sprite); } else if (token == "custom-contents") { // handled elsewhere } else { @@ -219,8 +223,9 @@ "1up", "custom", "script", "light", "light-on", "trampoline", "portabletrampoline", "rain", "explode", "rock", "potion"}, static_cast(Content::COIN), "contents"); result.add_sexp(_("Custom Content"), "custom-contents", m_custom_sx); + result.add_sprite(_("Coin sprite"), &m_coin_sprite, "coin-sprite", "images/objects/coin/coin.sprite"); - result.reorder({"script", "count", "contents", "sprite", "x", "y"}); + result.reorder({"script", "count", "contents", "coin-sprite", "sprite", "x", "y"}); return result; } @@ -289,7 +294,7 @@ switch (m_contents) { case Content::COIN: { - Sector::get().add(get_pos(), true); + Sector::get().add(get_pos(), true, m_coin_sprite); SoundManager::current()->play("sounds/coin.wav", get_pos()); player->get_status().add_coins(1, false); if (m_hit_counter != 0 && !m_parent_dispenser) @@ -379,13 +384,13 @@ } case Content::RAIN: { - Sector::get().add(get_pos(), true, !m_parent_dispenser); + Sector::get().add(get_pos(), true, !m_parent_dispenser, m_coin_sprite); play_upgrade_sound = true; break; } case Content::EXPLODE: { - Sector::get().add(get_pos() + Vector (0, -40), !m_parent_dispenser); + Sector::get().add(get_pos() + Vector (0, -40), !m_parent_dispenser, m_coin_sprite); play_upgrade_sound = true; break; } @@ -529,7 +534,7 @@ } case Content::EXPLODE: { - Sector::get().add(get_pos() + Vector (0, 40), !m_parent_dispenser); + Sector::get().add(get_pos() + Vector (0, 40), !m_parent_dispenser, m_coin_sprite); play_upgrade_sound = true; countdown = true; break; diff -Nru supertux-0.6.3/src/object/bonus_block.hpp supertux-0.6.3/src/object/bonus_block.hpp --- supertux-0.6.3/src/object/bonus_block.hpp 2023-07-19 20:16:39.000000000 +0000 +++ supertux-0.6.3/src/object/bonus_block.hpp 2023-07-20 20:16:43.000000000 +0000 @@ -85,6 +85,7 @@ std::string m_script; SurfacePtr m_lightsprite; sexp::Value m_custom_sx; + std::string m_coin_sprite; private: BonusBlock(const BonusBlock&) = delete; diff -Nru supertux-0.6.3/src/object/coin.cpp supertux-0.6.3/src/object/coin.cpp --- supertux-0.6.3/src/object/coin.cpp 2023-07-19 20:16:39.000000000 +0000 +++ supertux-0.6.3/src/object/coin.cpp 2023-07-20 20:16:43.000000000 +0000 @@ -28,8 +28,8 @@ #include "util/reader_mapping.hpp" #include "util/writer.hpp" -Coin::Coin(const Vector& pos, bool count_stats) : - MovingSprite(pos, "images/objects/coin/coin.sprite", LAYER_OBJECTS - 1, COLGROUP_TOUCHABLE), +Coin::Coin(const Vector& pos, bool count_stats, const std::string& sprite_path) : + MovingSprite(pos, sprite_path, LAYER_OBJECTS - 1, COLGROUP_TOUCHABLE), PathObject(), m_offset(0.0f, 0.0f), m_from_tilemap(false), @@ -210,8 +210,8 @@ } /* The following defines a coin subject to gravity */ -HeavyCoin::HeavyCoin(const Vector& pos, const Vector& init_velocity, bool count_stats) : - Coin(pos, count_stats), +HeavyCoin::HeavyCoin(const Vector& pos, const Vector& init_velocity, bool count_stats, const std::string& sprite_path) : + Coin(pos, count_stats, sprite_path), m_physic(), m_last_hit() { diff -Nru supertux-0.6.3/src/object/coin_explode.cpp supertux-0.6.3/src/object/coin_explode.cpp --- supertux-0.6.3/src/object/coin_explode.cpp 2023-07-19 20:16:39.000000000 +0000 +++ supertux-0.6.3/src/object/coin_explode.cpp 2023-07-20 20:16:43.000000000 +0000 @@ -20,7 +20,8 @@ #include "object/coin.hpp" #include "supertux/sector.hpp" -CoinExplode::CoinExplode(const Vector& pos, bool count_stats) : +CoinExplode::CoinExplode(const Vector& pos, bool count_stats, const std::string& sprite) : + m_sprite(sprite), position(pos), m_count_stats(count_stats) { @@ -32,16 +33,16 @@ float mag = 100.0f; // madnitude that coins are to be thrown float rand = 30.0f; // max variation to be subtracted from magnitide - Sector::get().add(position, Vector(2.5, -4.5) * (mag - gameRandom.randf(rand)), m_count_stats); - Sector::get().add(position, Vector(2, -5) * (mag - gameRandom.randf(rand)), m_count_stats); - Sector::get().add(position, Vector(1.5, -5.5) * (mag - gameRandom.randf(rand)), m_count_stats); - Sector::get().add(position, Vector(1, -6) * (mag+gameRandom.randf(rand)), m_count_stats); - Sector::get().add(position, Vector(0.5, -6.5) * (mag - gameRandom.randf(rand)), m_count_stats); - Sector::get().add(position, Vector(-2.5, -4.5) * (mag - gameRandom.randf(rand)), m_count_stats); - Sector::get().add(position, Vector(-2, -5) * (mag - gameRandom.randf(rand)), m_count_stats); - Sector::get().add(position, Vector(-1.5, -5.5) * (mag - gameRandom.randf(rand)), m_count_stats); - Sector::get().add(position, Vector(-1, -6) * (mag+gameRandom.randf(rand)), m_count_stats); - Sector::get().add(position, Vector(-0.5, -6.5) * (mag - gameRandom.randf(rand)), m_count_stats); + Sector::get().add(position, Vector(2.5, -4.5) * (mag - gameRandom.randf(rand)), m_count_stats, m_sprite); + Sector::get().add(position, Vector(2, -5) * (mag - gameRandom.randf(rand)), m_count_stats, m_sprite); + Sector::get().add(position, Vector(1.5, -5.5) * (mag - gameRandom.randf(rand)), m_count_stats, m_sprite); + Sector::get().add(position, Vector(1, -6) * (mag+gameRandom.randf(rand)), m_count_stats, m_sprite); + Sector::get().add(position, Vector(0.5, -6.5) * (mag - gameRandom.randf(rand)), m_count_stats, m_sprite); + Sector::get().add(position, Vector(-2.5, -4.5) * (mag - gameRandom.randf(rand)), m_count_stats, m_sprite); + Sector::get().add(position, Vector(-2, -5) * (mag - gameRandom.randf(rand)), m_count_stats, m_sprite); + Sector::get().add(position, Vector(-1.5, -5.5) * (mag - gameRandom.randf(rand)), m_count_stats, m_sprite); + Sector::get().add(position, Vector(-1, -6) * (mag+gameRandom.randf(rand)), m_count_stats, m_sprite); + Sector::get().add(position, Vector(-0.5, -6.5) * (mag - gameRandom.randf(rand)), m_count_stats, m_sprite); remove_me(); } diff -Nru supertux-0.6.3/src/object/coin_explode.hpp supertux-0.6.3/src/object/coin_explode.hpp --- supertux-0.6.3/src/object/coin_explode.hpp 2023-07-19 20:16:39.000000000 +0000 +++ supertux-0.6.3/src/object/coin_explode.hpp 2023-07-20 20:16:43.000000000 +0000 @@ -23,7 +23,8 @@ class CoinExplode final : public GameObject { public: - CoinExplode(const Vector& pos, bool count_stats = true); + CoinExplode(const Vector& pos, bool count_stats = true, + const std::string& sprite_path = "images/objects/coin/coin.sprite"); virtual void update(float dt_sec) override; virtual void draw(DrawingContext& context) override; virtual bool is_saveable() const override { @@ -31,6 +32,7 @@ } private: + std::string m_sprite; Vector position; const bool m_count_stats; }; diff -Nru supertux-0.6.3/src/object/coin.hpp supertux-0.6.3/src/object/coin.hpp --- supertux-0.6.3/src/object/coin.hpp 2023-07-19 20:16:39.000000000 +0000 +++ supertux-0.6.3/src/object/coin.hpp 2023-07-20 20:16:43.000000000 +0000 @@ -32,7 +32,8 @@ friend class HeavyCoin; public: - Coin(const Vector& pos, bool count_stats = true); + Coin(const Vector& pos, bool count_stats = true, + const std::string& sprite_path = "images/objects/coin/coin.sprite"); Coin(const ReaderMapping& reader, bool count_stats = true); virtual void finish_construction() override; @@ -73,7 +74,8 @@ class HeavyCoin final : public Coin { public: - HeavyCoin(const Vector& pos, const Vector& init_velocity, bool count_stats = true); + HeavyCoin(const Vector& pos, const Vector& init_velocity, bool count_stats = true, + const std::string& sprite_path = "images/objects/coin/coin.sprite"); HeavyCoin(const ReaderMapping& reader, bool count_stats = true); virtual void update(float dt_sec) override; diff -Nru supertux-0.6.3/src/object/coin_rain.cpp supertux-0.6.3/src/object/coin_rain.cpp --- supertux-0.6.3/src/object/coin_rain.cpp 2023-07-19 20:16:39.000000000 +0000 +++ supertux-0.6.3/src/object/coin_rain.cpp 2023-07-20 20:16:43.000000000 +0000 @@ -24,8 +24,9 @@ static const float DROP_TIME = .1f; // time duration between "drops" of coin rain -CoinRain::CoinRain(const Vector& pos, bool emerge, bool count_stats) : - sprite(SpriteManager::current()->create("images/objects/coin/coin.sprite")), +CoinRain::CoinRain(const Vector& pos, bool emerge, bool count_stats, const std::string& sprite_path) : + sprite(SpriteManager::current()->create(sprite_path)), + m_sprite_path(sprite_path), position(pos), emerge_distance(0), timer(), @@ -50,7 +51,7 @@ else if (counter==0){ drop = gameRandom.rand(10); Sector::get().add(Vector(position.x + 32.0f * static_cast((drop < 5) ? -drop - 1 : drop - 4), -32.0f), - Vector(0, 0), m_count_stats); + Vector(0, 0), m_count_stats, m_sprite_path); counter++; timer.start(DROP_TIME); } // finally the remainder of the coins drop in a determined but appears to be a random order @@ -59,7 +60,7 @@ drop += 7; if (drop >= 10) drop -=10; Sector::get().add(Vector(position.x + 32.0f * static_cast((drop < 5) ? -drop - 1 : drop - 4), -32.0f), - Vector(0, 0), m_count_stats); + Vector(0, 0), m_count_stats, m_sprite_path); counter++; timer.start(DROP_TIME); } else { diff -Nru supertux-0.6.3/src/object/coin_rain.hpp supertux-0.6.3/src/object/coin_rain.hpp --- supertux-0.6.3/src/object/coin_rain.hpp 2023-07-19 20:16:39.000000000 +0000 +++ supertux-0.6.3/src/object/coin_rain.hpp 2023-07-20 20:16:43.000000000 +0000 @@ -25,7 +25,8 @@ class CoinRain final : public GameObject { public: - CoinRain(const Vector& pos, bool emerge=false, bool count_stats = true); + CoinRain(const Vector& pos, bool emerge=false, bool count_stats = true, + const std::string& sprite_path = "images/objects/coin/coin.sprite"); virtual void update(float dt_sec) override; virtual void draw(DrawingContext& context) override; virtual bool is_saveable() const override { @@ -34,6 +35,7 @@ private: SpritePtr sprite; + std::string m_sprite_path; Vector position; float emerge_distance; Timer timer; diff -Nru supertux-0.6.3/src/video/sdl/sdl_painter.cpp supertux-0.6.3/src/video/sdl/sdl_painter.cpp --- supertux-0.6.3/src/video/sdl/sdl_painter.cpp 2023-07-19 20:16:39.000000000 +0000 +++ supertux-0.6.3/src/video/sdl/sdl_painter.cpp 2023-07-20 20:16:43.000000000 +0000 @@ -278,19 +278,20 @@ for (int i = 0; i < n; ++i) { SDL_Rect rect; + if (direction == VERTICAL || direction == VERTICAL_SECTOR) { rect.x = static_cast(region.get_left()); - rect.y = static_cast(region.get_bottom() * static_cast(i) / static_cast(n)); - rect.w = static_cast(region.get_right()); - rect.h = static_cast((region.get_bottom() * static_cast(i+1) / static_cast(n)) - static_cast(rect.y)); + rect.y = static_cast(region.get_top() + (region.get_bottom() - region.get_top()) * static_cast(i) / static_cast(n)); + rect.w = static_cast(region.get_right() - region.get_left()); + rect.h = static_cast(ceilf((region.get_bottom() - region.get_top()) / static_cast(n))); } else { - rect.x = static_cast(region.get_right() * static_cast(i) / static_cast(n)); + rect.x = static_cast(region.get_left() + (region.get_right() - region.get_left()) * static_cast(i) / static_cast(n)); rect.y = static_cast(region.get_top()); - rect.w = static_cast((region.get_right() * static_cast(i+1) / static_cast(n)) - static_cast(rect.x)); - rect.h = static_cast(region.get_bottom()); + rect.w = static_cast(ceilf((region.get_right() - region.get_left()) / static_cast(n))); + rect.h = static_cast(region.get_bottom() - region.get_top()); } float p = static_cast(i+1) / static_cast(n);