When minimap is disabled in configuration, really disable it (#5771)
* When minimap is disabled in configuration, really disable it
This commit is contained in:
parent
1c6d2f596d
commit
e25a38e3fb
|
@ -800,6 +800,7 @@ Call these functions only at load time!
|
||||||
### UI
|
### UI
|
||||||
* `minetest.ui.minimap`
|
* `minetest.ui.minimap`
|
||||||
* Reference to the minimap object. See [`Minimap`](#minimap) class reference for methods.
|
* Reference to the minimap object. See [`Minimap`](#minimap) class reference for methods.
|
||||||
|
* If client disabled minimap (using enable_minimap setting) this reference will be nil.
|
||||||
* `minetest.camera`
|
* `minetest.camera`
|
||||||
* Reference to the camera object. See [`Camera`](#camera) class reference for methods.
|
* Reference to the camera object. See [`Camera`](#camera) class reference for methods.
|
||||||
* `minetest.show_formspec(formname, formspec)` : returns true on success
|
* `minetest.show_formspec(formname, formspec)` : returns true on success
|
||||||
|
|
|
@ -93,6 +93,7 @@ Client::Client(
|
||||||
m_address_name(address_name),
|
m_address_name(address_name),
|
||||||
m_device(device),
|
m_device(device),
|
||||||
m_camera(NULL),
|
m_camera(NULL),
|
||||||
|
m_minimap(NULL),
|
||||||
m_minimap_disabled_by_server(false),
|
m_minimap_disabled_by_server(false),
|
||||||
m_server_ser_ver(SER_FMT_VER_INVALID),
|
m_server_ser_ver(SER_FMT_VER_INVALID),
|
||||||
m_proto_ver(0),
|
m_proto_ver(0),
|
||||||
|
@ -127,7 +128,9 @@ Client::Client(
|
||||||
// Add local player
|
// Add local player
|
||||||
m_env.setLocalPlayer(new LocalPlayer(this, playername));
|
m_env.setLocalPlayer(new LocalPlayer(this, playername));
|
||||||
|
|
||||||
m_minimap = new Minimap(device, this);
|
if (g_settings->getBool("enable_minimap")) {
|
||||||
|
m_minimap = new Minimap(device, this);
|
||||||
|
}
|
||||||
m_cache_save_interval = g_settings->getU16("server_map_save_interval");
|
m_cache_save_interval = g_settings->getU16("server_map_save_interval");
|
||||||
|
|
||||||
m_modding_enabled = g_settings->getBool("enable_client_modding");
|
m_modding_enabled = g_settings->getBool("enable_client_modding");
|
||||||
|
@ -502,7 +505,7 @@ void Client::step(float dtime)
|
||||||
delete r.mesh;
|
delete r.mesh;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (do_mapper_update)
|
if (m_minimap && do_mapper_update)
|
||||||
m_minimap->addBlock(r.p, minimap_mapblock);
|
m_minimap->addBlock(r.p, minimap_mapblock);
|
||||||
|
|
||||||
if (r.ack_block_to_server) {
|
if (r.ack_block_to_server) {
|
||||||
|
|
|
@ -509,7 +509,7 @@ void draw_plain(Camera &camera, bool show_hud,
|
||||||
|
|
||||||
void draw_scene(video::IVideoDriver *driver, scene::ISceneManager *smgr,
|
void draw_scene(video::IVideoDriver *driver, scene::ISceneManager *smgr,
|
||||||
Camera &camera, Client &client, LocalPlayer *player, Hud &hud,
|
Camera &camera, Client &client, LocalPlayer *player, Hud &hud,
|
||||||
Minimap &mapper, gui::IGUIEnvironment *guienv,
|
Minimap *mapper, gui::IGUIEnvironment *guienv,
|
||||||
const v2u32 &screensize, const video::SColor &skycolor,
|
const v2u32 &screensize, const video::SColor &skycolor,
|
||||||
bool show_hud, bool show_minimap)
|
bool show_hud, bool show_minimap)
|
||||||
{
|
{
|
||||||
|
@ -584,8 +584,8 @@ void draw_scene(video::IVideoDriver *driver, scene::ISceneManager *smgr,
|
||||||
hud.drawLuaElements(camera.getOffset());
|
hud.drawLuaElements(camera.getOffset());
|
||||||
camera.drawNametags();
|
camera.drawNametags();
|
||||||
|
|
||||||
if (show_minimap)
|
if (mapper && show_minimap)
|
||||||
mapper.drawMinimap();
|
mapper->drawMinimap();
|
||||||
}
|
}
|
||||||
|
|
||||||
guienv->drawAll();
|
guienv->drawAll();
|
||||||
|
|
|
@ -32,7 +32,7 @@ void draw_load_screen(const std::wstring &text, IrrlichtDevice *device,
|
||||||
|
|
||||||
void draw_scene(video::IVideoDriver *driver, scene::ISceneManager *smgr,
|
void draw_scene(video::IVideoDriver *driver, scene::ISceneManager *smgr,
|
||||||
Camera &camera, Client &client, LocalPlayer *player,
|
Camera &camera, Client &client, LocalPlayer *player,
|
||||||
Hud &hud, Minimap &mapper, gui::IGUIEnvironment *guienv,
|
Hud &hud, Minimap *mapper, gui::IGUIEnvironment *guienv,
|
||||||
const v2u32 &screensize, const video::SColor &skycolor,
|
const v2u32 &screensize, const video::SColor &skycolor,
|
||||||
bool show_hud, bool show_minimap);
|
bool show_hud, bool show_minimap);
|
||||||
|
|
||||||
|
|
26
src/game.cpp
26
src/game.cpp
|
@ -715,16 +715,19 @@ public:
|
||||||
m_eye_position_pixel.set(eye_position_array, services);
|
m_eye_position_pixel.set(eye_position_array, services);
|
||||||
m_eye_position_vertex.set(eye_position_array, services);
|
m_eye_position_vertex.set(eye_position_array, services);
|
||||||
|
|
||||||
float minimap_yaw_array[3];
|
if (m_client->getMinimap()) {
|
||||||
v3f minimap_yaw = m_client->getMinimap()->getYawVec();
|
float minimap_yaw_array[3];
|
||||||
|
v3f minimap_yaw = m_client->getMinimap()->getYawVec();
|
||||||
#if (IRRLICHT_VERSION_MAJOR == 1 && IRRLICHT_VERSION_MINOR < 8)
|
#if (IRRLICHT_VERSION_MAJOR == 1 && IRRLICHT_VERSION_MINOR < 8)
|
||||||
minimap_yaw_array[0] = minimap_yaw.X;
|
minimap_yaw_array[0] = minimap_yaw.X;
|
||||||
minimap_yaw_array[1] = minimap_yaw.Y;
|
minimap_yaw_array[1] = minimap_yaw.Y;
|
||||||
minimap_yaw_array[2] = minimap_yaw.Z;
|
minimap_yaw_array[2] = minimap_yaw.Z;
|
||||||
#else
|
#else
|
||||||
minimap_yaw.getAs3Values(minimap_yaw_array);
|
minimap_yaw.getAs3Values(minimap_yaw_array);
|
||||||
#endif
|
#endif
|
||||||
m_minimap_yaw.set(minimap_yaw_array, services);
|
m_minimap_yaw.set(minimap_yaw_array, services);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
SamplerLayer_t base_tex = 0,
|
SamplerLayer_t base_tex = 0,
|
||||||
normal_tex = 1,
|
normal_tex = 1,
|
||||||
|
@ -1948,7 +1951,8 @@ bool Game::createClient(const std::string &playername,
|
||||||
}
|
}
|
||||||
|
|
||||||
mapper = client->getMinimap();
|
mapper = client->getMinimap();
|
||||||
mapper->setMinimapMode(MINIMAP_MODE_OFF);
|
if (mapper)
|
||||||
|
mapper->setMinimapMode(MINIMAP_MODE_OFF);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -2781,7 +2785,7 @@ void Game::toggleHud()
|
||||||
|
|
||||||
void Game::toggleMinimap(bool shift_pressed)
|
void Game::toggleMinimap(bool shift_pressed)
|
||||||
{
|
{
|
||||||
if (!flags.show_hud || !g_settings->getBool("enable_minimap"))
|
if (!mapper || !flags.show_hud || !g_settings->getBool("enable_minimap"))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (shift_pressed) {
|
if (shift_pressed) {
|
||||||
|
@ -4194,7 +4198,7 @@ void Game::updateFrame(ProfilerGraph *graph, RunStats *stats, f32 dtime,
|
||||||
TimeTaker tt_draw("mainloop: draw");
|
TimeTaker tt_draw("mainloop: draw");
|
||||||
driver->beginScene(true, true, skycolor);
|
driver->beginScene(true, true, skycolor);
|
||||||
|
|
||||||
draw_scene(driver, smgr, *camera, *client, player, *hud, *mapper,
|
draw_scene(driver, smgr, *camera, *client, player, *hud, mapper,
|
||||||
guienv, screensize, skycolor, flags.show_hud,
|
guienv, screensize, skycolor, flags.show_hud,
|
||||||
flags.show_minimap);
|
flags.show_minimap);
|
||||||
|
|
||||||
|
@ -4229,7 +4233,7 @@ void Game::updateFrame(ProfilerGraph *graph, RunStats *stats, f32 dtime,
|
||||||
/*
|
/*
|
||||||
Update minimap pos and rotation
|
Update minimap pos and rotation
|
||||||
*/
|
*/
|
||||||
if (flags.show_minimap && flags.show_hud) {
|
if (mapper && flags.show_minimap && flags.show_hud) {
|
||||||
mapper->setPos(floatToInt(player->getPosition(), BS));
|
mapper->setPos(floatToInt(player->getPosition(), BS));
|
||||||
mapper->setAngle(player->getYaw());
|
mapper->setAngle(player->getYaw());
|
||||||
}
|
}
|
||||||
|
|
|
@ -1150,7 +1150,7 @@ void Client::handleCommand_HudSetFlags(NetworkPacket* pkt)
|
||||||
m_minimap_disabled_by_server = !(player->hud_flags & HUD_FLAG_MINIMAP_VISIBLE);
|
m_minimap_disabled_by_server = !(player->hud_flags & HUD_FLAG_MINIMAP_VISIBLE);
|
||||||
|
|
||||||
// Hide minimap if it has been disabled by the server
|
// Hide minimap if it has been disabled by the server
|
||||||
if (m_minimap_disabled_by_server && was_minimap_visible) {
|
if (m_minimap && m_minimap_disabled_by_server && was_minimap_visible) {
|
||||||
// defers a minimap update, therefore only call it if really
|
// defers a minimap update, therefore only call it if really
|
||||||
// needed, by checking that minimap was visible before
|
// needed, by checking that minimap was visible before
|
||||||
m_minimap->setMinimapMode(MINIMAP_MODE_OFF);
|
m_minimap->setMinimapMode(MINIMAP_MODE_OFF);
|
||||||
|
|
|
@ -51,7 +51,8 @@ ClientScripting::ClientScripting(Client *client):
|
||||||
InitializeModApi(L, top);
|
InitializeModApi(L, top);
|
||||||
lua_pop(L, 1);
|
lua_pop(L, 1);
|
||||||
|
|
||||||
LuaMinimap::create(L, client->getMinimap());
|
if (client->getMinimap())
|
||||||
|
LuaMinimap::create(L, client->getMinimap());
|
||||||
|
|
||||||
// Push builtin initialization type
|
// Push builtin initialization type
|
||||||
lua_pushstring(L, "client");
|
lua_pushstring(L, "client");
|
||||||
|
|
Loading…
Reference in New Issue