X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=src%2FguiFormSpecMenu.h;h=95df11e6a1bfa17b93a28e914016168a2f35e2bd;hb=bb9fe6eb2b32548e66d62b64e949b058ec7856fc;hp=d06aa6cf5c319d468a12f0322d5458d7fd501ff3;hpb=e10fee00011f6c1ef8ee5b884adb11013954a1c9;p=dragonfireclient.git diff --git a/src/guiFormSpecMenu.h b/src/guiFormSpecMenu.h index d06aa6cf5..95df11e6a 100644 --- a/src/guiFormSpecMenu.h +++ b/src/guiFormSpecMenu.h @@ -22,6 +22,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #define GUIINVENTORYMENU_HEADER #include +#include #include "irrlichttypes_extrabloated.h" #include "inventory.h" @@ -143,9 +144,10 @@ class GUIFormSpecMenu : public GUIModalMenu struct ImageDrawSpec { ImageDrawSpec(): - parent_button(NULL) - { - } + parent_button(NULL), + clip(false) + {} + ImageDrawSpec(const std::string &a_name, const std::string &a_item_name, gui::IGUIButton *a_parent_button, @@ -155,9 +157,10 @@ class GUIFormSpecMenu : public GUIModalMenu parent_button(a_parent_button), pos(a_pos), geom(a_geom), - scale(true) - { - } + scale(true), + clip(false) + {} + ImageDrawSpec(const std::string &a_name, const std::string &a_item_name, const v2s32 &a_pos, const v2s32 &a_geom): @@ -166,32 +169,36 @@ class GUIFormSpecMenu : public GUIModalMenu parent_button(NULL), pos(a_pos), geom(a_geom), - scale(true) - { - } + scale(true), + clip(false) + {} + ImageDrawSpec(const std::string &a_name, - const v2s32 &a_pos, const v2s32 &a_geom): + const v2s32 &a_pos, const v2s32 &a_geom, bool clip=false): name(a_name), parent_button(NULL), pos(a_pos), geom(a_geom), - scale(true) - { - } + scale(true), + clip(clip) + {} + ImageDrawSpec(const std::string &a_name, const v2s32 &a_pos): name(a_name), parent_button(NULL), pos(a_pos), - scale(false) - { - } + scale(false), + clip(false) + {} + std::string name; std::string item_name; gui::IGUIButton *parent_button; v2s32 pos; v2s32 geom; bool scale; + bool clip; }; struct FieldSpec @@ -205,7 +212,6 @@ class GUIFormSpecMenu : public GUIModalMenu flabel(label), fid(id), send(false), - close_on_enter(false), ftype(f_Unknown), is_exit(false) { @@ -217,7 +223,6 @@ class GUIFormSpecMenu : public GUIModalMenu std::wstring fdefault; int fid; bool send; - bool close_on_enter; // used by text fields FormspecFieldType ftype; bool is_exit; core::rect rect; @@ -374,6 +379,8 @@ class GUIFormSpecMenu : public GUIModalMenu v2s32 spacing; v2s32 imgsize; v2s32 offset; + v2s32 pos_offset; + std::stack container_stack; irr::IrrlichtDevice* m_device; InventoryManager *m_invmgr; @@ -391,6 +398,7 @@ class GUIFormSpecMenu : public GUIModalMenu std::vector m_images; std::vector m_itemimages; std::vector m_boxes; + UNORDERED_MAP field_close_on_enter; std::vector m_fields; std::vector m_static_texts; std::vector > m_tables; @@ -400,8 +408,6 @@ class GUIFormSpecMenu : public GUIModalMenu std::vector > > m_dropdowns; ItemSpec *m_selected_item; - f32 m_timer1; - f32 m_timer2; u32 m_selected_amount; bool m_selected_dragging; @@ -428,7 +434,6 @@ class GUIFormSpecMenu : public GUIModalMenu bool m_bgfullscreen; bool m_slotborder; - bool m_clipbackground; video::SColor m_bgcolor; video::SColor m_slotbg_n; video::SColor m_slotbg_h; @@ -454,7 +459,7 @@ class GUIFormSpecMenu : public GUIModalMenu GUITable::TableOptions table_options; GUITable::TableColumns table_columns; // used to restore table selection/scroll/treeview state - std::map table_dyndata; + UNORDERED_MAP table_dyndata; } parserData; typedef struct { @@ -467,13 +472,15 @@ class GUIFormSpecMenu : public GUIModalMenu fs_key_pendig current_keys_pending; std::string current_field_enter_pending; - void parseElement(parserData* data,std::string element); + void parseElement(parserData* data, std::string element); - void parseSize(parserData* data,std::string element); - void parseList(parserData* data,std::string element); - void parseListRing(parserData* data,std::string element); - void parseCheckbox(parserData* data,std::string element); - void parseImage(parserData* data,std::string element); + void parseSize(parserData* data, std::string element); + void parseContainer(parserData* data, std::string element); + void parseContainerEnd(parserData* data); + void parseList(parserData* data, std::string element); + void parseListRing(parserData* data, std::string element); + void parseCheckbox(parserData* data, std::string element); + void parseImage(parserData* data, std::string element); void parseItemImage(parserData* data,std::string element); void parseButton(parserData* data,std::string element,std::string typ); void parseBackground(parserData* data,std::string element); @@ -482,6 +489,7 @@ class GUIFormSpecMenu : public GUIModalMenu void parseTable(parserData* data,std::string element); void parseTextList(parserData* data,std::string element); void parseDropDown(parserData* data,std::string element); + void parseFieldCloseOnEnter(parserData *data, const std::string &element); void parsePwdField(parserData* data,std::string element); void parseField(parserData* data,std::string element,std::string type); void parseSimpleField(parserData* data,std::vector &parts);