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

summaryrefslogtreecommitdiff
path: root/source/game/scripting/StarLuaGameConverters.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'source/game/scripting/StarLuaGameConverters.cpp')
-rw-r--r--source/game/scripting/StarLuaGameConverters.cpp33
1 files changed, 33 insertions, 0 deletions
diff --git a/source/game/scripting/StarLuaGameConverters.cpp b/source/game/scripting/StarLuaGameConverters.cpp
index 070048e..a6f2738 100644
--- a/source/game/scripting/StarLuaGameConverters.cpp
+++ b/source/game/scripting/StarLuaGameConverters.cpp
@@ -2,6 +2,39 @@
namespace Star {
+LuaValue LuaConverter<InventorySlot>::from(LuaEngine& engine, InventorySlot k) {
+ if (auto equipment = k.ptr<EquipmentSlot>())
+ return engine.createString(EquipmentSlotNames.getRight(*equipment));
+ else if (auto bag = k.ptr<BagSlot>()) {
+ auto table = engine.createTable(2, 0);
+ table.set(1, bag->first);
+ table.set(2, bag->second);
+ return table;
+ }
+ else if (k.is<SwapSlot>())
+ return engine.createString("Swap");
+ else if (k.is<TrashSlot>())
+ return engine.createString("Trash");
+}
+
+Maybe<InventorySlot> LuaConverter<InventorySlot>::to(LuaEngine&, LuaValue const& v) {
+ if (auto str = v.ptr<LuaString>()) {
+ auto string = str->toString();
+ if (string.equalsIgnoreCase("Swap"))
+ return SwapSlot();
+ else if (string.equalsIgnoreCase("Trash"))
+ return TrashSlot();
+ else if (auto equipment = EquipmentSlotNames.leftPtr(str->toString()))
+ return *equipment;
+ else
+ return {};
+ }
+ else if (auto table = v.ptr<LuaTable>())
+ return BagSlot(table->get<LuaString>(1).toString(), table->get<unsigned>(2));
+ else
+ return {};
+}
+
LuaValue LuaConverter<CollisionKind>::from(LuaEngine& engine, CollisionKind k) {
return engine.createString(CollisionKindNames.getRight(k));
}