]> git.lizzy.rs Git - minetest.git/blobdiff - src/guiFormSpecMenu.h
FormSpec: Add StaticTextSpec and superimpose over item image buttons
[minetest.git] / src / guiFormSpecMenu.h
index 2ba47f7ff5bac5c60648465886cfd4daec20f959..0677e87a690de54e43caacc879675125df8ec395 100644 (file)
@@ -143,21 +143,32 @@ class GUIFormSpecMenu : public GUIModalMenu
                {
                }
                ImageDrawSpec(const std::string &a_name,
-                               v2s32 a_pos, v2s32 a_geom):
+                               const std::string &a_item_name,
+                               const v2s32 &a_pos, const v2s32 &a_geom):
                        name(a_name),
+                       item_name (a_item_name),
                        pos(a_pos),
                        geom(a_geom)
                {
                        scale = true;
                }
                ImageDrawSpec(const std::string &a_name,
-                               v2s32 a_pos):
+                               const v2s32 &a_pos, const v2s32 &a_geom):
+                       name(a_name),
+                       pos(a_pos),
+                       geom(a_geom)
+               {
+                       scale = true;
+               }
+               ImageDrawSpec(const std::string &a_name,
+                               const v2s32 &a_pos):
                        name(a_name),
                        pos(a_pos)
                {
                        scale = false;
                }
                std::string name;
+               std::string item_name;
                v2s32 pos;
                v2s32 geom;
                bool scale;
@@ -217,6 +228,20 @@ class GUIFormSpecMenu : public GUIModalMenu
                irr::video::SColor color;
        };
 
+       struct StaticTextSpec {
+               StaticTextSpec()
+               {
+               }
+               StaticTextSpec(const std::wstring &a_text,
+                               const core::rect<s32> &a_rect):
+                       text(a_text),
+                       rect(a_rect)
+               {
+               }
+               std::wstring text;
+               core::rect<s32> rect;
+       };
+
 public:
        GUIFormSpecMenu(irr::IrrlichtDevice* dev,
                        gui::IGUIElement* parent, s32 id,
@@ -282,7 +307,7 @@ class GUIFormSpecMenu : public GUIModalMenu
        void regenerateGui(v2u32 screensize);
 
        ItemSpec getItemAtPos(v2s32 p) const;
-       void drawList(const ListDrawSpec &s, int phase);
+       void drawList(const ListDrawSpec &s, int phase, bool &item_hovered);
        void drawSelectedItem();
        void drawMenu();
        void updateSelectedItem();
@@ -328,12 +353,15 @@ class GUIFormSpecMenu : public GUIModalMenu
        std::vector<ImageDrawSpec> m_itemimages;
        std::vector<BoxDrawSpec> m_boxes;
        std::vector<FieldSpec> m_fields;
+       std::vector<StaticTextSpec> m_static_texts;
        std::vector<std::pair<FieldSpec,GUITable*> > m_tables;
        std::vector<std::pair<FieldSpec,gui::IGUICheckBox*> > m_checkboxes;
        std::map<std::string, TooltipSpec> m_tooltips;
        std::vector<std::pair<FieldSpec,gui::IGUIScrollBar*> > m_scrollbars;
 
        ItemSpec *m_selected_item;
+       f32 m_timer1;
+       f32 m_timer2;
        u32 m_selected_amount;
        bool m_selected_dragging;
 
@@ -373,6 +401,7 @@ class GUIFormSpecMenu : public GUIModalMenu
        TextDest         *m_text_dst;
        unsigned int      m_formspec_version;
        std::string       m_focused_element;
+       bool              m_selection_active;
 
        typedef struct {
                bool explicit_size;