summaryrefslogtreecommitdiff
path: root/src/utils
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2017-01-27 19:59:11 +0300
committerAndrei Karas <akaras@inbox.ru>2017-01-27 19:59:11 +0300
commitbfd5338c20fcd838f711ea5e96b2f37e012dc884 (patch)
tree91c242a73d9dbe89a153d364631f4d0d4f90b0fc /src/utils
parent4db8641fd12c6e11257a6a45fcb2e1948fe4bcb1 (diff)
downloadmanaplus-bfd5338c20fcd838f711ea5e96b2f37e012dc884.tar.gz
manaplus-bfd5338c20fcd838f711ea5e96b2f37e012dc884.tar.bz2
manaplus-bfd5338c20fcd838f711ea5e96b2f37e012dc884.tar.xz
manaplus-bfd5338c20fcd838f711ea5e96b2f37e012dc884.zip
Move links replace code from browserbox into browserboxtools.
Diffstat (limited to 'src/utils')
-rw-r--r--src/utils/browserboxtools.cpp83
-rw-r--r--src/utils/browserboxtools.h2
2 files changed, 85 insertions, 0 deletions
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<BeingTypeId>(
+ 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<BeingTypeId>(
+ 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<BeingTypeId>(
+ 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<BeingTypeId>(
+ 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<int> 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