diff options
Diffstat (limited to 'source/game/scripting')
-rw-r--r-- | source/game/scripting/StarBehaviorLuaBindings.cpp | 2 | ||||
-rw-r--r-- | source/game/scripting/StarBehaviorLuaBindings.hpp | 2 | ||||
-rwxr-xr-x[-rw-r--r--] | source/game/scripting/StarPlayerLuaBindings.cpp | 11 | ||||
-rw-r--r-- | source/game/scripting/StarRootLuaBindings.cpp | 17 | ||||
-rw-r--r-- | source/game/scripting/StarScriptableThread.cpp | 6 | ||||
-rw-r--r-- | source/game/scripting/StarSongbookLuaBindings.cpp | 21 | ||||
-rw-r--r-- | source/game/scripting/StarSongbookLuaBindings.hpp | 11 |
7 files changed, 53 insertions, 17 deletions
diff --git a/source/game/scripting/StarBehaviorLuaBindings.cpp b/source/game/scripting/StarBehaviorLuaBindings.cpp index 8866746..4bf16f2 100644 --- a/source/game/scripting/StarBehaviorLuaBindings.cpp +++ b/source/game/scripting/StarBehaviorLuaBindings.cpp @@ -4,7 +4,7 @@ namespace Star { -LuaCallbacks LuaBindings::makeBehaviorLuaCallbacks(List<BehaviorStatePtr>* list) { +LuaCallbacks LuaBindings::makeBehaviorCallbacks(List<BehaviorStatePtr>* list) { LuaCallbacks callbacks; callbacks.registerCallback("behavior", [list](Json const& config, JsonObject const& parameters, LuaTable context, Maybe<LuaUserData> blackboard) -> BehaviorStateWeakPtr { diff --git a/source/game/scripting/StarBehaviorLuaBindings.hpp b/source/game/scripting/StarBehaviorLuaBindings.hpp index d2a882b..01c04ab 100644 --- a/source/game/scripting/StarBehaviorLuaBindings.hpp +++ b/source/game/scripting/StarBehaviorLuaBindings.hpp @@ -9,6 +9,6 @@ STAR_CLASS(Root); STAR_CLASS(UniverseClient); namespace LuaBindings { - LuaCallbacks makeBehaviorLuaCallbacks(List<BehaviorStatePtr>* list); + LuaCallbacks makeBehaviorCallbacks(List<BehaviorStatePtr>* list); } } diff --git a/source/game/scripting/StarPlayerLuaBindings.cpp b/source/game/scripting/StarPlayerLuaBindings.cpp index 5af86d0..ea2bae5 100644..100755 --- a/source/game/scripting/StarPlayerLuaBindings.cpp +++ b/source/game/scripting/StarPlayerLuaBindings.cpp @@ -496,6 +496,10 @@ LuaCallbacks LuaBindings::makePlayerCallbacks(Player* player) { return QuestStateNames.getRight(player->questManager()->getQuest(questId)->state()); }); + callbacks.registerCallback("questObjectives", [player](String const& questId) -> Maybe<JsonArray> { + return player->questManager()->getQuest(questId)->objectiveList(); + }); + callbacks.registerCallback("callQuest", [player](String const& questId, String const& func, LuaVariadic<LuaValue> const& args) -> Maybe<LuaValue> { if (!player->questManager()->hasQuest(questId)) return {}; @@ -522,8 +526,11 @@ LuaCallbacks LuaBindings::makePlayerCallbacks(Player* player) { return player->questManager()->trackedQuestId(); }); - callbacks.registerCallback("setTrackedQuest", [player](Maybe<String> const& questId) { - return player->questManager()->setAsTracked(questId); + callbacks.registerCallback("setTrackedQuest", [player](String const& questId) { + if (!player->questManager()->isCurrent(questId)) + return player->questManager()->setAsTracked(questId); + else + return player->questManager()->setAsTracked({}); }); callbacks.registerCallback("canTurnInQuest", [player](String const& questId) { diff --git a/source/game/scripting/StarRootLuaBindings.cpp b/source/game/scripting/StarRootLuaBindings.cpp index c45ef46..4e60595 100644 --- a/source/game/scripting/StarRootLuaBindings.cpp +++ b/source/game/scripting/StarRootLuaBindings.cpp @@ -66,13 +66,12 @@ LuaCallbacks LuaBindings::makeRootCallbacks() { callbacks.registerCallbackWithSignature<Maybe<String>, String, Maybe<String>>("materialMiningSound", bind(RootCallbacks::materialMiningSound, root, _1, _2)); callbacks.registerCallbackWithSignature<Maybe<String>, String, Maybe<String>>("materialFootstepSound", bind(RootCallbacks::materialFootstepSound, root, _1, _2)); - callbacks.registerCallback("assetsByExtension", [root](LuaEngine& engine, String const& extension) -> LuaTable { - auto& extensions = root->assets()->scanExtension(extension); - auto table = engine.createTable(extensions.size(), 0); - size_t i = 0; - for (auto& file : extensions) - table.set(++i, file); - return table; + callbacks.registerCallback("assetsByExtension", [root](String const& extension) -> CaseInsensitiveStringSet { + return root->assets()->scanExtension(extension); + }); + + callbacks.registerCallback("assetsScan", [root]( Maybe<String> const& a, Maybe<String> const& b) -> StringList { + return b ? root->assets()->scan(a.value(), *b) : root->assets()->scan(a.value()); }); callbacks.registerCallback("assetOrigin", [root](String const& path) -> Maybe<String> { @@ -116,12 +115,12 @@ LuaCallbacks LuaBindings::makeRootCallbacks() { return table; }); - callbacks.registerCallback("assetSourceMetadata", [root](LuaEngine& engine, String const& assetSourcePath) { + callbacks.registerCallback("assetSourceMetadata", [root](String const& assetSourcePath) { auto assets = root->assets(); return assets->assetSourceMetadata(assetSourcePath); }); - callbacks.registerCallback("itemFile", [root](LuaEngine& engine, String const& itemName) -> Maybe<String> { + callbacks.registerCallback("itemFile", [root](String const& itemName) -> Maybe<String> { return root->itemDatabase()->itemFile(itemName); }); diff --git a/source/game/scripting/StarScriptableThread.cpp b/source/game/scripting/StarScriptableThread.cpp index cbd32ad..6bbfece 100644 --- a/source/game/scripting/StarScriptableThread.cpp +++ b/source/game/scripting/StarScriptableThread.cpp @@ -14,9 +14,9 @@ namespace Star { ScriptableThread::ScriptableThread(Json parameters) : Thread("ScriptableThread: " + parameters.getString("name")), // TODO m_stop(false), + m_parameters(std::move(parameters)), m_errorOccurred(false), - m_shouldExpire(true), - m_parameters(std::move(parameters)) { + m_shouldExpire(true) { m_luaRoot = make_shared<LuaRoot>(); m_name = m_parameters.getString("name"); @@ -78,8 +78,6 @@ void ScriptableThread::passMessage(Message&& message) { void ScriptableThread::run() { try { - auto& root = Root::singleton(); - double updateMeasureWindow = m_parameters.getDouble("updateMeasureWindow",0.5); TickRateApproacher tickApproacher(1.0f / m_timestep, updateMeasureWindow); diff --git a/source/game/scripting/StarSongbookLuaBindings.cpp b/source/game/scripting/StarSongbookLuaBindings.cpp new file mode 100644 index 0000000..7831ed6 --- /dev/null +++ b/source/game/scripting/StarSongbookLuaBindings.cpp @@ -0,0 +1,21 @@ +#include "StarSongbookLuaBindings.hpp" +#include "StarLuaConverters.hpp" + +namespace Star { + +LuaCallbacks LuaBindings::makeSongbookCallbacks(Songbook* songbook) { + LuaCallbacks callbacks; + + callbacks.registerCallbackWithSignature<void, Json, String>("play", bind(mem_fn(&Songbook::play), songbook, _1, _2)); + callbacks.registerCallbackWithSignature<void, String, Vec2F>("keepAlive", bind(mem_fn(&Songbook::keepAlive), songbook, _1, _2)); + callbacks.registerCallbackWithSignature<void>("stop", bind(mem_fn(&Songbook::stop), songbook)); + callbacks.registerCallbackWithSignature<bool>("active", bind(mem_fn(&Songbook::active), songbook)); + callbacks.registerCallbackWithSignature<Maybe<String>>("band", bind(mem_fn(&Songbook::timeSource), songbook)); + callbacks.registerCallbackWithSignature<Maybe<String>>("instrument", bind(mem_fn(&Songbook::instrument), songbook)); + callbacks.registerCallbackWithSignature<bool>("instrumentPlaying", bind(mem_fn(&Songbook::instrumentPlaying), songbook)); + callbacks.registerCallbackWithSignature<Json>("song", bind(mem_fn(&Songbook::song), songbook)); + + return callbacks; +} + +} diff --git a/source/game/scripting/StarSongbookLuaBindings.hpp b/source/game/scripting/StarSongbookLuaBindings.hpp new file mode 100644 index 0000000..cc55ec6 --- /dev/null +++ b/source/game/scripting/StarSongbookLuaBindings.hpp @@ -0,0 +1,11 @@ +#pragma once + +#include "StarLua.hpp" +#include "StarSongbook.hpp" + +namespace Star { + +namespace LuaBindings { + LuaCallbacks makeSongbookCallbacks(Songbook* songbook); +} +} |