From 7eb1cd8dd94dcc076e0791092e82d1592464f194 Mon Sep 17 00:00:00 2001 From: Kae <80987908+Novaenia@users.noreply.github.com> Date: Tue, 31 Oct 2023 05:34:26 +1100 Subject: Simplify new player inventory functions --- source/game/scripting/StarLuaGameConverters.cpp | 33 +++++++++++++++++++++++++ 1 file changed, 33 insertions(+) (limited to 'source/game/scripting/StarLuaGameConverters.cpp') 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::from(LuaEngine& engine, InventorySlot k) { + if (auto equipment = k.ptr()) + return engine.createString(EquipmentSlotNames.getRight(*equipment)); + else if (auto bag = k.ptr()) { + auto table = engine.createTable(2, 0); + table.set(1, bag->first); + table.set(2, bag->second); + return table; + } + else if (k.is()) + return engine.createString("Swap"); + else if (k.is()) + return engine.createString("Trash"); +} + +Maybe LuaConverter::to(LuaEngine&, LuaValue const& v) { + if (auto str = v.ptr()) { + 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()) + return BagSlot(table->get(1).toString(), table->get(2)); + else + return {}; +} + LuaValue LuaConverter::from(LuaEngine& engine, CollisionKind k) { return engine.createString(CollisionKindNames.getRight(k)); } -- cgit v1.2.3