From ee0d3bacbce612c1abc6016cb7b0d684df25b820 Mon Sep 17 00:00:00 2001 From: Perttu Ahola Date: Thu, 1 Dec 2011 18:23:58 +0200 Subject: Player-is-SAO WIP --- src/player.cpp | 31 +++++++++++++++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) (limited to 'src/player.cpp') diff --git a/src/player.cpp b/src/player.cpp index f26dcba26..937ca9a3f 100644 --- a/src/player.cpp +++ b/src/player.cpp @@ -30,6 +30,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "nodedef.h" #include "environment.h" #include "gamedef.h" +#include "content_sao.h" Player::Player(IGameDef *gamedef): touching_ground(false), @@ -186,7 +187,8 @@ ServerRemotePlayer::ServerRemotePlayer(ServerEnvironment *env): m_last_good_position_age(0), m_additional_items(), m_inventory_not_sent(false), - m_hp_not_sent(false) + m_hp_not_sent(false), + m_sao(NULL) { } ServerRemotePlayer::ServerRemotePlayer(ServerEnvironment *env, v3f pos_, u16 peer_id_, @@ -194,7 +196,8 @@ ServerRemotePlayer::ServerRemotePlayer(ServerEnvironment *env, v3f pos_, u16 pee Player(env->getGameDef()), ServerActiveObject(env, pos_), m_inventory_not_sent(false), - m_hp_not_sent(false) + m_hp_not_sent(false), + m_sao(NULL) { setPosition(pos_); peer_id = peer_id_; @@ -203,6 +206,28 @@ ServerRemotePlayer::ServerRemotePlayer(ServerEnvironment *env, v3f pos_, u16 pee ServerRemotePlayer::~ServerRemotePlayer() { clearAddToInventoryLater(); + if(m_sao) + m_sao->setPlayer(NULL); +} + +void ServerRemotePlayer::setPosition(const v3f &position) +{ + Player::setPosition(position); + ServerActiveObject::setBasePosition(position); + if(m_sao) + m_sao->positionUpdated(); +} + +void ServerRemotePlayer::setSAO(PlayerSAO *sao) +{ + infostream<<"ServerRemotePlayer \""<