Веб-сайт самохостера Lotigara

summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKae <80987908+Novaenia@users.noreply.github.com>2024-12-19 19:07:34 +1100
committerGitHub <noreply@github.com>2024-12-19 19:07:34 +1100
commit157eb7c1416cef650525321ff78ed98ff2ac9d77 (patch)
tree8549a5ac23fa7a6e9b22a1884b3493789e4761f7
parent7d98cc8e042fe2af1a5652a6106f5630f6faeaf8 (diff)
parent28a8b54f43f10fde8c09f6efe91d1c1b3b09d5d4 (diff)
Merge pull request #155 from SilverSokolova/main
Allow buying/crafting more than 1000 items at once [skip ci]
-rw-r--r--assets/opensb/interface/windowconfig/crafting.config.patch12
-rw-r--r--source/frontend/StarCraftingInterface.cpp5
-rw-r--r--source/frontend/StarCraftingInterface.hpp2
-rw-r--r--source/frontend/StarMerchantInterface.cpp6
-rw-r--r--source/frontend/StarMerchantInterface.hpp1
5 files changed, 18 insertions, 8 deletions
diff --git a/assets/opensb/interface/windowconfig/crafting.config.patch b/assets/opensb/interface/windowconfig/crafting.config.patch
index 0728507..9febcd4 100644
--- a/assets/opensb/interface/windowconfig/crafting.config.patch
+++ b/assets/opensb/interface/windowconfig/crafting.config.patch
@@ -4,7 +4,11 @@
// Disables the crafting timer if true.
"disableTimer" : false,
- // This is only used if the crafting timer is enabled.
- // This is how many crafts are ran when the crafting timer wraps.
- "craftCount" : 1
-} } \ No newline at end of file
+ // This is only used if the crafting timer is enabled.
+ // This is how many crafts are ran when the crafting timer wraps.
+ "craftCount" : 1,
+
+ // This is how many of any item can be crafted at once.
+ // This is also used by merchants.
+ "maxSpinCount" : 9999
+} }
diff --git a/source/frontend/StarCraftingInterface.cpp b/source/frontend/StarCraftingInterface.cpp
index 34e0265..c44ad2b 100644
--- a/source/frontend/StarCraftingInterface.cpp
+++ b/source/frontend/StarCraftingInterface.cpp
@@ -42,6 +42,7 @@ CraftingPane::CraftingPane(WorldClientPtr worldClient, PlayerPtr player, Json co
jsonMerge(assets->fetchJson(baseConfig), settings));
m_filter = StringSet::from(jsonToStringList(m_settings.get("filter", JsonArray())));
+ m_maxSpinCount = m_settings.getUInt("maxSpinCount", 1000);
GuiReader reader;
reader.registerCallback("spinCount.up", [=](Widget*) {
@@ -752,14 +753,14 @@ List<ItemRecipe> CraftingPane::determineRecipes() {
int CraftingPane::maxCraft() {
if (m_player->isAdmin())
- return 1000;
+ return m_maxSpinCount;
auto itemDb = Root::singleton().itemDatabase();
int res = 0;
if (m_guiList->selectedItem() != NPos && m_guiList->selectedItem() < m_recipes.size()) {
HashMap<ItemDescriptor, uint64_t> normalizedBag = m_player->inventory()->availableItems();
auto selectedRecipe = recipeFromSelectedWidget();
res = itemDb->maxCraftableInBag(normalizedBag, m_player->inventory()->availableCurrencies(), selectedRecipe);
- res = std::min(res, 1000);
+ res = std::min(res, m_maxSpinCount);
}
return res;
}
diff --git a/source/frontend/StarCraftingInterface.hpp b/source/frontend/StarCraftingInterface.hpp
index 58dd022..f422406 100644
--- a/source/frontend/StarCraftingInterface.hpp
+++ b/source/frontend/StarCraftingInterface.hpp
@@ -69,6 +69,8 @@ private:
StringSet m_filter;
+ int m_maxSpinCount;
+
int m_recipeAutorefreshCooldown;
HashMap<ItemDescriptor, ItemPtr> m_itemCache;
diff --git a/source/frontend/StarMerchantInterface.cpp b/source/frontend/StarMerchantInterface.cpp
index 51bccb6..196dba1 100644
--- a/source/frontend/StarMerchantInterface.cpp
+++ b/source/frontend/StarMerchantInterface.cpp
@@ -38,6 +38,8 @@ MerchantPane::MerchantPane(
m_itemBag = make_shared<ItemBag>(m_settings.getUInt("sellContainerSize"));
+ m_maxBuyCount = m_settings.getUInt("maxSpinCount", assets->json("/interface/windowconfig/crafting.config:default").getUInt("maxSpinCount", 1000));
+
GuiReader reader;
reader.registerCallback("spinCount.up", [=](Widget*) {
if (m_selectedIndex != NPos) {
@@ -360,8 +362,8 @@ int MerchantPane::maxBuyCount() {
auto assets = Root::singleton().assets();
auto unitPrice = selected->data().toUInt();
if (unitPrice == 0)
- return 1000;
- return min(1000, (int)floor(m_player->currency("money") / unitPrice));
+ return m_maxBuyCount;
+ return min(m_maxBuyCount, (int)floor(m_player->currency("money") / unitPrice));
} else {
return 0;
}
diff --git a/source/frontend/StarMerchantInterface.hpp b/source/frontend/StarMerchantInterface.hpp
index b717a61..967a2ce 100644
--- a/source/frontend/StarMerchantInterface.hpp
+++ b/source/frontend/StarMerchantInterface.hpp
@@ -76,6 +76,7 @@ private:
ItemBagPtr m_itemBag;
int m_buyCount;
+ int m_maxBuyCount;
};
}