diff options
author | Kae <80987908+Novaenia@users.noreply.github.com> | 2024-06-03 15:47:18 +1000 |
---|---|---|
committer | Kae <80987908+Novaenia@users.noreply.github.com> | 2024-06-03 15:47:18 +1000 |
commit | 5d1e85b24154dea8ccf0fc98e54a5c0cbf32453c (patch) | |
tree | fa9bf4dbe72f0244bcdac361ef44060f421a7971 /source/game/scripting | |
parent | add17da988f4518c451abc4d0bacf536071e1c0b (diff) |
player.availableRecipes and root.allRecipes
Diffstat (limited to 'source/game/scripting')
-rw-r--r-- | source/game/scripting/StarPlayerLuaBindings.cpp | 11 | ||||
-rw-r--r-- | source/game/scripting/StarRootLuaBindings.cpp | 17 | ||||
-rw-r--r-- | source/game/scripting/StarRootLuaBindings.hpp | 3 |
3 files changed, 27 insertions, 4 deletions
diff --git a/source/game/scripting/StarPlayerLuaBindings.cpp b/source/game/scripting/StarPlayerLuaBindings.cpp index d303c94..5f12ee3 100644 --- a/source/game/scripting/StarPlayerLuaBindings.cpp +++ b/source/game/scripting/StarPlayerLuaBindings.cpp @@ -247,6 +247,17 @@ LuaCallbacks LuaBindings::makePlayerCallbacks(Player* player) { callbacks.registerCallback("blueprintKnown", [player](Json const& item) { return player->blueprintKnown(ItemDescriptor(item)); }); + callbacks.registerCallback("availableRecipes", [player](Maybe<StringSet> const& filter) { + auto itemDatabase = Root::singleton().itemDatabase(); + auto inventory = player->inventory(); + auto recipes = itemDatabase->recipesFromBagContents(inventory->availableItems(), inventory->availableCurrencies(), filter.value()); + JsonArray result; + result.reserve(recipes.size()); + for (auto& recipe : recipes) + result.append(recipe.toJson()); + return result; + }); + callbacks.registerCallback("makeTechAvailable", [player](String const& tech) { player->techs()->makeAvailable(tech); }); diff --git a/source/game/scripting/StarRootLuaBindings.cpp b/source/game/scripting/StarRootLuaBindings.cpp index a08be7f..50d18e8 100644 --- a/source/game/scripting/StarRootLuaBindings.cpp +++ b/source/game/scripting/StarRootLuaBindings.cpp @@ -44,7 +44,8 @@ LuaCallbacks LuaBindings::makeRootCallbacks() { callbacks.registerCallbackWithSignature<Json, String>("npcConfig", bind(RootCallbacks::npcConfig, root, _1)); callbacks.registerCallbackWithSignature<float, String>("projectileGravityMultiplier", bind(RootCallbacks::projectileGravityMultiplier, root, _1)); callbacks.registerCallbackWithSignature<Json, String>("projectileConfig", bind(RootCallbacks::projectileConfig, root, _1)); - callbacks.registerCallbackWithSignature<Json, String>("recipesForItem", bind(RootCallbacks::recipesForItem, root, _1)); + callbacks.registerCallbackWithSignature<JsonArray, String>("recipesForItem", bind(RootCallbacks::recipesForItem, root, _1)); + callbacks.registerCallbackWithSignature<JsonArray>("allRecipes", bind(RootCallbacks::allRecipes, root)); callbacks.registerCallbackWithSignature<String, String>("itemType", bind(RootCallbacks::itemType, root, _1)); callbacks.registerCallbackWithSignature<Json, String>("itemTags", bind(RootCallbacks::itemTags, root, _1)); callbacks.registerCallbackWithSignature<bool, String, String>("itemHasTag", bind(RootCallbacks::itemHasTag, root, _1, _2)); @@ -308,10 +309,20 @@ Json LuaBindings::RootCallbacks::projectileConfig(Root* root, String const& arg1 return projectileDatabase->projectileConfig(arg1); } -Json LuaBindings::RootCallbacks::recipesForItem(Root* root, String const& arg1) { +JsonArray LuaBindings::RootCallbacks::recipesForItem(Root* root, String const& arg1) { auto recipes = root->itemDatabase()->recipesForOutputItem(arg1); JsonArray result; - for (auto recipe : recipes) + result.reserve(recipes.size()); + for (auto& recipe : recipes) + result.append(recipe.toJson()); + return result; +} + +JsonArray LuaBindings::RootCallbacks::allRecipes(Root* root) { + auto& recipes = root->itemDatabase()->allRecipes(); + JsonArray result; + result.reserve(recipes.size()); + for (auto& recipe : recipes) result.append(recipe.toJson()); return result; } diff --git a/source/game/scripting/StarRootLuaBindings.hpp b/source/game/scripting/StarRootLuaBindings.hpp index 3979f2f..0cee77f 100644 --- a/source/game/scripting/StarRootLuaBindings.hpp +++ b/source/game/scripting/StarRootLuaBindings.hpp @@ -26,7 +26,8 @@ namespace LuaBindings { Json npcConfig(Root* root, String const& arg1); float projectileGravityMultiplier(Root* root, String const& arg1); Json projectileConfig(Root* root, String const& arg1); - Json recipesForItem(Root* root, String const& arg1); + JsonArray recipesForItem(Root* root, String const& arg1); + JsonArray allRecipes(Root* root); String itemType(Root* root, String const& itemName); Json itemTags(Root* root, String const& itemName); bool itemHasTag(Root* root, String const& itemName, String const& itemTag); |