diff options
author | sapier <Sapier at GMX dot net> | 2014-05-11 00:35:31 +0200 |
---|---|---|
committer | sapier <Sapier at GMX dot net> | 2014-05-11 22:34:44 +0200 |
commit | 6c37e89f08f962eaba788a31f5d3c798ceaa65e6 (patch) | |
tree | 3332dd691a5820b472fb4a2c649c860fee9bb340 /src | |
parent | 167df02e3d69dd0e8c8915944e6bab00417b15d5 (diff) | |
download | minetest-6c37e89f08f962eaba788a31f5d3c798ceaa65e6.tar.gz minetest-6c37e89f08f962eaba788a31f5d3c798ceaa65e6.tar.bz2 minetest-6c37e89f08f962eaba788a31f5d3c798ceaa65e6.zip |
Fix old client showing duplicated health bar on new server
Fix client not showing hearts and bubbles on connecting to old server
Fix server not remembering hud flags correctly
Diffstat (limited to 'src')
-rw-r--r-- | src/hud.cpp | 17 | ||||
-rw-r--r-- | src/server.cpp | 5 |
2 files changed, 22 insertions, 0 deletions
diff --git a/src/hud.cpp b/src/hud.cpp index f1d7a3258..7b601ec87 100644 --- a/src/hud.cpp +++ b/src/hud.cpp @@ -414,6 +414,23 @@ void Hud::drawHotbar(u16 playeritem) { drawItems(secondpos, hotbar_itemcount, hotbar_itemcount/2, mainlist, playeritem + 1, 0); } } + + //////////////////////////// compatibility code to be removed ////////////// + // this is ugly as hell but there's no other way to keep compatibility to + // old servers + if ( player->hud_flags & HUD_FLAG_HEALTHBAR_VISIBLE) + drawStatbar(v2s32(floor(0.5 * (float) m_screensize.X + 0.5), + floor(1 * (float) m_screensize.Y + 0.5)), + HUD_CORNER_UPPER, 0, "heart.png", + player->hp, v2s32((-10*24)-25,-(48+24+10)), v2s32(24,24)); + + if ((player->hud_flags & HUD_FLAG_BREATHBAR_VISIBLE) && + (player->getBreath() < 11)) + drawStatbar(v2s32(floor(0.5 * (float) m_screensize.X + 0.5), + floor(1 * (float) m_screensize.Y + 0.5)), + HUD_CORNER_UPPER, 0, "heart.png", + player->getBreath(), v2s32(25,-(48+24+10)), v2s32(24,24)); + //////////////////////////////////////////////////////////////////////////// } diff --git a/src/server.cpp b/src/server.cpp index 22efca670..d29512d87 100644 --- a/src/server.cpp +++ b/src/server.cpp @@ -3357,6 +3357,10 @@ void Server::SendHUDSetFlags(u16 peer_id, u32 flags, u32 mask) // Write command writeU16(os, TOCLIENT_HUD_SET_FLAGS); + + //////////////////////////// compatibility code to be removed ////////////// + flags &= ~(HUD_FLAG_HEALTHBAR_VISIBLE | HUD_FLAG_BREATHBAR_VISIBLE); + //////////////////////////////////////////////////////////////////////////// writeU32(os, flags); writeU32(os, mask); @@ -4591,6 +4595,7 @@ bool Server::hudSetFlags(Player *player, u32 flags, u32 mask) { return false; SendHUDSetFlags(player->peer_id, flags, mask); + player->hud_flags = flags; m_script->player_event(player->getPlayerSAO(),"hud_changed"); return true; |