X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=src%2Fhud.h;h=2e6838eb108288e4b67289c3ff9bcb7e5808adfe;hb=718bcafd5174690a7731f9b04873e9a09f7a47b7;hp=92ee9a62c3940924408b9910cd60d5ad36a44fb7;hpb=439079cad8f15028fffebb05aed5ae6c0da9bfab;p=minetest.git diff --git a/src/hud.h b/src/hud.h index 92ee9a62c..2e6838eb1 100644 --- a/src/hud.h +++ b/src/hud.h @@ -39,15 +39,21 @@ with this program; if not, write to the Free Software Foundation, Inc., #define HUD_FLAG_BREATHBAR_VISIBLE (1 << 4) #define HUD_PARAM_HOTBAR_ITEMCOUNT 1 +#define HUD_PARAM_HOTBAR_IMAGE 2 +#define HUD_PARAM_HOTBAR_SELECTED_IMAGE 3 #define HUD_HOTBAR_ITEMCOUNT_DEFAULT 8 #define HUD_HOTBAR_ITEMCOUNT_MAX 23 + +#define HOTBAR_IMAGE_SIZE 48 + enum HudElementType { HUD_ELEM_IMAGE = 0, HUD_ELEM_TEXT = 1, HUD_ELEM_STATBAR = 2, - HUD_ELEM_INVENTORY = 3 + HUD_ELEM_INVENTORY = 3, + HUD_ELEM_WAYPOINT = 4, }; enum HudElementStat { @@ -59,7 +65,9 @@ enum HudElementStat { HUD_STAT_ITEM, HUD_STAT_DIR, HUD_STAT_ALIGN, - HUD_STAT_OFFSET + HUD_STAT_OFFSET, + HUD_STAT_WORLD_POS, + HUD_STAT_SIZE }; struct HudElement { @@ -73,6 +81,8 @@ struct HudElement { u32 dir; v2f align; v2f offset; + v3f world_pos; + v2s32 size; }; #ifndef SERVER @@ -91,39 +101,45 @@ struct ItemStack; class Hud { public: video::IVideoDriver *driver; + scene::ISceneManager* smgr; gui::IGUIEnvironment *guienv; - gui::IGUIFont *font; - u32 text_height; IGameDef *gamedef; LocalPlayer *player; Inventory *inventory; ITextureSource *tsrc; - v2u32 screensize; - v2s32 displaycenter; - s32 hotbar_imagesize; - video::SColor crosshair_argb; video::SColor selectionbox_argb; bool use_crosshair_image; - bool use_hotbar_border_img; - bool use_hotbar_bg_img; + std::string hotbar_image; + bool use_hotbar_image; + std::string hotbar_selected_image; + bool use_hotbar_selected_image; + v3s16 camera_offset; - Hud(video::IVideoDriver *driver, gui::IGUIEnvironment* guienv, - gui::IGUIFont *font, u32 text_height, IGameDef *gamedef, - LocalPlayer *player, Inventory *inventory); - - void drawItem(v2s32 upperleftpos, s32 imgsize, s32 itemcount, - InventoryList *mainlist, u16 selectitem, u16 direction); - void drawLuaElements(); - void drawStatbar(v2s32 pos, u16 corner, u16 drawdir, - std::string texture, s32 count, v2s32 offset); + Hud(video::IVideoDriver *driver,scene::ISceneManager* smgr, + gui::IGUIEnvironment* guienv, IGameDef *gamedef, LocalPlayer *player, + Inventory *inventory); - void drawHotbar(v2s32 centerlowerpos, s32 halfheartcount, u16 playeritem, s32 breath); + void drawHotbar(u16 playeritem); void resizeHotbar(); - void drawCrosshair(); void drawSelectionBoxes(std::vector &hilightboxes); + void drawLuaElements(v3s16 camera_offset); +private: + void drawStatbar(v2s32 pos, u16 corner, u16 drawdir, std::string texture, + s32 count, v2s32 offset, v2s32 size=v2s32()); + + void drawItems(v2s32 upperleftpos, s32 itemcount, s32 offset, + InventoryList *mainlist, u16 selectitem, u16 direction); + + void drawItem(const ItemStack &item, const core::rect& rect, bool selected); + + v2u32 m_screensize; + v2s32 m_displaycenter; + s32 m_hotbar_imagesize; + s32 m_padding; + video::SColor hbar_colors[4]; }; void drawItemStack(video::IVideoDriver *driver,