aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPerttu Ahola <celeron55@gmail.com>2011-12-02 10:57:40 +0200
committerPerttu Ahola <celeron55@gmail.com>2011-12-02 10:57:40 +0200
commitc3579851354e92a24991c2c3a7844295b7d13a26 (patch)
tree965768539709d009abba03fcebfa68b032ffb27d
parentae2b7f952368174aeac90a5076eadd90ddc7fff3 (diff)
downloadminetest-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.cpp24
-rw-r--r--src/serverremoteplayer.cpp13
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)