1
0
mirror of https://github.com/luanti-org/luanti.git synced 2025-10-24 21:35:21 +02:00

added PlayerSAO and RemotePlayer, removed ServerRemotePlayer

This commit is contained in:
Kahrl
2012-03-19 03:04:16 +01:00
committed by Perttu Ahola
parent 072c265c30
commit f8c3743991
20 changed files with 833 additions and 810 deletions

View File

@@ -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