From 9bdce800d8678a196338677e719a5a08ea0cf46e Mon Sep 17 00:00:00 2001 From: Ahmed Samy Date: Mon, 30 Dec 2013 18:10:45 +0200 Subject: [PATCH] Bind Container item code to lua --- src/client/creatures.cpp | 3 +-- src/client/item.h | 6 +++++- src/client/luafunctions.cpp | 7 +++++++ 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/src/client/creatures.cpp b/src/client/creatures.cpp index d336450d..d6498775 100644 --- a/src/client/creatures.cpp +++ b/src/client/creatures.cpp @@ -101,8 +101,7 @@ void Spawn::save(TiXmlElement* node) for(const auto& pair : m_creatures) { const CreatureTypePtr& creature = pair.second; if(!(creatureNode = new TiXmlElement(creature->getRace() == CreatureRaceNpc ? "npc" : "monster"))) - stdext::throw_exception("oom?"); - + stdext::throw_exception("Spawn::save: Ran out of memory while allocating XML element! Terminating now."); creatureNode->SetAttribute("name", creature->getName()); creatureNode->SetAttribute("spawntime", creature->getSpawnTime()); diff --git a/src/client/item.h b/src/client/item.h index 94029a2e..eefb15b1 100644 --- a/src/client/item.h +++ b/src/client/item.h @@ -136,7 +136,11 @@ public: ItemPtr asItem() { return static_self_cast(); } bool isItem() { return true; } + ItemVector getContainerItems() { return m_containerItems; } + ItemPtr getContainerItem(int slot) { return m_containerItems[slot]; } + void addContainerItemIndexed(const ItemPtr& i, int slot) { m_containerItems[slot] = i; } void addContainerItem(const ItemPtr& i) { m_containerItems.push_back(i); } + void removeContainerItem(int slot) { m_containerItems[slot] = nullptr; } void clearContainerItems() { m_containerItems.clear(); } void calculatePatterns(int& xPattern, int& yPattern, int& zPattern); @@ -151,7 +155,7 @@ private: uint16 m_serverId; uint8 m_countOrSubType; stdext::packed_storage m_attribs; - ItemList m_containerItems; + ItemVector m_containerItems; Color m_color; bool m_async; diff --git a/src/client/luafunctions.cpp b/src/client/luafunctions.cpp index 38c4006b..2f86a9fd 100644 --- a/src/client/luafunctions.cpp +++ b/src/client/luafunctions.cpp @@ -463,6 +463,13 @@ void Client::registerLuaFunctions() g_lua.bindClassStaticFunction("create", &Item::create); g_lua.bindClassStaticFunction("createOtb", &Item::createFromOtb); g_lua.bindClassMemberFunction("clone", &Item::clone); + g_lua.bindClassMemberFunction("getContainerItems", &Item::getContainerItems); + g_lua.bindClassMemberFunction("getContainerItem", &Item::getContainerItem); + g_lua.bindClassMemberFunction("addContainerItem", &Item::addContainerItem); + g_lua.bindClassMemberFunction("addContainerItemIndexed", &Item::addContainerItemIndexed); + g_lua.bindClassMemberFunction("removeContainerItem", &Item::removeContainerItem); + g_lua.bindClassMemberFunction("clearContainerItems", &Item::clearContainerItems); + g_lua.bindClassMemberFunction("getContainerItem", &Item::getContainerItem); g_lua.bindClassMemberFunction("setCount", &Item::setCount); g_lua.bindClassMemberFunction("getCount", &Item::getCount); g_lua.bindClassMemberFunction("getSubType", &Item::getSubType);