mirror of
https://github.com/minetest/minetest.git
synced 2024-11-23 16:13:46 +01:00
minimap: Add ability to disable from server
This commit is contained in:
parent
a670ecfde4
commit
be9024a397
@ -2519,11 +2519,13 @@ This is basically a reference to a C++ `ServerActiveObject`
|
|||||||
* element `stat` values: `position`, `name`, `scale`, `text`, `number`, `item`, `dir`
|
* element `stat` values: `position`, `name`, `scale`, `text`, `number`, `item`, `dir`
|
||||||
* `hud_get(id)`: gets the HUD element definition structure of the specified ID
|
* `hud_get(id)`: gets the HUD element definition structure of the specified ID
|
||||||
* `hud_set_flags(flags)`: sets specified HUD flags to `true`/`false`
|
* `hud_set_flags(flags)`: sets specified HUD flags to `true`/`false`
|
||||||
* `flags`: (is visible) `hotbar`, `healthbar`, `crosshair`, `wielditem`
|
* `flags`: (is visible) `hotbar`, `healthbar`, `crosshair`, `wielditem`, `minimap`
|
||||||
* pass a table containing a `true`/`false` value of each flag to be set or unset
|
* pass a table containing a `true`/`false` value of each flag to be set or unset
|
||||||
* if a flag equals `nil`, the flag is not modified
|
* if a flag equals `nil`, the flag is not modified
|
||||||
|
* note that setting `minimap` modifies the client's permission to view the minimap -
|
||||||
|
* the client may locally elect to not view the minimap
|
||||||
* `hud_get_flags()`: returns a table containing status of hud flags
|
* `hud_get_flags()`: returns a table containing status of hud flags
|
||||||
* returns `{ hotbar=true, healthbar=true, crosshair=true, wielditem=true, breathbar=true }`
|
* returns `{ hotbar=true, healthbar=true, crosshair=true, wielditem=true, breathbar=true, minimap=true }`
|
||||||
* `hud_set_hotbar_itemcount(count)`: sets number of items in builtin hotbar
|
* `hud_set_hotbar_itemcount(count)`: sets number of items in builtin hotbar
|
||||||
* `count`: number of items, must be between `1` and `23`
|
* `count`: number of items, must be between `1` and `23`
|
||||||
* `hud_get_hotbar_itemcount`: returns number of visible items
|
* `hud_get_hotbar_itemcount`: returns number of visible items
|
||||||
|
85
src/game.cpp
85
src/game.cpp
@ -1497,7 +1497,7 @@ protected:
|
|||||||
|
|
||||||
void toggleChat(float *statustext_time, bool *flag);
|
void toggleChat(float *statustext_time, bool *flag);
|
||||||
void toggleHud(float *statustext_time, bool *flag);
|
void toggleHud(float *statustext_time, bool *flag);
|
||||||
void toggleMinimap(float *statustext_time, bool *flag1, bool *flag2,
|
void toggleMinimap(float *statustext_time, bool *flag, bool show_hud,
|
||||||
bool shift_pressed);
|
bool shift_pressed);
|
||||||
void toggleFog(float *statustext_time, bool *flag);
|
void toggleFog(float *statustext_time, bool *flag);
|
||||||
void toggleDebug(float *statustext_time, bool *show_debug,
|
void toggleDebug(float *statustext_time, bool *show_debug,
|
||||||
@ -2642,7 +2642,7 @@ void Game::processKeyboardInput(VolatileRunFlags *flags,
|
|||||||
} else if (input->wasKeyDown(keycache.key[KeyCache::KEYMAP_ID_TOGGLE_HUD])) {
|
} else if (input->wasKeyDown(keycache.key[KeyCache::KEYMAP_ID_TOGGLE_HUD])) {
|
||||||
toggleHud(statustext_time, &flags->show_hud);
|
toggleHud(statustext_time, &flags->show_hud);
|
||||||
} else if (input->wasKeyDown(keycache.key[KeyCache::KEYMAP_ID_MINIMAP])) {
|
} else if (input->wasKeyDown(keycache.key[KeyCache::KEYMAP_ID_MINIMAP])) {
|
||||||
toggleMinimap(statustext_time, &flags->show_minimap, &flags->show_hud,
|
toggleMinimap(statustext_time, &flags->show_minimap, flags->show_hud,
|
||||||
input->isKeyDown(keycache.key[KeyCache::KEYMAP_ID_SNEAK]));
|
input->isKeyDown(keycache.key[KeyCache::KEYMAP_ID_SNEAK]));
|
||||||
} else if (input->wasKeyDown(keycache.key[KeyCache::KEYMAP_ID_TOGGLE_CHAT])) {
|
} else if (input->wasKeyDown(keycache.key[KeyCache::KEYMAP_ID_TOGGLE_CHAT])) {
|
||||||
toggleChat(statustext_time, &flags->show_chat);
|
toggleChat(statustext_time, &flags->show_chat);
|
||||||
@ -2864,43 +2864,54 @@ void Game::toggleHud(float *statustext_time, bool *flag)
|
|||||||
client->setHighlighted(client->getHighlighted(), *flag);
|
client->setHighlighted(client->getHighlighted(), *flag);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Game::toggleMinimap(float *statustext_time, bool *flag, bool *show_hud, bool shift_pressed)
|
void Game::toggleMinimap(float *statustext_time, bool *flag,
|
||||||
|
bool show_hud, bool shift_pressed)
|
||||||
{
|
{
|
||||||
if (*show_hud && g_settings->getBool("enable_minimap")) {
|
if (!show_hud || !g_settings->getBool("enable_minimap"))
|
||||||
if (shift_pressed) {
|
return;
|
||||||
mapper->toggleMinimapShape();
|
|
||||||
return;
|
if (shift_pressed) {
|
||||||
}
|
mapper->toggleMinimapShape();
|
||||||
MinimapMode mode = mapper->getMinimapMode();
|
return;
|
||||||
mode = (MinimapMode)((int)(mode) + 1);
|
|
||||||
*flag = true;
|
|
||||||
switch (mode) {
|
|
||||||
case MINIMAP_MODE_SURFACEx1:
|
|
||||||
statustext = L"Minimap in surface mode, Zoom x1";
|
|
||||||
break;
|
|
||||||
case MINIMAP_MODE_SURFACEx2:
|
|
||||||
statustext = L"Minimap in surface mode, Zoom x2";
|
|
||||||
break;
|
|
||||||
case MINIMAP_MODE_SURFACEx4:
|
|
||||||
statustext = L"Minimap in surface mode, Zoom x4";
|
|
||||||
break;
|
|
||||||
case MINIMAP_MODE_RADARx1:
|
|
||||||
statustext = L"Minimap in radar mode, Zoom x1";
|
|
||||||
break;
|
|
||||||
case MINIMAP_MODE_RADARx2:
|
|
||||||
statustext = L"Minimap in radar mode, Zoom x2";
|
|
||||||
break;
|
|
||||||
case MINIMAP_MODE_RADARx4:
|
|
||||||
statustext = L"Minimap in radar mode, Zoom x4";
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
mode = MINIMAP_MODE_OFF;
|
|
||||||
*flag = false;
|
|
||||||
statustext = L"Minimap hidden";
|
|
||||||
}
|
|
||||||
*statustext_time = 0;
|
|
||||||
mapper->setMinimapMode(mode);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
u32 hud_flags = client->getEnv().getLocalPlayer()->hud_flags;
|
||||||
|
|
||||||
|
MinimapMode mode = MINIMAP_MODE_OFF;
|
||||||
|
if (hud_flags & HUD_FLAG_MINIMAP_VISIBLE) {
|
||||||
|
mode = mapper->getMinimapMode();
|
||||||
|
mode = (MinimapMode)((int)mode + 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
*flag = true;
|
||||||
|
switch (mode) {
|
||||||
|
case MINIMAP_MODE_SURFACEx1:
|
||||||
|
statustext = L"Minimap in surface mode, Zoom x1";
|
||||||
|
break;
|
||||||
|
case MINIMAP_MODE_SURFACEx2:
|
||||||
|
statustext = L"Minimap in surface mode, Zoom x2";
|
||||||
|
break;
|
||||||
|
case MINIMAP_MODE_SURFACEx4:
|
||||||
|
statustext = L"Minimap in surface mode, Zoom x4";
|
||||||
|
break;
|
||||||
|
case MINIMAP_MODE_RADARx1:
|
||||||
|
statustext = L"Minimap in radar mode, Zoom x1";
|
||||||
|
break;
|
||||||
|
case MINIMAP_MODE_RADARx2:
|
||||||
|
statustext = L"Minimap in radar mode, Zoom x2";
|
||||||
|
break;
|
||||||
|
case MINIMAP_MODE_RADARx4:
|
||||||
|
statustext = L"Minimap in radar mode, Zoom x4";
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
mode = MINIMAP_MODE_OFF;
|
||||||
|
*flag = false;
|
||||||
|
statustext = (hud_flags & HUD_FLAG_MINIMAP_VISIBLE) ?
|
||||||
|
L"Minimap hidden" : L"Minimap disabled by server";
|
||||||
|
}
|
||||||
|
|
||||||
|
*statustext_time = 0;
|
||||||
|
mapper->setMinimapMode(mode);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Game::toggleFog(float *statustext_time, bool *flag)
|
void Game::toggleFog(float *statustext_time, bool *flag)
|
||||||
|
12
src/hud.h
12
src/hud.h
@ -32,11 +32,15 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
|||||||
#define HUD_CORNER_LOWER 1
|
#define HUD_CORNER_LOWER 1
|
||||||
#define HUD_CORNER_CENTER 2
|
#define HUD_CORNER_CENTER 2
|
||||||
|
|
||||||
|
// Note that these visibility flags do not determine if the hud items are
|
||||||
|
// actually drawn, but rather, allows the item to be drawn should the rest of
|
||||||
|
// the game state permit it.
|
||||||
#define HUD_FLAG_HOTBAR_VISIBLE (1 << 0)
|
#define HUD_FLAG_HOTBAR_VISIBLE (1 << 0)
|
||||||
#define HUD_FLAG_HEALTHBAR_VISIBLE (1 << 1)
|
#define HUD_FLAG_HEALTHBAR_VISIBLE (1 << 1)
|
||||||
#define HUD_FLAG_CROSSHAIR_VISIBLE (1 << 2)
|
#define HUD_FLAG_CROSSHAIR_VISIBLE (1 << 2)
|
||||||
#define HUD_FLAG_WIELDITEM_VISIBLE (1 << 3)
|
#define HUD_FLAG_WIELDITEM_VISIBLE (1 << 3)
|
||||||
#define HUD_FLAG_BREATHBAR_VISIBLE (1 << 4)
|
#define HUD_FLAG_BREATHBAR_VISIBLE (1 << 4)
|
||||||
|
#define HUD_FLAG_MINIMAP_VISIBLE (1 << 5)
|
||||||
|
|
||||||
#define HUD_PARAM_HOTBAR_ITEMCOUNT 1
|
#define HUD_PARAM_HOTBAR_ITEMCOUNT 1
|
||||||
#define HUD_PARAM_HOTBAR_IMAGE 2
|
#define HUD_PARAM_HOTBAR_IMAGE 2
|
||||||
@ -116,11 +120,11 @@ public:
|
|||||||
std::string hotbar_selected_image;
|
std::string hotbar_selected_image;
|
||||||
bool use_hotbar_selected_image;
|
bool use_hotbar_selected_image;
|
||||||
v3s16 camera_offset;
|
v3s16 camera_offset;
|
||||||
|
|
||||||
Hud(video::IVideoDriver *driver,scene::ISceneManager* smgr,
|
Hud(video::IVideoDriver *driver,scene::ISceneManager* smgr,
|
||||||
gui::IGUIEnvironment* guienv, IGameDef *gamedef, LocalPlayer *player,
|
gui::IGUIEnvironment* guienv, IGameDef *gamedef, LocalPlayer *player,
|
||||||
Inventory *inventory);
|
Inventory *inventory);
|
||||||
|
|
||||||
void drawHotbar(u16 playeritem);
|
void drawHotbar(u16 playeritem);
|
||||||
void resizeHotbar();
|
void resizeHotbar();
|
||||||
void drawCrosshair();
|
void drawCrosshair();
|
||||||
@ -129,12 +133,12 @@ public:
|
|||||||
private:
|
private:
|
||||||
void drawStatbar(v2s32 pos, u16 corner, u16 drawdir, std::string texture,
|
void drawStatbar(v2s32 pos, u16 corner, u16 drawdir, std::string texture,
|
||||||
s32 count, v2s32 offset, v2s32 size=v2s32());
|
s32 count, v2s32 offset, v2s32 size=v2s32());
|
||||||
|
|
||||||
void drawItems(v2s32 upperleftpos, s32 itemcount, s32 offset,
|
void drawItems(v2s32 upperleftpos, s32 itemcount, s32 offset,
|
||||||
InventoryList *mainlist, u16 selectitem, u16 direction);
|
InventoryList *mainlist, u16 selectitem, u16 direction);
|
||||||
|
|
||||||
void drawItem(const ItemStack &item, const core::rect<s32>& rect, bool selected);
|
void drawItem(const ItemStack &item, const core::rect<s32>& rect, bool selected);
|
||||||
|
|
||||||
v2u32 m_screensize;
|
v2u32 m_screensize;
|
||||||
v2s32 m_displaycenter;
|
v2s32 m_displaycenter;
|
||||||
s32 m_hotbar_imagesize;
|
s32 m_hotbar_imagesize;
|
||||||
|
@ -75,7 +75,8 @@ Player::Player(IGameDef *gamedef, const char *name):
|
|||||||
"listring[]"
|
"listring[]"
|
||||||
"list[current_player;craftpreview;7,1;1,1;]";
|
"list[current_player;craftpreview;7,1;1,1;]";
|
||||||
|
|
||||||
// Initialize movement settings at default values, so movement can work if the server fails to send them
|
// Initialize movement settings at default values, so movement can work
|
||||||
|
// if the server fails to send them
|
||||||
movement_acceleration_default = 3 * BS;
|
movement_acceleration_default = 3 * BS;
|
||||||
movement_acceleration_air = 2 * BS;
|
movement_acceleration_air = 2 * BS;
|
||||||
movement_acceleration_fast = 10 * BS;
|
movement_acceleration_fast = 10 * BS;
|
||||||
@ -97,9 +98,10 @@ Player::Player(IGameDef *gamedef, const char *name):
|
|||||||
physics_override_sneak = true;
|
physics_override_sneak = true;
|
||||||
physics_override_sneak_glitch = true;
|
physics_override_sneak_glitch = true;
|
||||||
|
|
||||||
hud_flags = HUD_FLAG_HOTBAR_VISIBLE | HUD_FLAG_HEALTHBAR_VISIBLE |
|
hud_flags =
|
||||||
HUD_FLAG_CROSSHAIR_VISIBLE | HUD_FLAG_WIELDITEM_VISIBLE |
|
HUD_FLAG_HOTBAR_VISIBLE | HUD_FLAG_HEALTHBAR_VISIBLE |
|
||||||
HUD_FLAG_BREATHBAR_VISIBLE;
|
HUD_FLAG_CROSSHAIR_VISIBLE | HUD_FLAG_WIELDITEM_VISIBLE |
|
||||||
|
HUD_FLAG_BREATHBAR_VISIBLE | HUD_FLAG_MINIMAP_VISIBLE;
|
||||||
|
|
||||||
hud_hotbar_itemcount = HUD_HOTBAR_ITEMCOUNT_DEFAULT;
|
hud_hotbar_itemcount = HUD_HOTBAR_ITEMCOUNT_DEFAULT;
|
||||||
}
|
}
|
||||||
|
@ -68,6 +68,7 @@ struct EnumString es_HudBuiltinElement[] =
|
|||||||
{HUD_FLAG_CROSSHAIR_VISIBLE, "crosshair"},
|
{HUD_FLAG_CROSSHAIR_VISIBLE, "crosshair"},
|
||||||
{HUD_FLAG_WIELDITEM_VISIBLE, "wielditem"},
|
{HUD_FLAG_WIELDITEM_VISIBLE, "wielditem"},
|
||||||
{HUD_FLAG_BREATHBAR_VISIBLE, "breathbar"},
|
{HUD_FLAG_BREATHBAR_VISIBLE, "breathbar"},
|
||||||
|
{HUD_FLAG_MINIMAP_VISIBLE, "minimap"},
|
||||||
{0, NULL},
|
{0, NULL},
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -1384,6 +1385,8 @@ int ObjectRef::l_hud_get_flags(lua_State *L)
|
|||||||
lua_setfield(L, -2, "wielditem");
|
lua_setfield(L, -2, "wielditem");
|
||||||
lua_pushboolean(L, player->hud_flags & HUD_FLAG_BREATHBAR_VISIBLE);
|
lua_pushboolean(L, player->hud_flags & HUD_FLAG_BREATHBAR_VISIBLE);
|
||||||
lua_setfield(L, -2, "breathbar");
|
lua_setfield(L, -2, "breathbar");
|
||||||
|
lua_pushboolean(L, player->hud_flags & HUD_FLAG_MINIMAP_VISIBLE);
|
||||||
|
lua_setfield(L, -2, "minimap");
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user