From bfd5338c20fcd838f711ea5e96b2f37e012dc884 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Fri, 27 Jan 2017 19:59:11 +0300 Subject: Move links replace code from browserbox into browserboxtools. --- src/utils/browserboxtools.cpp | 83 +++++++++++++++++++++++++++++++++++++++++++ src/utils/browserboxtools.h | 2 ++ 2 files changed, 85 insertions(+) (limited to 'src/utils') diff --git a/src/utils/browserboxtools.cpp b/src/utils/browserboxtools.cpp index 6684684ff..ff7df8d30 100644 --- a/src/utils/browserboxtools.cpp +++ b/src/utils/browserboxtools.cpp @@ -20,6 +20,7 @@ #include "utils/browserboxtools.h" +#include "itemcolormanager.h" #include "main.h" #include "settings.h" @@ -27,6 +28,19 @@ #include "utils/stringutils.h" +#ifndef DYECMD +#include "const/resources/item/cards.h" + +#include "resources/beinginfo.h" +#include "resources/iteminfo.h" + +#include "resources/db/homunculusdb.h" +#include "resources/db/itemdb.h" +#include "resources/db/mercenarydb.h" +#include "resources/db/monsterdb.h" +#include "resources/db/petdb.h" +#endif // DYECMD + #include "debug.h" void BrowserBoxTools::replaceVars(std::string &data) @@ -51,3 +65,72 @@ void BrowserBoxTools::replaceKeys(std::string &data) idx1 = data.find("###"); } } + +std::string BrowserBoxTools::replaceLinkCommands(const std::string &link) +{ +#ifdef DYECMD + return link; +#else // DYECMD + + std::string data = link; + + if (!link.empty() && link[0] == 'm') + { // monster link + const BeingTypeId id = static_cast( + atoi(link.substr(1).c_str())); + BeingInfo *info = MonsterDB::get(id); + if (info) + data = info->getName(); + } + else if (!link.empty() && link[0] == 'p') + { // pet link + const BeingTypeId id = static_cast( + atoi(link.substr(1).c_str())); + BeingInfo *info = PETDB::get(id); + if (info) + data = info->getName(); + } + else if (!link.empty() && link[0] == 'h') + { // homunculus link + const BeingTypeId id = static_cast( + atoi(link.substr(1).c_str())); + BeingInfo *info = HomunculusDB::get(id); + if (info) + data = info->getName(); + } + else if (!link.empty() && link[0] == 'M') + { // homunculus link + const BeingTypeId id = static_cast( + atoi(link.substr(1).c_str())); + BeingInfo *info = MercenaryDB::get(id); + if (info) + data = info->getName(); + } + else + { // item link + size_t idx = link.find(','); + if (idx != std::string::npos) + { + const int id = atoi(link.substr(0, idx).c_str()); + if (id) + { + std::vector parts; + splitToIntVector(parts, + link.substr(idx), ','); + while (parts.size() < maxCards) + parts.push_back(0); + const ItemColor itemColor = + ItemColorManager::getColorFromCards(&parts[0]); + data = ItemDB::get(id).getName(itemColor); + } + } + else + { + const int id = atoi(link.c_str()); + if (id) + data = ItemDB::get(id).getName(); + } + } + return data; +#endif // DYECMD +} diff --git a/src/utils/browserboxtools.h b/src/utils/browserboxtools.h index c2d0c9dc9..d35f4bda9 100644 --- a/src/utils/browserboxtools.h +++ b/src/utils/browserboxtools.h @@ -30,6 +30,8 @@ namespace BrowserBoxTools void replaceVars(std::string &data); void replaceKeys(std::string &data); + + std::string replaceLinkCommands(const std::string &link); } // BrowserBoxTools #endif // UTILS_BROWSERBOXTOOLS_H -- cgit v1.2.3-70-g09d2