X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=src%2Fhud.h;h=173633fcc824283bd34f0ad1de45da5881dc9249;hb=8d387433b14791db95e59127b5e6e30f58155c1e;hp=54b7e7f36e2e84879debbf517740244893918afb;hpb=ab433775777c4f5055bcf4d2a1cffc506c4f9961;p=dragonfireclient.git diff --git a/src/hud.h b/src/hud.h index 54b7e7f36..173633fcc 100644 --- a/src/hud.h +++ b/src/hud.h @@ -1,6 +1,7 @@ /* Minetest Copyright (C) 2010-2013 kwolekr, Ryan Kwolek +Copyright (C) 2017 red-001 This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by @@ -17,10 +18,11 @@ with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ -#ifndef HUD_HEADER -#define HUD_HEADER +#pragma once #include "irrlichttypes_extrabloated.h" +#include +#include "common/c_types.h" #define HUD_DIR_LEFT_RIGHT 0 #define HUD_DIR_RIGHT_LEFT 1 @@ -31,18 +33,40 @@ with this program; if not, write to the Free Software Foundation, Inc., #define HUD_CORNER_LOWER 1 #define HUD_CORNER_CENTER 2 -#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_STYLE_BOLD 1 +#define HUD_STYLE_ITALIC 2 +#define HUD_STYLE_MONO 4 -class Player; +// Note that these visibility flags do not determine if the hud items are +// actually drawn, but rather, whether to draw the item should the rest +// of the game state permit it. +#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_FLAG_MINIMAP_VISIBLE (1 << 5) +#define HUD_FLAG_MINIMAP_RADAR_VISIBLE (1 << 6) +#define HUD_FLAG_BASIC_DEBUG (1 << 7) + +#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 32 + +#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, + HUD_ELEM_IMAGE_WAYPOINT = 5, + HUD_ELEM_COMPASS = 6, + HUD_ELEM_MINIMAP = 7 }; enum HudElementStat { @@ -54,7 +78,19 @@ enum HudElementStat { HUD_STAT_ITEM, HUD_STAT_DIR, HUD_STAT_ALIGN, - HUD_STAT_OFFSET + HUD_STAT_OFFSET, + HUD_STAT_WORLD_POS, + HUD_STAT_SIZE, + HUD_STAT_Z_INDEX, + HUD_STAT_TEXT2, + HUD_STAT_STYLE, +}; + +enum HudCompassDir { + HUD_COMPASS_ROTATE = 0, + HUD_COMPASS_ROTATE_REVERSE, + HUD_COMPASS_TRANSLATE, + HUD_COMPASS_TRANSLATE_REVERSE, }; struct HudElement { @@ -68,63 +104,23 @@ struct HudElement { u32 dir; v2f align; v2f offset; + v3f world_pos; + v2s32 size; + s16 z_index = 0; + std::string text2; + u32 style; }; +extern const EnumString es_HudElementType[]; +extern const EnumString es_HudElementStat[]; +extern const EnumString es_HudBuiltinElement[]; -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 - -#include "gamedef.h" -#include "inventory.h" -#include "localplayer.h" - -class Hud { -public: - video::IVideoDriver *driver; - gui::IGUIEnvironment *guienv; - gui::IGUIFont *font; - u32 text_height; - 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, - 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); - - void drawHotbar(v2s32 centerlowerpos, s32 halfheartcount, u16 playeritem); - void resizeHotbar(); - - void drawCrosshair(); - void drawSelectionBoxes(std::vector &hilightboxes); -}; +// Minimap stuff -#endif +enum MinimapType { + MINIMAP_TYPE_OFF, + MINIMAP_TYPE_SURFACE, + MINIMAP_TYPE_RADAR, + MINIMAP_TYPE_TEXTURE, +}; -#endif