diff options
author | Perttu Ahola <celeron55@gmail.com> | 2011-12-02 10:57:40 +0200 |
---|---|---|
committer | Perttu Ahola <celeron55@gmail.com> | 2011-12-02 10:57:40 +0200 |
commit | c3579851354e92a24991c2c3a7844295b7d13a26 (patch) | |
tree | 965768539709d009abba03fcebfa68b032ffb27d | |
parent | ae2b7f952368174aeac90a5076eadd90ddc7fff3 (diff) | |
download | minetest-c3579851354e92a24991c2c3a7844295b7d13a26.tar.gz minetest-c3579851354e92a24991c2c3a7844295b7d13a26.tar.bz2 minetest-c3579851354e92a24991c2c3a7844295b7d13a26.zip |
Make hitting players make a visual damage flash to the player texture and the screen of the local player
-rw-r--r-- | src/content_cao.cpp | 24 | ||||
-rw-r--r-- | src/serverremoteplayer.cpp | 13 |
2 files changed, 29 insertions, 8 deletions
diff --git a/src/content_cao.cpp b/src/content_cao.cpp index eed5a8337..b9dc91e63 100644 --- a/src/content_cao.cpp +++ b/src/content_cao.cpp @@ -2274,6 +2274,13 @@ public: { pos_translator.translate(dtime); updateNodePos(); + + if(m_damage_visual_timer > 0){ + m_damage_visual_timer -= dtime; + if(m_damage_visual_timer <= 0){ + updateTextures(""); + } + } } void processMessage(const std::string &data) @@ -2293,6 +2300,17 @@ public: updateNodePos(); } + else if(cmd == 1) // punched + { + // damage + s16 damage = readS16(is); + + if(m_is_local_player) + m_env->damageLocalPlayer(damage, false); + + m_damage_visual_timer = 0.5; + updateTextures("^[brighten"); + } } void updateTextures(const std::string &mod) @@ -2318,12 +2336,6 @@ public: } } } - - bool directReportPunch(const std::string &toolname, v3f dir) - { - updateTextures("^[brighten"); - return false; - } }; // Prototype diff --git a/src/serverremoteplayer.cpp b/src/serverremoteplayer.cpp index f2bb85c92..ceb46c4ee 100644 --- a/src/serverremoteplayer.cpp +++ b/src/serverremoteplayer.cpp @@ -151,10 +151,19 @@ void ServerRemotePlayer::punch(ServerActiveObject *puncher, HittingProperties hitprop = getHittingProperties(&mp, &tp, time_from_last_punch); - infostream<<"1. getHP()="<<getHP()<<std::endl; setHP(getHP() - hitprop.hp); - infostream<<"2. getHP()="<<getHP()<<std::endl; puncher->damageWieldedItem(hitprop.wear); + + { + std::ostringstream os(std::ios::binary); + // command (1 = punched) + writeU8(os, 1); + // damage + writeS16(os, hitprop.hp); + // create message and add to list + ActiveObjectMessage aom(getId(), false, os.str()); + m_messages_out.push_back(aom); + } } void ServerRemotePlayer::rightClick(ServerActiveObject *clicker) |