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

summaryrefslogtreecommitdiff
path: root/source/game/scripting
diff options
context:
space:
mode:
Diffstat (limited to 'source/game/scripting')
-rw-r--r--source/game/scripting/StarBehaviorLuaBindings.cpp2
-rw-r--r--source/game/scripting/StarBehaviorLuaBindings.hpp2
-rwxr-xr-x[-rw-r--r--]source/game/scripting/StarPlayerLuaBindings.cpp11
-rw-r--r--source/game/scripting/StarRootLuaBindings.cpp17
-rw-r--r--source/game/scripting/StarScriptableThread.cpp6
-rw-r--r--source/game/scripting/StarSongbookLuaBindings.cpp21
-rw-r--r--source/game/scripting/StarSongbookLuaBindings.hpp11
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);
+}
+}