00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef CONTAINERGUMP_H
00020 #define CONTAINERGUMP_H
00021
00022 #include "ItemRelativeGump.h"
00023
00024 class Shape;
00025 class Container;
00026
00027 class ContainerGump : public ItemRelativeGump
00028 {
00029 public:
00030 ENABLE_RUNTIME_CLASSTYPE();
00031
00032 ContainerGump();
00033 ContainerGump(Shape* shape, uint32 framenum, uint16 owner,
00034 uint32 _Flags = FLAG_DRAGGABLE, sint32 layer = LAYER_NORMAL);
00035 virtual ~ContainerGump(void);
00036
00037 void setItemArea(Pentagram::Rect* itemarea_) { itemarea = *itemarea_; }
00038
00039
00040 virtual void Close(bool no_del = false);
00041
00042
00043 virtual void InitGump(Gump* newparent, bool take_focus=true);
00044
00045
00046 virtual void PaintThis(RenderSurface*, sint32 lerp_factor, bool scaled);
00047
00048
00049 virtual uint16 TraceObjId(int mx, int my);
00050
00051
00052
00053 virtual bool GetLocationOfItem(uint16 itemid, int &gx, int &gy,
00054 sint32 lerp_factor = 256);
00055
00056
00057 virtual bool StartDraggingItem(Item* item, int mx, int my);
00058 virtual bool DraggingItem(Item* item, int mx, int my);
00059 virtual void DraggingItemLeftGump(Item* item);
00060 virtual void StopDraggingItem(Item* item, bool moved);
00061 virtual void DropItem(Item* item, int mx, int my);
00062
00063 virtual Gump* OnMouseDown(int button, int mx, int my);
00064 virtual void OnMouseClick(int button, int mx, int my);
00065 virtual void OnMouseDouble(int button, int mx, int my);
00066
00067 bool loadData(IDataSource* ids, uint32 version);
00068 protected:
00069 virtual void saveData(ODataSource* ods);
00070
00071 virtual void GetItemLocation(sint32 lerp_factor);
00072
00073 virtual Container* getTargetContainer(Item* item, int mx, int my);
00074
00075 void getItemCoords(Item* item, sint32& itemx, sint32& itemy);
00076
00077 Pentagram::Rect itemarea;
00078
00079 bool display_dragging;
00080 uint32 dragging_shape;
00081 uint32 dragging_frame;
00082 uint32 dragging_flags;
00083 sint32 dragging_x, dragging_y;
00084 };
00085
00086 #endif