]> git.lizzy.rs Git - minetest.git/blobdiff - src/hud.h
Don't use msvc libs for mingw build
[minetest.git] / src / hud.h
index 405e911760c9f567f96854dfd1dde970ad221b89..c69867a23506b7123f8d9dfcc6889666a4ec5cd7 100644 (file)
--- a/src/hud.h
+++ b/src/hud.h
@@ -21,6 +21,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
 #define HUD_HEADER
 
 #include "irrlichttypes_extrabloated.h"
+#include <string>
 
 #define HUD_DIR_LEFT_RIGHT 0
 #define HUD_DIR_RIGHT_LEFT 1
@@ -35,8 +36,14 @@ with this program; if not, write to the Free Software Foundation, Inc.,
 #define HUD_FLAG_HEALTHBAR_VISIBLE (1 << 1)
 #define HUD_FLAG_CROSSHAIR_VISIBLE (1 << 2)
 #define HUD_FLAG_WIELDITEM_VISIBLE (1 << 3)
+#define HUD_FLAG_BREATHBAR_VISIBLE (1 << 4)
 
-class Player;
+#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
 
 enum HudElementType {
        HUD_ELEM_IMAGE     = 0,
@@ -46,7 +53,7 @@ enum HudElementType {
 };
 
 enum HudElementStat {
-       HUD_STAT_POS,
+       HUD_STAT_POS = 0,
        HUD_STAT_NAME,
        HUD_STAT_SCALE,
        HUD_STAT_TEXT,
@@ -70,25 +77,18 @@ struct HudElement {
        v2f offset;
 };
 
-
-inline u32 hud_get_free_id(Player *player) {
-       size_t size = player->hud.size();
-       for (size_t i = 0; i != size; i++) {
-               if (!player->hud[i])
-                       return i;
-       }
-       return size;
-}
-
 #ifndef SERVER
 
-#include <deque>
-
+#include <vector>
 #include <IGUIFont.h>
+#include "irr_aabb3d.h"
 
-#include "gamedef.h"
-#include "inventory.h"
-#include "localplayer.h"
+class IGameDef;
+class ITextureSource;
+class Inventory;
+class InventoryList;
+class LocalPlayer;
+struct ItemStack;
 
 class Hud {
 public:
@@ -99,14 +99,19 @@ class Hud {
        IGameDef *gamedef;
        LocalPlayer *player;
        Inventory *inventory;
+       ITextureSource *tsrc;
 
        v2u32 screensize;
        v2s32 displaycenter;
        s32 hotbar_imagesize;
-       s32 hotbar_itemcount;
        
        video::SColor crosshair_argb;
        video::SColor selectionbox_argb;
+       bool use_crosshair_image;
+       std::string hotbar_image;
+       bool use_hotbar_image;
+       std::string hotbar_selected_image;
+       bool use_hotbar_selected_image;
        
        Hud(video::IVideoDriver *driver, gui::IGUIEnvironment* guienv,
                gui::IGUIFont *font, u32 text_height, IGameDef *gamedef,
@@ -118,13 +123,21 @@ class Hud {
        void drawStatbar(v2s32 pos, u16 corner, u16 drawdir,
                                         std::string texture, s32 count, v2s32 offset);
        
-       void drawHotbar(v2s32 centerlowerpos, s32 halfheartcount, u16 playeritem);
+       void drawHotbar(v2s32 centerlowerpos, s32 halfheartcount, u16 playeritem, s32 breath);
        void resizeHotbar();
        
        void drawCrosshair();
        void drawSelectionBoxes(std::vector<aabb3f> &hilightboxes);
 };
 
+void drawItemStack(video::IVideoDriver *driver,
+               gui::IGUIFont *font,
+               const ItemStack &item,
+               const core::rect<s32> &rect,
+               const core::rect<s32> *clip,
+               IGameDef *gamedef);
+
+
 #endif
 
 #endif