summaryrefslogtreecommitdiff
path: root/src/content_sao.h
diff options
context:
space:
mode:
authorKahrl <kahrl@gmx.net>2012-03-19 03:04:16 +0100
committerPerttu Ahola <celeron55@gmail.com>2012-03-29 14:05:45 +0300
commitf8c3743991a6897c7133bf35dc2699b8b5f9df7c (patch)
treee856506d9c96d572d1a3b0a58edf00f0d70cba43 /src/content_sao.h
parent072c265c301d3336203b77b8b1651fdacf3a7682 (diff)
downloadminetest-f8c3743991a6897c7133bf35dc2699b8b5f9df7c.tar.gz
minetest-f8c3743991a6897c7133bf35dc2699b8b5f9df7c.tar.bz2
minetest-f8c3743991a6897c7133bf35dc2699b8b5f9df7c.zip
added PlayerSAO and RemotePlayer, removed ServerRemotePlayer
Diffstat (limited to 'src/content_sao.h')
-rw-r--r--src/content_sao.h104
1 files changed, 100 insertions, 4 deletions
diff --git a/src/content_sao.h b/src/content_sao.h
index 53e701d8c..9ceb6ed6a 100644
--- a/src/content_sao.h
+++ b/src/content_sao.h
@@ -23,14 +23,13 @@ with this program; if not, write to the Free Software Foundation, Inc.,
#include "serverobject.h"
#include "content_object.h"
#include "itemgroup.h"
+#include "player.h"
ServerActiveObject* createItemSAO(ServerEnvironment *env, v3f pos,
const std::string itemstring);
/*
- LuaEntitySAO
-
- This is the only SAO that needs to have a bunch of it's internals exposed.
+ LuaEntitySAO needs some internals exposed.
*/
struct LuaEntityProperties;
@@ -59,7 +58,7 @@ public:
float getMinimumSavedMovement();
std::string getDescription();
void setHP(s16 hp);
- s16 getHP();
+ s16 getHP() const;
/* LuaEntitySAO-specific */
void setVelocity(v3f velocity);
v3f getVelocity();
@@ -94,5 +93,102 @@ private:
bool m_armor_groups_sent;
};
+/*
+ PlayerSAO needs some internals exposed.
+*/
+
+class PlayerSAO : public ServerActiveObject
+{
+public:
+ PlayerSAO(ServerEnvironment *env_, Player *player_, u16 peer_id_);
+ ~PlayerSAO();
+ u8 getType() const
+ {return ACTIVEOBJECT_TYPE_PLAYER;}
+ std::string getDescription();
+
+ /*
+ Active object <-> environment interface
+ */
+
+ void addedToEnvironment();
+ void removingFromEnvironment();
+ bool isStaticAllowed() const;
+ bool unlimitedTransferDistance() const;
+ std::string getClientInitializationData();
+ std::string getStaticData();
+ void step(float dtime, bool send_recommended);
+ void setBasePosition(const v3f &position);
+ void setPos(v3f pos);
+ void moveTo(v3f pos, bool continuous);
+
+ /*
+ Interaction interface
+ */
+
+ int punch(v3f dir,
+ const ToolCapabilities *toolcap,
+ ServerActiveObject *puncher,
+ float time_from_last_punch);
+ void rightClick(ServerActiveObject *clicker);
+ s16 getHP() const;
+ void setHP(s16 hp);
+
+ /*
+ Inventory interface
+ */
+
+ Inventory* getInventory();
+ const Inventory* getInventory() const;
+ InventoryLocation getInventoryLocation() const;
+ void setInventoryModified();
+ std::string getWieldList() const;
+ int getWieldIndex() const;
+ void setWieldIndex(int i);
+
+ /*
+ PlayerSAO-specific
+ */
+
+ void disconnected();
+
+ void createCreativeInventory();
+
+ Player* getPlayer()
+ {
+ return m_player;
+ }
+ u16 getPeerID() const
+ {
+ return m_peer_id;
+ }
+ v3f getLastGoodPosition() const
+ {
+ return m_last_good_position;
+ }
+ float resetTimeFromLastPunch()
+ {
+ float r = m_time_from_last_punch;
+ m_time_from_last_punch = 0.0;
+ return r;
+ }
+
+private:
+ Player *m_player;
+ u16 m_peer_id;
+ Inventory *m_inventory;
+ v3f m_last_good_position;
+ float m_last_good_position_age;
+ float m_time_from_last_punch;
+ int m_wield_index;
+ bool m_position_not_sent;
+
+public:
+ // Some flags used by Server
+ bool m_teleported;
+ bool m_inventory_not_sent;
+ bool m_hp_not_sent;
+ bool m_wielded_item_not_sent;
+};
+
#endif