1 /* 2 Minetest 3 Copyright (C) 2010-2013 kwolekr, Ryan Kwolek <kwolekr@minetest.net> 4 Copyright (C) 2017 red-001 <red-001@outlook.ie> 5 6 This program is free software; you can redistribute it and/or modify 7 it under the terms of the GNU Lesser General Public License as published by 8 the Free Software Foundation; either version 2.1 of the License, or 9 (at your option) any later version. 10 11 This program is distributed in the hope that it will be useful, 12 but WITHOUT ANY WARRANTY; without even the implied warranty of 13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 GNU Lesser General Public License for more details. 15 16 You should have received a copy of the GNU Lesser General Public License along 17 with this program; if not, write to the Free Software Foundation, Inc., 18 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 19 */ 20 21 #pragma once 22 23 #include "irrlichttypes_extrabloated.h" 24 #include <string> 25 #include "common/c_types.h" 26 27 #define HUD_DIR_LEFT_RIGHT 0 28 #define HUD_DIR_RIGHT_LEFT 1 29 #define HUD_DIR_TOP_BOTTOM 2 30 #define HUD_DIR_BOTTOM_TOP 3 31 32 #define HUD_CORNER_UPPER 0 33 #define HUD_CORNER_LOWER 1 34 #define HUD_CORNER_CENTER 2 35 36 // Note that these visibility flags do not determine if the hud items are 37 // actually drawn, but rather, whether to draw the item should the rest 38 // of the game state permit it. 39 #define HUD_FLAG_HOTBAR_VISIBLE (1 << 0) 40 #define HUD_FLAG_HEALTHBAR_VISIBLE (1 << 1) 41 #define HUD_FLAG_CROSSHAIR_VISIBLE (1 << 2) 42 #define HUD_FLAG_WIELDITEM_VISIBLE (1 << 3) 43 #define HUD_FLAG_BREATHBAR_VISIBLE (1 << 4) 44 #define HUD_FLAG_MINIMAP_VISIBLE (1 << 5) 45 #define HUD_FLAG_MINIMAP_RADAR_VISIBLE (1 << 6) 46 47 #define HUD_PARAM_HOTBAR_ITEMCOUNT 1 48 #define HUD_PARAM_HOTBAR_IMAGE 2 49 #define HUD_PARAM_HOTBAR_SELECTED_IMAGE 3 50 51 #define HUD_HOTBAR_ITEMCOUNT_DEFAULT 8 52 #define HUD_HOTBAR_ITEMCOUNT_MAX 32 53 54 #define HOTBAR_IMAGE_SIZE 48 55 56 enum HudElementType { 57 HUD_ELEM_IMAGE = 0, 58 HUD_ELEM_TEXT = 1, 59 HUD_ELEM_STATBAR = 2, 60 HUD_ELEM_INVENTORY = 3, 61 HUD_ELEM_WAYPOINT = 4, 62 HUD_ELEM_IMAGE_WAYPOINT = 5, 63 HUD_ELEM_COMPASS = 6, 64 HUD_ELEM_MINIMAP = 7 65 }; 66 67 enum HudElementStat { 68 HUD_STAT_POS = 0, 69 HUD_STAT_NAME, 70 HUD_STAT_SCALE, 71 HUD_STAT_TEXT, 72 HUD_STAT_NUMBER, 73 HUD_STAT_ITEM, 74 HUD_STAT_DIR, 75 HUD_STAT_ALIGN, 76 HUD_STAT_OFFSET, 77 HUD_STAT_WORLD_POS, 78 HUD_STAT_SIZE, 79 HUD_STAT_Z_INDEX, 80 HUD_STAT_TEXT2, 81 }; 82 83 enum HudCompassDir { 84 HUD_COMPASS_ROTATE = 0, 85 HUD_COMPASS_ROTATE_REVERSE, 86 HUD_COMPASS_TRANSLATE, 87 HUD_COMPASS_TRANSLATE_REVERSE, 88 }; 89 90 struct HudElement { 91 HudElementType type; 92 v2f pos; 93 std::string name; 94 v2f scale; 95 std::string text; 96 u32 number; 97 u32 item; 98 u32 dir; 99 v2f align; 100 v2f offset; 101 v3f world_pos; 102 v2s32 size; 103 s16 z_index = 0; 104 std::string text2; 105 }; 106 107 extern const EnumString es_HudElementType[]; 108 extern const EnumString es_HudElementStat[]; 109 extern const EnumString es_HudBuiltinElement[]; 110 111 // Minimap stuff 112 113 enum MinimapType { 114 MINIMAP_TYPE_OFF, 115 MINIMAP_TYPE_SURFACE, 116 MINIMAP_TYPE_RADAR, 117 MINIMAP_TYPE_TEXTURE, 118 }; 119 120