Planeshift

pawsslot.h

Go to the documentation of this file.
00001 #ifndef PAWS_SLOT_HEADER
00002 #define PAWS_SLOT_HEADER
00003 
00004 
00005 #include "paws/pawswidget.h"
00006 
00007 //=============================================================================
00008 // Forward Declarations
00009 //=============================================================================
00010 class psSlotManager;
00011 class pawsTextBox;
00012 
00013 
00014 //=============================================================================
00015 // Classes
00016 //=============================================================================
00017 
00018 
00019 class pawsSlot : public pawsWidget
00020 {
00021 public:
00022     pawsSlot();
00023     ~pawsSlot();
00024 
00025     void SetDrag( bool isDragDrop ) { dragDrop = isDragDrop; }
00026     void SetEmptyOnZeroCount( bool emptyOnZeroCount ) { this->emptyOnZeroCount = emptyOnZeroCount; }
00027     bool Setup( iDocumentNode* node );
00028     void SetContainer( int id ) { containerID  = id; }
00029 
00030     bool OnMouseDown( int button, int modifiers, int x, int y );
00031     void Draw();
00032     void SetToolTip( const char* text );
00033 
00034     int StackCount() { return stackCount; }
00035     void StackCount( int newCount );
00036 
00037     int GetPurifyStatus();
00038     void SetPurifyStatus(int status);
00039 
00040     void PlaceItem( const char* imageName, const char* meshFactName,
00041         const char* matName = NULL, int count = 0 );
00042     iPawsImage* Image() { return image; }
00043     const char *ImageName();
00044 
00045     const char *GetMeshFactName()
00046     {
00047         return meshfactName;
00048     }
00049 
00050     const char *GetMaterialName()
00051     {
00052         return materialName;
00053     }
00054 
00055     const csString & SlotName() const { return slotName; }
00056     void SetSlotName(const csString & name) { slotName = name; }
00057 
00058     int ContainerID() { return containerID; };
00059     int ID() { return slotID; }
00060     void SetSlotID( int id ) { slotID = id; }
00061 
00062     virtual void Clear();
00063     bool IsEmpty() { if(!reserved) return empty; else return false; }
00064 
00065     void Reserve() { reserved = true; }
00066 
00070     void DrawStackCount(bool value);
00071 
00075     bool IsDrawingStackCount()  { return drawStackCount; }
00076 
00077     bool SelfPopulate( iDocumentNode *node);
00078 
00079     void OnUpdateData(const char *dataname,PAWSData& value);
00080 
00081     void ScalePurifyStatus();
00082 
00083     bool IsBartender() { return isBartender; }
00084     void SetBartender( bool t) { isBartender = t; }
00085 
00086     void SetBartenderAction(csString& act) { action = act; }
00087     csString &GetAction() { return action; }
00088     void clearBartenderAction() { action.Empty(); }
00089 
00090     bool GetLock() { return locked; }
00091     void SetLock( bool state ) { locked = state; }
00092 protected:
00093     psSlotManager*   mgr;
00094     csString         meshfactName;
00095     csString         materialName;
00096     csString         slotName;
00097     int              containerID;
00098     int              slotID;
00099     int              stackCount;
00100     int              purifyStatus;
00101     bool empty;
00102     bool dragDrop;
00103     bool drawStackCount;
00104     bool reserved;      
00105     bool locked;
00106 
00107     csRef<iPawsImage> image;
00108     pawsWidget* purifySign;
00109     pawsTextBox* stackCountLabel;
00110     bool handleMouseClicks;
00111     bool emptyOnZeroCount;      
00112 
00113     bool isBartender;       
00114     csString action;        
00115 };
00116 
00117 CREATE_PAWS_FACTORY( pawsSlot );
00118 
00119 #endif
00120