Skip to content

Commit

Permalink
Hide minimap if it has been disabled by server
Browse files Browse the repository at this point in the history
  • Loading branch information
est31 committed Sep 1, 2015
1 parent dce9468 commit 0903190
Show file tree
Hide file tree
Showing 5 changed files with 22 additions and 2 deletions.
1 change: 1 addition & 0 deletions src/client.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -228,6 +228,7 @@ Client::Client(
m_particle_manager(&m_env),
m_con(PROTOCOL_ID, 512, CONNECTION_TIMEOUT, ipv6, this),
m_device(device),
m_minimap_disabled_by_server(false),
m_server_ser_ver(SER_FMT_VER_INVALID),
m_proto_ver(0),
m_playeritem(0),
Expand Down
4 changes: 4 additions & 0 deletions src/client.h
Original file line number Diff line number Diff line change
Expand Up @@ -510,6 +510,9 @@ class Client : public con::PeerHandler, public InventoryManager, public IGameDef
Mapper* getMapper ()
{ return m_mapper; }

bool isMinimapDisabledByServer()
{ return m_minimap_disabled_by_server; }

// IGameDef interface
virtual IItemDefManager* getItemDefManager();
virtual INodeDefManager* getNodeDefManager();
Expand Down Expand Up @@ -590,6 +593,7 @@ class Client : public con::PeerHandler, public InventoryManager, public IGameDef
con::Connection m_con;
IrrlichtDevice *m_device;
Mapper *m_mapper;
bool m_minimap_disabled_by_server;
// Server serialization version
u8 m_server_ser_ver;

Expand Down
3 changes: 3 additions & 0 deletions src/game.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1857,6 +1857,9 @@ void Game::run()
updateFrame(highlight_boxes, &graph, &stats, &runData, dtime,
flags, cam_view);
updateProfilerGraphs(&graph);

// Update if minimap has been disabled by the server
flags.show_minimap &= !client->isMinimapDisabledByServer();
}
}

Expand Down
4 changes: 2 additions & 2 deletions src/hud.h
Original file line number Diff line number Diff line change
Expand Up @@ -33,8 +33,8 @@ with this program; if not, write to the Free Software Foundation, Inc.,
#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.
// 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)
Expand Down
12 changes: 12 additions & 0 deletions src/network/clientpackethandler.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
#include "log.h"
#include "map.h"
#include "mapsector.h"
#include "minimap.h"
#include "nodedef.h"
#include "serialization.h"
#include "server.h"
Expand Down Expand Up @@ -1094,8 +1095,19 @@ void Client::handleCommand_HudSetFlags(NetworkPacket* pkt)
Player *player = m_env.getLocalPlayer();
assert(player != NULL);

bool was_minimap_visible = player->hud_flags & HUD_FLAG_MINIMAP_VISIBLE;

player->hud_flags &= ~mask;
player->hud_flags |= flags;

m_minimap_disabled_by_server = !(player->hud_flags & HUD_FLAG_MINIMAP_VISIBLE);

// Hide minimap if it has been disabled by the server
if (m_minimap_disabled_by_server && was_minimap_visible) {
// defers a minimap update, therefore only call it if really
// needed, by checking that minimap was visible before
m_mapper->setMinimapMode(MINIMAP_MODE_OFF);
}
}

void Client::handleCommand_HudSetParam(NetworkPacket* pkt)
Expand Down

0 comments on commit 0903190

Please sign in to comment.