#define ACTIVEOBJECT_TYPE_LUAENTITY 7
+// Special type, not stored in active object lists
+#define ACTIVEOBJECT_TYPE_PLAYER 100
+
#endif
args.parseConfigLine(line);
}
- //args.getS32("version");
+ //args.getS32("version"); // Version field value not used
std::string name = args.get("name");
updateName(name.c_str());
- /*std::string password = "";
- if(args.exists("password"))
- password = args.get("password");
- updatePassword(password.c_str());*/
- m_pitch = args.getFloat("pitch");
- m_yaw = args.getFloat("yaw");
- m_position = args.getV3F("position");
+ setPitch(args.getFloat("pitch"));
+ setYaw(args.getFloat("yaw"));
+ setPosition(args.getV3F("position"));
try{
craftresult_is_preview = args.getBool("craftresult_is_preview");
}catch(SettingNotFoundException &e){
}catch(SettingNotFoundException &e){
hp = 20;
}
- /*try{
- std::string sprivs = args.get("privs");
- if(sprivs == "all")
- {
- privs = PRIV_ALL;
- }
- else
- {
- std::istringstream ss(sprivs);
- ss>>privs;
- }
- }catch(SettingNotFoundException &e){
- privs = PRIV_DEFAULT;
- }*/
inventory.deSerialize(is);
}
Player on the server
*/
-class ServerRemotePlayer : public Player
+#include "serverobject.h"
+#include "content_object.h" // Object type IDs
+
+class ServerRemotePlayer : public Player, public ServerActiveObject
{
public:
- ServerRemotePlayer()
+ ServerRemotePlayer():
+ ServerActiveObject(NULL, v3f(0,0,0))
+ {
+ }
+ ServerRemotePlayer(ServerEnvironment *env, v3f pos_, u16 peer_id_,
+ const char *name_):
+ ServerActiveObject(env, pos_)
{
+ setPosition(pos_);
+ peer_id = peer_id_;
+ updateName(name_);
}
virtual ~ServerRemotePlayer()
{
{
}
+ virtual void setPosition(const v3f &position)
+ {
+ Player::setPosition(position);
+ ServerActiveObject::setBasePosition(position);
+ }
+
+ /*
+ ServerActiveObject interface
+ */
+ u8 getType() const
+ {return ACTIVEOBJECT_TYPE_PLAYER;}
private:
};
Create a new player
*/
{
- player = new ServerRemotePlayer();
- //player->peer_id = c.peer_id;
- //player->peer_id = PEER_ID_INEXISTENT;
- player->peer_id = peer_id;
- player->updateName(name);
+ // Add authentication stuff
m_authmanager.add(name);
m_authmanager.setPassword(name, password);
m_authmanager.setPrivs(name,
*/
infostream<<"Server: Finding spawn place for player \""
- <<player->getName()<<"\""<<std::endl;
+ <<name<<"\""<<std::endl;
v3f pos = findSpawnPos(m_env->getServerMap());
- player->setPosition(pos);
+ player = new ServerRemotePlayer(m_env, pos, peer_id, name);
/*
Add player to environment
Some more dynamic interface
*/
virtual void setPos(v3f pos)
- { setBasePosition(pos); }
+ { setBasePosition(pos); }
// continuous: if true, object does not stop immediately at pos
virtual void moveTo(v3f pos, bool continuous)
- { setBasePosition(pos); }
+ { setBasePosition(pos); }
// If object has moved less than this and data has not changed,
// saving to disk may be omitted
- virtual float getMinimumSavedMovement(){ return 2.0*BS; }
+ virtual float getMinimumSavedMovement()
+ { return 2.0*BS; }
/*
Step object in time.