diff options
author | SmallJoker <SmallJoker@users.noreply.github.com> | 2019-02-11 00:03:26 +0100 |
---|---|---|
committer | Paramat <paramat@users.noreply.github.com> | 2019-02-10 23:03:26 +0000 |
commit | ffb17f1c9a203fea6de70159b461f52d104e05b9 (patch) | |
tree | ca2c9f26515b8c6dad2a42b7e09f5d2a91d6f398 /src/client | |
parent | ba5a9f2b361a2fa01d1a3396999a5833983c0f4a (diff) | |
download | minetest-ffb17f1c9a203fea6de70159b461f52d104e05b9.tar.gz minetest-ffb17f1c9a203fea6de70159b461f52d104e05b9.tar.bz2 minetest-ffb17f1c9a203fea6de70159b461f52d104e05b9.zip |
Consistent HP and damage types (#8167)
Remove deprecated HUDs and chat message handling.
Remove unused m_damage variable (compat break).
HP: s32 for setter/calculations, u16 for getter.
Diffstat (limited to 'src/client')
-rw-r--r-- | src/client/client.cpp | 17 | ||||
-rw-r--r-- | src/client/client.h | 6 | ||||
-rw-r--r-- | src/client/clientenvironment.cpp | 4 | ||||
-rw-r--r-- | src/client/clientenvironment.h | 4 | ||||
-rw-r--r-- | src/client/content_cao.cpp | 7 | ||||
-rw-r--r-- | src/client/content_cao.h | 2 | ||||
-rw-r--r-- | src/client/hud.cpp | 19 |
7 files changed, 14 insertions, 45 deletions
diff --git a/src/client/client.cpp b/src/client/client.cpp index 3ba69333a..41893fcba 100644 --- a/src/client/client.cpp +++ b/src/client/client.cpp @@ -437,7 +437,7 @@ void Client::step(float dtime) ClientEnvEvent envEvent = m_env.getClientEnvEvent(); if (envEvent.type == CEE_PLAYER_DAMAGE) { - u8 damage = envEvent.player_damage.amount; + u16 damage = envEvent.player_damage.amount; if (envEvent.player_damage.send_to_server) sendDamage(damage); @@ -1213,9 +1213,9 @@ void Client::sendChangePassword(const std::string &oldpassword, } -void Client::sendDamage(u8 damage) +void Client::sendDamage(u16 damage) { - NetworkPacket pkt(TOSERVER_DAMAGE, sizeof(u8)); + NetworkPacket pkt(TOSERVER_DAMAGE, sizeof(u16)); pkt << damage; Send(&pkt); } @@ -1515,17 +1515,6 @@ void Client::typeChatMessage(const std::wstring &message) // Send to others sendChatMessage(message); - - // Show locally - if (message[0] != L'/') { - // compatibility code - if (m_proto_ver < 29) { - LocalPlayer *player = m_env.getLocalPlayer(); - assert(player); - std::wstring name = narrow_to_wide(player->getName()); - pushToChatQueue(new ChatMessage(CHATMESSAGE_TYPE_NORMAL, message, name)); - } - } } void Client::addUpdateMeshTask(v3s16 p, bool ack_to_server, bool urgent) diff --git a/src/client/client.h b/src/client/client.h index ef700e477..60735f665 100644 --- a/src/client/client.h +++ b/src/client/client.h @@ -243,7 +243,7 @@ public: void clearOutChatQueue(); void sendChangePassword(const std::string &oldpassword, const std::string &newpassword); - void sendDamage(u8 damage); + void sendDamage(u16 damage); void sendRespawn(); void sendReady(); @@ -342,7 +342,7 @@ public: bool mediaReceived() { return !m_media_downloader; } - u8 getProtoVersion() + u16 getProtoVersion() { return m_proto_ver; } bool connectedToServer(); @@ -504,7 +504,7 @@ private: // and aren't accurate. We simply just don't know, because // the server didn't send the version back then. // If 0, server init hasn't been received yet. - u8 m_proto_ver = 0; + u16 m_proto_ver = 0; u16 m_playeritem = 0; bool m_inventory_updated = false; diff --git a/src/client/clientenvironment.cpp b/src/client/clientenvironment.cpp index 1783e8961..a788c93c2 100644 --- a/src/client/clientenvironment.cpp +++ b/src/client/clientenvironment.cpp @@ -228,7 +228,7 @@ void ClientEnvironment::step(float dtime) float speed = pre_factor * speed_diff.getLength(); if (speed > tolerance && !player_immortal) { f32 damage_f = (speed - tolerance) / BS * post_factor; - u8 damage = (u8)MYMIN(damage_f + 0.5, 255); + u16 damage = (u16)MYMIN(damage_f + 0.5, U16_MAX); if (damage != 0) { damageLocalPlayer(damage, true); m_client->getEventManager()->put( @@ -419,7 +419,7 @@ void ClientEnvironment::processActiveObjectMessage(u16 id, const std::string &da Callbacks for activeobjects */ -void ClientEnvironment::damageLocalPlayer(u8 damage, bool handle_hp) +void ClientEnvironment::damageLocalPlayer(u16 damage, bool handle_hp) { LocalPlayer *lplayer = getLocalPlayer(); assert(lplayer); diff --git a/src/client/clientenvironment.h b/src/client/clientenvironment.h index d167902d1..4fa3f4848 100644 --- a/src/client/clientenvironment.h +++ b/src/client/clientenvironment.h @@ -53,7 +53,7 @@ struct ClientEnvEvent //struct{ //} none; struct{ - u8 amount; + u16 amount; bool send_to_server; } player_damage; }; @@ -115,7 +115,7 @@ public: Callbacks for activeobjects */ - void damageLocalPlayer(u8 damage, bool handle_hp=true); + void damageLocalPlayer(u16 damage, bool handle_hp=true); /* Client likes to call these diff --git a/src/client/content_cao.cpp b/src/client/content_cao.cpp index 6112edaff..8643b5824 100644 --- a/src/client/content_cao.cpp +++ b/src/client/content_cao.cpp @@ -371,7 +371,7 @@ void GenericCAO::processInitData(const std::string &data) m_id = readU16(is); m_position = readV3F32(is); m_rotation = readV3F32(is); - m_hp = readS16(is); + m_hp = readU16(is); const u8 num_messages = readU8(is); for (int i = 0; i < num_messages; i++) { @@ -1508,11 +1508,10 @@ void GenericCAO::processMessage(const std::string &data) updateAttachments(); } else if (cmd == GENERIC_CMD_PUNCHED) { - /*s16 damage =*/ readS16(is); - s16 result_hp = readS16(is); + u16 result_hp = readU16(is); // Use this instead of the send damage to not interfere with prediction - s16 damage = m_hp - result_hp; + s32 damage = (s32)m_hp - (s32)result_hp; m_hp = result_hp; diff --git a/src/client/content_cao.h b/src/client/content_cao.h index 4627800ee..3ce628d30 100644 --- a/src/client/content_cao.h +++ b/src/client/content_cao.h @@ -88,7 +88,7 @@ private: v3f m_velocity; v3f m_acceleration; v3f m_rotation; - s16 m_hp = 1; + u16 m_hp = 1; SmoothTranslator<v3f> pos_translator; SmoothTranslatorWrappedv3f rot_translator; // Spritesheet/animation stuff diff --git a/src/client/hud.cpp b/src/client/hud.cpp index fffe85e1d..1a2287a13 100644 --- a/src/client/hud.cpp +++ b/src/client/hud.cpp @@ -475,25 +475,6 @@ void Hud::drawHotbar(u16 playeritem) { 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, "bubble.png", - player->getBreath(), v2s32(25,-(48+24+10)), v2s32(24,24)); - } - //////////////////////////////////////////////////////////////////////////// } |