summaryrefslogtreecommitdiff
path: root/src/player.cpp
diff options
context:
space:
mode:
authorPerttu Ahola <celeron55@gmail.com>2011-11-29 23:18:20 +0200
committerPerttu Ahola <celeron55@gmail.com>2011-11-29 23:18:20 +0200
commite109ed5cefe963a0595c8ef49d9c743c8e2ee28a (patch)
treef4ba75b2633d19364eff40a1e46b7abe9b0116fc /src/player.cpp
parentb2c905d80006e77bed15ae830901551e650d3bbf (diff)
downloadminetest-e109ed5cefe963a0595c8ef49d9c743c8e2ee28a.tar.gz
minetest-e109ed5cefe963a0595c8ef49d9c743c8e2ee28a.tar.bz2
minetest-e109ed5cefe963a0595c8ef49d9c743c8e2ee28a.zip
Proper player inventory and hp modification tracking and sending accordingly
Diffstat (limited to 'src/player.cpp')
-rw-r--r--src/player.cpp16
1 files changed, 14 insertions, 2 deletions
diff --git a/src/player.cpp b/src/player.cpp
index 353f44d8a..f26dcba26 100644
--- a/src/player.cpp
+++ b/src/player.cpp
@@ -184,13 +184,17 @@ ServerRemotePlayer::ServerRemotePlayer(ServerEnvironment *env):
ServerActiveObject(env, v3f(0,0,0)),
m_last_good_position(0,0,0),
m_last_good_position_age(0),
- m_additional_items()
+ m_additional_items(),
+ m_inventory_not_sent(false),
+ m_hp_not_sent(false)
{
}
ServerRemotePlayer::ServerRemotePlayer(ServerEnvironment *env, v3f pos_, u16 peer_id_,
const char *name_):
Player(env->getGameDef()),
- ServerActiveObject(env, pos_)
+ ServerActiveObject(env, pos_),
+ m_inventory_not_sent(false),
+ m_hp_not_sent(false)
{
setPosition(pos_);
peer_id = peer_id_;
@@ -249,6 +253,8 @@ bool ServerRemotePlayer::addToInventory(InventoryItem *item)
// Add to inventory
InventoryItem *leftover = ilist->addItem(item);
assert(!leftover);
+
+ m_inventory_not_sent = true;
return true;
}
@@ -295,9 +301,12 @@ void ServerRemotePlayer::completeAddToInventoryLater(u16 preferred_index)
delete leftover;
}
m_additional_items.clear();
+ m_inventory_not_sent = true;
}
void ServerRemotePlayer::setHP(s16 hp_)
{
+ s16 oldhp = hp;
+
hp = hp_;
// FIXME: don't hardcode maximum HP, make configurable per object
@@ -305,6 +314,9 @@ void ServerRemotePlayer::setHP(s16 hp_)
hp = 0;
else if(hp > 20)
hp = 20;
+
+ if(hp != oldhp)
+ m_hp_not_sent = true;
}
s16 ServerRemotePlayer::getHP()
{