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

summaryrefslogtreecommitdiff
path: root/source/game/scripting/StarPlayerLuaBindings.cpp
diff options
context:
space:
mode:
authorKae <80987908+Novaenia@users.noreply.github.com>2024-06-03 15:47:18 +1000
committerKae <80987908+Novaenia@users.noreply.github.com>2024-06-03 15:47:18 +1000
commit5d1e85b24154dea8ccf0fc98e54a5c0cbf32453c (patch)
treefa9bf4dbe72f0244bcdac361ef44060f421a7971 /source/game/scripting/StarPlayerLuaBindings.cpp
parentadd17da988f4518c451abc4d0bacf536071e1c0b (diff)
player.availableRecipes and root.allRecipes
Diffstat (limited to 'source/game/scripting/StarPlayerLuaBindings.cpp')
-rw-r--r--source/game/scripting/StarPlayerLuaBindings.cpp11
1 files changed, 11 insertions, 0 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);
});