Skip to content

Commit

Permalink
Fixed AddonManager load/save of disabled addon files
Browse files Browse the repository at this point in the history
  • Loading branch information
Grumbel committed Aug 18, 2014
1 parent 4b9d82b commit 4e0cd85
Show file tree
Hide file tree
Showing 6 changed files with 16 additions and 39 deletions.
19 changes: 4 additions & 15 deletions src/addon/addon_manager.cpp
Expand Up @@ -61,9 +61,9 @@ size_t my_curl_physfs_write(void *ptr, size_t size, size_t nmemb, void *f_p)
}
#endif

AddonManager::AddonManager() :
AddonManager::AddonManager(std::vector<std::string>& ignored_addon_filenames_) :
addons(),
ignored_addon_filenames()
ignored_addon_filenames(ignored_addon_filenames_)
{
#ifdef HAVE_LIBCURL
curl_global_init(CURL_GLOBAL_ALL);
Expand Down Expand Up @@ -407,7 +407,8 @@ AddonManager::load_addons()
addons.push_back(addon);

// check if the Addon is disabled
if (std::find(ignored_addon_filenames.begin(), ignored_addon_filenames.end(), fileName) != ignored_addon_filenames.end()) {
if (std::find(ignored_addon_filenames.begin(), ignored_addon_filenames.end(), fileName) != ignored_addon_filenames.end())
{
unload(addon);
}

Expand All @@ -421,16 +422,4 @@ AddonManager::load_addons()
PHYSFS_freeList(rc);
}

void
AddonManager::read(const Reader& lisp)
{
lisp.get("disabled-addons", ignored_addon_filenames);
}

void
AddonManager::write(lisp::Writer& writer)
{
writer.write("disabled-addons", ignored_addon_filenames);
}

/* EOF */
14 changes: 2 additions & 12 deletions src/addon/addon_manager.hpp
Expand Up @@ -32,7 +32,7 @@ class Addon;
class AddonManager : public Currenton<AddonManager>
{
public:
AddonManager();
AddonManager(std::vector<std::string>& ignored_addon_filenames_);
~AddonManager();

/**
Expand Down Expand Up @@ -80,19 +80,9 @@ class AddonManager : public Currenton<AddonManager>
*/
void load_addons();

/**
* Write AddonManager configuration to Lisp
*/
void write(Writer& writer);

/**
* Read AddonManager configuration from Lisp
*/
void read(const Reader& lisp);

private:
std::vector<Addon*> addons;
std::vector<std::string> ignored_addon_filenames;
std::vector<std::string>& ignored_addon_filenames;
};

#endif
Expand Down
16 changes: 7 additions & 9 deletions src/supertux/gameconfig.cpp
Expand Up @@ -46,7 +46,8 @@ Config::Config() :
record_demo(),
locale(),
keyboard_config(),
joystick_config()
joystick_config(),
disabled_addon_filenames()
{
}

Expand Down Expand Up @@ -116,9 +117,9 @@ Config::load()
}

const lisp::Lisp* config_addons_lisp = config_lisp->get_lisp("addons");
if (config_addons_lisp && AddonManager::current())
if (config_addons_lisp)
{
AddonManager::current()->read(*config_addons_lisp);
config_addons_lisp->get("disabled-addons", disabled_addon_filenames);
}
}

Expand Down Expand Up @@ -170,12 +171,9 @@ Config::save()
}
writer.end_list("control");

if (AddonManager::current())
{
writer.start_list("addons");
AddonManager::current()->write(writer);
writer.end_list("addons");
}
writer.start_list("addons");
writer.write("disabled-addons", disabled_addon_filenames);
writer.end_list("addons");

writer.end_list("supertux-config");
}
Expand Down
2 changes: 2 additions & 0 deletions src/supertux/gameconfig.hpp
Expand Up @@ -71,6 +71,8 @@ class Config

KeyboardConfig keyboard_config;
JoystickConfig joystick_config;

std::vector<std::string> disabled_addon_filenames;
};

#endif
Expand Down
2 changes: 1 addition & 1 deletion src/supertux/main.cpp
Expand Up @@ -309,7 +309,7 @@ Main::launch_game()
Resources resources;

timelog("addons");
AddonManager addon_manager;
AddonManager addon_manager(g_config->disabled_addon_filenames);
addon_manager.load_addons();

timelog(0);
Expand Down
2 changes: 0 additions & 2 deletions src/supertux/menu/addon_menu.cpp
Expand Up @@ -54,7 +54,6 @@ AddonMenu::refresh()
// sort list
std::sort(m_addons.begin(), m_addons.end(), generate_addons_menu_sorter);


add_label(_("Add-ons"));
add_hl();

Expand Down Expand Up @@ -88,7 +87,6 @@ AddonMenu::refresh()
kind = _("Level");
}


if(!addon.author.empty())
{
text = str(boost::format(_("%s \"%s\" by \"%s\""))
Expand Down

0 comments on commit 4e0cd85

Please sign in to comment.