X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=src%2Fplayer.h;h=9a6ad93bfacad954121dda8964f27c749cdf8cc7;hb=42134bb49eaa5116838a2c188c432c8b9420dff8;hp=be93766fd7a949ed2fa30498fc9fd5e9af4abb30;hpb=1520d49310c07b1f8500582b6ac22baedcc80dcb;p=dragonfireclient.git diff --git a/src/player.h b/src/player.h index be93766fd..9a6ad93bf 100644 --- a/src/player.h +++ b/src/player.h @@ -26,31 +26,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #define PLAYERNAME_SIZE 20 -#define PLAYERNAME_ALLOWED_CHARS "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_.," - -// Player privileges. These form a bitmask stored in the privs field -// of the player, and define things they're allowed to do. See also -// the static methods Player::privsToString and stringToPrivs that -// convert these to human-readable form. -const u64 PRIV_BUILD = 1; // Can build - i.e. modify the world - // (not enforced yet) -const u64 PRIV_TELEPORT = 2; // Can teleport -const u64 PRIV_SETTIME = 4; // Can set the time -const u64 PRIV_PRIVS = 8; // Can grant and revoke privileges -const u64 PRIV_SERVER = 16; // Can manage the server (e.g. shutodwn ,settings) - -const u64 PRIV_DEFAULT = PRIV_BUILD; -const u64 PRIV_ALL = 0x7FFFFFFFFFFFFFFFULL; -const u64 PRIV_INVALID = 0x8000000000000000ULL; - -// Convert a privileges value into a human-readable string, -// with each component separated by a comma. -std::wstring privsToString(u64 privs); - -// Converts a comma-seperated list of privilege values into a -// privileges value. The reverse of privsToString(). Returns -// PRIV_INVALID if there is anything wrong with the input. -u64 stringToPrivs(std::wstring str); +#define PLAYERNAME_ALLOWED_CHARS "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_" class Map; @@ -86,7 +62,20 @@ class Player return m_position; } - virtual void setPosition(v3f position) + v3s16 getLightPosition() const + { + return floatToInt(m_position + v3f(0,BS+BS/2,0), BS); + } + + v3f getEyePosition() + { + // This is at the height of the eyes of the current figure + // return m_position + v3f(0, BS+BS/2, 0); + // This is more like in minecraft + return m_position + v3f(0,BS+(5*BS)/8,0); + } + + virtual void setPosition(const v3f &position) { m_position = position; } @@ -116,6 +105,15 @@ class Player snprintf(m_name, PLAYERNAME_SIZE, "%s", name); } + virtual void wieldItem(u16 item); + virtual const InventoryItem *getWieldItem() const + { + const InventoryList *list = inventory.getList("main"); + if (list) + return list->getItem(m_selected_item); + return NULL; + } + const char * getName() { return m_name; @@ -142,21 +140,22 @@ class Player bool in_water; // This is more stable and defines the maximum speed of the player bool in_water_stable; + bool is_climbing; bool swimming_up; Inventory inventory; + // Actual inventory is backed up here when creative mode is used + Inventory *inventory_backup; bool craftresult_is_preview; u16 hp; - // Player's privileges - a bitmaps of PRIV_xxxx. - u64 privs; - u16 peer_id; protected: char m_name[PLAYERNAME_SIZE]; + u16 m_selected_item; f32 m_pitch; f32 m_yaw; v3f m_speed; @@ -230,7 +229,7 @@ class RemotePlayer : public Player, public scene::ISceneNode return m_box; } - void setPosition(v3f position) + void setPosition(const v3f &position) { m_oldpos = m_showpos;