Allow listing STK addons (available online officially)

This commit is contained in:
Benau
2019-12-03 10:38:05 +08:00
parent 6d3bb566be
commit 6062d3f169

View File

@@ -18,6 +18,7 @@
#include "network/protocols/client_lobby.hpp"
#include "addons/addons_manager.hpp"
#include "audio/music_manager.hpp"
#include "audio/sfx_manager.hpp"
#include "config/user_config.hpp"
@@ -1533,6 +1534,38 @@ void ClientLobby::handleClientCommand(const std::string& cmd)
else
music_manager->setMasterMusicVolume((float)vol / 10);
}
else if (argv[0] == "liststkaddon")
{
if (argv.size() != 2)
{
NetworkingLobby::getInstance()->addMoreServerInfo(
L"Usage: /liststkaddon [addon prefix letter(s) to find]");
}
else
{
std::string msg = "";
for (unsigned i = 0; i < addons_manager->getNumAddons(); i++)
{
// addon_ (6 letters)
const Addon& addon = addons_manager->getAddon(i);
const std::string& addon_id = addon.getId();
if (addon.testStatus(Addon::AS_APPROVED) &&
addon_id.compare(6, argv[1].length(), argv[1]) == 0)
{
msg += addon_id.substr(6);
msg += ", ";
}
}
if (msg.empty())
NetworkingLobby::getInstance()->addMoreServerInfo(L"Addon not found");
else
{
msg = msg.substr(0, msg.size() - 2);
NetworkingLobby::getInstance()->addMoreServerInfo(
(std::string("STK addon: ") + msg).c_str());
}
}
}
else
{
// Send for server command