From 5989221305b29099a95e5d150e8bfca140248364 Mon Sep 17 00:00:00 2001 From: Benau Date: Tue, 17 Dec 2019 01:32:53 +0800 Subject: [PATCH] Improve error logging --- src/addons/addons_manager.cpp | 2 +- src/states_screens/dialogs/addons_pack.cpp | 21 ++++++++++++++++----- src/states_screens/dialogs/addons_pack.hpp | 2 +- 3 files changed, 18 insertions(+), 7 deletions(-) diff --git a/src/addons/addons_manager.cpp b/src/addons/addons_manager.cpp index 3efb247f4..c5b1aaa62 100644 --- a/src/addons/addons_manager.cpp +++ b/src/addons/addons_manager.cpp @@ -494,7 +494,7 @@ bool AddonsManager::install(const Addon &addon) std::string to = addon.getDataDir(); // Remove old addon first (including non official way to install addons) - AddonsPack::uninstallByName(addon.getDirName(), true/*false_remove_skin*/); + AddonsPack::uninstallByName(addon.getDirName(), true/*force_clear*/); bool success = extract_zip(from, to, true/*recursive*/); if (!success) { diff --git a/src/states_screens/dialogs/addons_pack.cpp b/src/states_screens/dialogs/addons_pack.cpp index 394d6f37e..b99780114 100644 --- a/src/states_screens/dialogs/addons_pack.cpp +++ b/src/states_screens/dialogs/addons_pack.cpp @@ -326,11 +326,12 @@ void AddonsPack::install(const std::string& name) if (StateManager::get()->getGameState() != GUIEngine::MENU && !ModalDialog::isADialogActive()) return; + + NetworkingLobby* nl = dynamic_cast( + GUIEngine::getCurrentScreen()); Addon* addon = addons_manager->getAddon(Addon::createAddonId(name)); if (addon) { - NetworkingLobby* nl = dynamic_cast( - GUIEngine::getCurrentScreen()); if (addon->isInstalled()) { if (nl) @@ -340,21 +341,31 @@ void AddonsPack::install(const std::string& name) AddonsLoading* al = new AddonsLoading(addon->getId()); al->tryInstall(); } - else + else if (StringUtils::startsWith(name, "http")) { // Assume it's addon pack url new AddonsPack(name); } + else + { + if (nl) + nl->addMoreServerInfo(L"Bad addon id"); + } } // install // ---------------------------------------------------------------------------- void AddonsPack::uninstallByName(const std::string& name, - bool force_remove_skin) + bool force_clear) { if (StateManager::get()->getGameState() != GUIEngine::MENU) return; NetworkingLobby* nl = dynamic_cast( GUIEngine::getCurrentScreen()); + // force_clear is true when removing the existing folder when install new + // addon, in this case we don't need more logging in lobby + if (force_clear) + nl = NULL; + std::string addon_id = Addon::createAddonId(name); const KartProperties* prop = kart_properties_manager->getKart(addon_id); @@ -384,7 +395,7 @@ void AddonsPack::uninstallByName(const std::string& name, std::string skin_file = skin_folder + "/stkskin.xml"; if (file_manager->fileExists(skin_file)) { - if (!force_remove_skin && + if (!force_clear && addon_id == UserConfigParams::m_skin_file.c_str()) { if (nl) diff --git a/src/states_screens/dialogs/addons_pack.hpp b/src/states_screens/dialogs/addons_pack.hpp index 1ddd29dac..37a7650cf 100644 --- a/src/states_screens/dialogs/addons_pack.hpp +++ b/src/states_screens/dialogs/addons_pack.hpp @@ -50,7 +50,7 @@ public: virtual bool onEscapePressed() OVERRIDE; static void install(const std::string& name); static void uninstall(const std::string& name, bool force_remove_skin = false); - static void uninstallByName(const std::string& name, bool force_remove_skin = false); + static void uninstallByName(const std::string& name, bool force_clear = false); }; // DownloadAssets #endif