more changes in container API

This commit is contained in:
Eduardo Bart 2012-06-05 16:21:11 -03:00
parent 86cade0aa9
commit 2dde63d2bc
4 changed files with 18 additions and 30 deletions

View File

@ -23,12 +23,14 @@
#include "container.h"
#include "item.h"
Container::Container()
Container::Container(int id, int capacity, const std::string& name, const ItemPtr& containerItem, bool hasParent)
{
m_id = -1;
m_capacity = 20;
m_name = "Container";
m_hasParent = false;
m_id = id;
m_capacity = capacity;
m_name = name;
m_containerItem = containerItem;
m_hasParent = hasParent;
m_closed = false;
}
ItemPtr Container::getItem(int slot)
@ -45,6 +47,7 @@ void Container::onOpen(const ContainerPtr& previousContainer)
void Container::onClose()
{
m_closed = true;
callLuaField("onClose");
}

View File

@ -29,26 +29,20 @@
class Container : public LuaObject
{
public:
Container();
protected:
Container(int id, int capacity, const std::string& name, const ItemPtr& containerItem, bool hasParent);
public:
ItemPtr getItem(int slot);
std::deque<ItemPtr> getItems() { return m_items; }
int getItemsCount() { return m_items.size(); }
Position getSlotPosition(int slot) { return Position(0xffff, m_id | 0x40, slot); }
void setId(int id) { m_id = id; }
void setCapacity(int capacity) { m_capacity = capacity; }
void setName(std::string name) { m_name = name; }
void setContainerItem(const ItemPtr& containerItem) { m_containerItem = containerItem; }
void setHasParent(bool hasParent) { m_hasParent = hasParent; }
std::string getName() { return m_name; }
int getId() { return m_id; }
int getCapacity() { return m_capacity; }
int getItemsCount() { return m_items.size(); }
ItemPtr getContainerItem() { return m_containerItem; }
std::string getName() { return m_name; }
bool hasParent() { return m_hasParent; }
bool isClosed() { return m_closed; }
protected:
void onOpen(const ContainerPtr& previousContainer);
@ -68,6 +62,7 @@ private:
ItemPtr m_containerItem;
std::string m_name;
bool m_hasParent;
bool m_closed;
std::deque<ItemPtr> m_items;
};

View File

@ -173,12 +173,7 @@ void Game::processCreatureSpeak(const std::string& name, int level, Otc::SpeakTy
void Game::processOpenContainer(int containerId, const ItemPtr& containerItem, const std::string& name, int capacity, bool hasParent, const std::vector<ItemPtr>& items)
{
ContainerPtr previousContainer = getContainer(containerId);
ContainerPtr container = ContainerPtr(new Container());
container->setId(containerId);
container->setCapacity(capacity);
container->setName(name);
container->setContainerItem(containerItem);
container->setHasParent(hasParent);
ContainerPtr container = ContainerPtr(new Container(containerId, capacity, name, containerItem, hasParent));
m_containers[containerId] = container;
container->onAddItems(items);

View File

@ -187,21 +187,16 @@ void OTClient::registerLuaFunctions()
g_lua.bindClassMemberFunction<ProtocolGame>("getPosition", &ProtocolGame::getPosition);
g_lua.registerClass<Container>();
g_lua.bindClassStaticFunction<Container>("create", []{ return ContainerPtr(new Container); });
g_lua.bindClassMemberFunction<Container>("getItem", &Container::getItem);
g_lua.bindClassMemberFunction<Container>("getItems", &Container::getItems);
g_lua.bindClassMemberFunction<Container>("getItemsCount", &Container::getItemsCount);
g_lua.bindClassMemberFunction<Container>("getSlotPosition", &Container::getSlotPosition);
g_lua.bindClassMemberFunction<Container>("setId", &Container::setId);
g_lua.bindClassMemberFunction<Container>("setCapacity", &Container::setCapacity);
g_lua.bindClassMemberFunction<Container>("setName", &Container::setName);
g_lua.bindClassMemberFunction<Container>("setContainerItem", &Container::setContainerItem);
g_lua.bindClassMemberFunction<Container>("setHasParent", &Container::setHasParent);
g_lua.bindClassMemberFunction<Container>("getName", &Container::getName);
g_lua.bindClassMemberFunction<Container>("getId", &Container::getId);
g_lua.bindClassMemberFunction<Container>("getCapacity", &Container::getCapacity);
g_lua.bindClassMemberFunction<Container>("getItemsCount", &Container::getItemsCount);
g_lua.bindClassMemberFunction<Container>("getContainerItem", &Container::getContainerItem);
g_lua.bindClassMemberFunction<Container>("hasParent", &Container::hasParent);
g_lua.bindClassMemberFunction<Container>("isClosed", &Container::isClosed);
g_lua.registerClass<Thing>();
g_lua.bindClassMemberFunction<Thing>("setId", &Thing::setId);