From 7f7327b6224acc780395fbb3350170ffd07524df Mon Sep 17 00:00:00 2001 From: Ivan Savenko Date: Tue, 11 Feb 2025 20:07:31 +0000 Subject: [PATCH 1/5] Fix attempt to translated already translated string --- client/battle/BattleInterfaceClasses.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/battle/BattleInterfaceClasses.cpp b/client/battle/BattleInterfaceClasses.cpp index 5240737d5..ac9410963 100644 --- a/client/battle/BattleInterfaceClasses.cpp +++ b/client/battle/BattleInterfaceClasses.cpp @@ -890,7 +890,7 @@ BattleResultResources BattleResultWindow::getResources(const BattleResult & br) if (ourHero) { resources.resultText.appendTextID("core.genrltxt.305"); - resources.resultText.replaceTextID(ourHero->getNameTranslated()); + resources.resultText.replaceTextID(ourHero->getNameTextID()); resources.resultText.replaceNumber(br.exp[weAreAttacker ? BattleSide::ATTACKER : BattleSide::DEFENDER]); } } From c559b207916e63c11751df19969ab8b464641868 Mon Sep 17 00:00:00 2001 From: Ivan Savenko Date: Tue, 11 Feb 2025 20:07:44 +0000 Subject: [PATCH 2/5] Add more tracking for crash on Android --- client/battle/CreatureAnimation.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/client/battle/CreatureAnimation.cpp b/client/battle/CreatureAnimation.cpp index 60a59cf54..263ad1ea2 100644 --- a/client/battle/CreatureAnimation.cpp +++ b/client/battle/CreatureAnimation.cpp @@ -200,9 +200,16 @@ CreatureAnimation::CreatureAnimation(const AnimationPath & name_, TSpeedControll speedController(controller), once(false) { + forward = GH.renderHandler().loadAnimation(name_, EImageBlitMode::WITH_SHADOW_AND_SELECTION); reverse = GH.renderHandler().loadAnimation(name_, EImageBlitMode::WITH_SHADOW_AND_SELECTION); + if (forward->size(size_t(ECreatureAnimType::DEATH)) == 0) + throw std::runtime_error("Animation '" + name_.getOriginalName() + "' has empty death animation!"); + + if (forward->size(size_t(ECreatureAnimType::HOLDING)) == 0) + throw std::runtime_error("Animation '" + name_.getOriginalName() + "' has empty holding animation!"); + // if necessary, add one frame into vcmi-only group DEAD if(forward->size(size_t(ECreatureAnimType::DEAD)) == 0) { From 4c4726847d34c59ac81b315893d0b59818e5e216 Mon Sep 17 00:00:00 2001 From: Ivan Savenko Date: Tue, 11 Feb 2025 20:08:02 +0000 Subject: [PATCH 3/5] Fix size of generated images for Chronicles --- client/render/AssetGenerator.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/client/render/AssetGenerator.cpp b/client/render/AssetGenerator.cpp index aacc9105e..ebaf7b4bd 100644 --- a/client/render/AssetGenerator.cpp +++ b/client/render/AssetGenerator.cpp @@ -211,7 +211,7 @@ AssetGenerator::CanvasPtr AssetGenerator::createCampaignBackground() auto locator = ImageLocator(ImagePath::builtin("CAMPBACK"), EImageBlitMode::OPAQUE); std::shared_ptr img = GH.renderHandler().loadImage(locator); - auto image = GH.renderHandler().createImage(Point(200, 116), CanvasScalingPolicy::IGNORE); + auto image = GH.renderHandler().createImage(Point(800, 600), CanvasScalingPolicy::IGNORE); Canvas canvas = image->getCanvas(); canvas.draw(img, Point(0, 0), Rect(0, 0, 800, 600)); @@ -251,7 +251,7 @@ AssetGenerator::CanvasPtr AssetGenerator::createChroniclesCampaignImages(int chr auto locator = ImageLocator(imgPathBg, EImageBlitMode::OPAQUE); std::shared_ptr img = GH.renderHandler().loadImage(locator); - auto image = GH.renderHandler().createImage(Point(800, 600), CanvasScalingPolicy::IGNORE); + auto image = GH.renderHandler().createImage(Point(200, 116), CanvasScalingPolicy::IGNORE); Canvas canvas = image->getCanvas(); std::array sourceRect = { From 4c74346508eb3204f94f7a74d15024f8007eacb0 Mon Sep 17 00:00:00 2001 From: Ivan Savenko Date: Tue, 11 Feb 2025 20:14:57 +0000 Subject: [PATCH 4/5] Hide darkness bonus on creatures - it only works with towns --- config/bonuses.json | 1 + 1 file changed, 1 insertion(+) diff --git a/config/bonuses.json b/config/bonuses.json index ab929482a..2e1e26b2d 100644 --- a/config/bonuses.json +++ b/config/bonuses.json @@ -82,6 +82,7 @@ "DARKNESS": { + "hidden": true }, "DEATH_STARE": From b1ae36bdff8b718fc8ae479772076a439be33aab Mon Sep 17 00:00:00 2001 From: Ivan Savenko Date: Thu, 13 Feb 2025 21:36:24 +0000 Subject: [PATCH 5/5] Use boost::asio::post instead of deprecated io_service::post --- lib/network/NetworkConnection.cpp | 4 ++-- lib/network/NetworkHandler.cpp | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/network/NetworkConnection.cpp b/lib/network/NetworkConnection.cpp index 3c8d7934e..f1114821c 100644 --- a/lib/network/NetworkConnection.cpp +++ b/lib/network/NetworkConnection.cpp @@ -216,7 +216,7 @@ InternalConnection::InternalConnection(INetworkConnectionListener & listener, co void InternalConnection::receivePacket(const std::vector & message) { - io->post([self = std::static_pointer_cast(shared_from_this()), message](){ + boost::asio::post(*io, [self = std::static_pointer_cast(shared_from_this()), message](){ if (self->connectionActive) self->listener.onPacketReceived(self, message); }); @@ -224,7 +224,7 @@ void InternalConnection::receivePacket(const std::vector & message) void InternalConnection::disconnect() { - io->post([self = std::static_pointer_cast(shared_from_this())](){ + boost::asio::post(*io, [self = std::static_pointer_cast(shared_from_this())](){ self->listener.onDisconnected(self, "Internal connection has been terminated"); self->otherSideWeak.reset(); self->connectionActive = false; diff --git a/lib/network/NetworkHandler.cpp b/lib/network/NetworkHandler.cpp index add791490..4634db414 100644 --- a/lib/network/NetworkHandler.cpp +++ b/lib/network/NetworkHandler.cpp @@ -79,7 +79,7 @@ void NetworkHandler::createInternalConnection(INetworkClientListener & listener, server.receiveInternalConnection(localConnection); - io->post([&listener, localConnection](){ + boost::asio::post(*io, [&listener, localConnection](){ listener.onConnectionEstablished(localConnection); }); }