Add Lua on_mapgen_init callback, and minetest.set_mapgen_params API
[oweals/minetest.git] / src / hud.h
index e0d7ccd6f6a60ad25b37421d933e45ce655f87c8..c7289f7c4f79244b963f17cd6ef00266c3c960f0 100644 (file)
--- a/src/hud.h
+++ b/src/hud.h
@@ -31,10 +31,16 @@ with this program; if not, write to the Free Software Foundation, Inc.,
 #define HUD_CORNER_LOWER  1
 #define HUD_CORNER_CENTER 2
 
-#define HUD_DRAW_HOTBAR (1 << 0)
-#define HUD_DRAW_HEALTHBAR (1 << 1)
-#define HUD_DRAW_CROSSHAIR (1 << 2)
-#define HUD_DRAW_WIELDITEM (1 << 3)
+#define HUD_FLAG_HOTBAR_VISIBLE    (1 << 0)
+#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)
+
+#define HUD_PARAM_HOTBAR_ITEMCOUNT 1
+
+#define HUD_HOTBAR_ITEMCOUNT_DEFAULT 8
+#define HUD_HOTBAR_ITEMCOUNT_MAX     23
 
 class Player;
 
@@ -46,7 +52,7 @@ enum HudElementType {
 };
 
 enum HudElementStat {
-       HUD_STAT_POS,
+       HUD_STAT_POS = 0,
        HUD_STAT_NAME,
        HUD_STAT_SCALE,
        HUD_STAT_TEXT,
@@ -71,14 +77,6 @@ struct HudElement {
 };
 
 
-enum HudBuiltinElement {
-       HUD_BUILTIN_HOTBAR = 0,
-       HUD_BUILTIN_HEALTHBAR,
-       HUD_BUILTIN_CROSSHAIR,
-       HUD_BUILTIN_WIELDITEM
-};
-
-
 inline u32 hud_get_free_id(Player *player) {
        size_t size = player->hud.size();
        for (size_t i = 0; i != size; i++) {
@@ -90,8 +88,6 @@ inline u32 hud_get_free_id(Player *player) {
 
 #ifndef SERVER
 
-#include <deque>
-
 #include <IGUIFont.h>
 
 #include "gamedef.h"
@@ -107,14 +103,15 @@ public:
        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;
        
        Hud(video::IVideoDriver *driver, gui::IGUIEnvironment* guienv,
                gui::IGUIFont *font, u32 text_height, IGameDef *gamedef,
@@ -123,9 +120,10 @@ public:
        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);
+       void drawStatbar(v2s32 pos, u16 corner, u16 drawdir,
+                                        std::string texture, s32 count, v2s32 offset);
        
-       void drawHotbar(v2s32 centerlowerpos, s32 halfheartcount, u16 playeritem, u32 flags);
+       void drawHotbar(v2s32 centerlowerpos, s32 halfheartcount, u16 playeritem, s32 breath);
        void resizeHotbar();
        
        void drawCrosshair();