1
0
mirror of https://gitlab.com/OpenMW/openmw.git synced 2025-01-26 18:35:20 +00:00
OpenMW/apps/openmw/mwgui/container.hpp

124 lines
3.0 KiB
C++
Raw Normal View History

2012-04-15 17:52:39 +02:00
#ifndef MGUI_CONTAINER_H
#define MGUI_CONTAINER_H
#include <components/esm_store/store.hpp>
#include "../mwclass/container.hpp"
#include <sstream>
#include <set>
#include <string>
#include <utility>
#include "window_base.hpp"
#include "../mwworld/ptr.hpp"
#include "../mwworld/containerstore.hpp"
2012-05-06 11:04:07 +02:00
#include <vector>
2012-04-15 17:52:39 +02:00
namespace MWWorld
{
class Environment;
}
namespace MyGUI
{
2012-04-30 13:01:18 +02:00
class Gui;
class Widget;
2012-04-15 17:52:39 +02:00
}
namespace MWGui
{
class WindowManager;
2012-04-30 13:01:18 +02:00
class ContainerWindow;
2012-05-12 13:12:37 +02:00
class ContainerBase;
2012-04-15 17:52:39 +02:00
}
namespace MWGui
{
2012-04-30 13:01:18 +02:00
class DragAndDrop
{
public:
bool mIsOnDragAndDrop;
MyGUI::Widget* mDraggedWidget;
MyGUI::Widget* mDragAndDropWidget;
ContainerBase* mDraggedFrom;
int mDraggedCount;
2012-04-30 13:01:18 +02:00
};
2012-04-15 17:52:39 +02:00
2012-05-12 22:44:12 +02:00
class ContainerBase
2012-04-15 17:52:39 +02:00
{
2012-04-30 13:01:18 +02:00
public:
2012-05-12 22:44:12 +02:00
ContainerBase(DragAndDrop* dragAndDrop);
2012-05-12 13:12:37 +02:00
virtual ~ContainerBase();
2012-04-15 17:52:39 +02:00
2012-05-12 21:28:04 +02:00
enum Filter
{
Filter_All = 0x01,
Filter_Weapon = 0x02,
Filter_Apparel = 0x03,
Filter_Magic = 0x04,
Filter_Misc = 0x05
};
enum ItemState
{
ItemState_Normal = 0x01,
ItemState_Equipped = 0x02,
// unimplemented
ItemState_Barter = 0x03
};
2012-05-12 22:44:12 +02:00
void setWidgets(MyGUI::Widget* containerWidget, MyGUI::ScrollView* itemView); ///< only call once
void openContainer(MWWorld::Ptr container);
2012-05-12 21:28:04 +02:00
void setFilter(Filter filter); ///< set category filter
2012-05-15 23:28:04 +02:00
virtual void Update();
void drawItems();
2012-05-15 22:45:46 +02:00
virtual void notifyContentChanged() { }
2012-04-15 17:52:39 +02:00
2012-05-12 13:12:37 +02:00
protected:
MyGUI::ScrollView* mItemView;
MyGUI::Widget* mContainerWidget;
MyGUI::Widget* mSelectedItem;
2012-05-12 13:12:37 +02:00
DragAndDrop* mDragAndDrop;
MWWorld::Ptr mContainer;
2012-05-12 21:28:04 +02:00
Filter mFilter;
2012-05-12 20:35:50 +02:00
2012-05-12 13:12:37 +02:00
void onSelectedItem(MyGUI::Widget* _sender);
void onSelectedItemImpl(MyGUI::Widget* _sender, int count);
2012-05-12 13:12:37 +02:00
void onContainerClicked(MyGUI::Widget* _sender);
void onMouseWheel(MyGUI::Widget* _sender, int _rel);
2012-05-12 13:12:37 +02:00
std::string getCountString(const int count);
virtual bool isInventory() { return false; }
virtual std::vector<MWWorld::Ptr> getEquippedItems() { return std::vector<MWWorld::Ptr>(); }
virtual void _unequipItem(MWWorld::Ptr item) { ; }
virtual bool ignoreEquippedItems() { return false; }
virtual std::vector<MWWorld::Ptr> itemsToIgnore() { return std::vector<MWWorld::Ptr>(); }
2012-05-12 13:12:37 +02:00
};
2012-05-12 22:44:12 +02:00
class ContainerWindow : public ContainerBase, public WindowBase
2012-05-12 13:12:37 +02:00
{
public:
ContainerWindow(WindowManager& parWindowManager,DragAndDrop* dragAndDrop);
2012-04-30 13:01:18 +02:00
virtual ~ContainerWindow();
2012-04-15 17:52:39 +02:00
2012-05-12 22:44:12 +02:00
void open(MWWorld::Ptr container);
2012-04-30 13:01:18 +02:00
protected:
2012-05-12 13:12:37 +02:00
MyGUI::Button* mTakeButton;
MyGUI::Button* mCloseButton;
2012-04-15 17:52:39 +02:00
2012-05-12 13:46:03 +02:00
void onWindowResize(MyGUI::Window* window);
2012-05-11 16:34:36 +02:00
void onCloseButtonClicked(MyGUI::Widget* _sender);
2012-05-11 16:58:07 +02:00
void onTakeAllButtonClicked(MyGUI::Widget* _sender);
2012-04-15 17:52:39 +02:00
};
}
#endif // CONTAINER_H