]> git.lizzy.rs Git - dragonfireclient.git/blobdiff - src/player.h
Send KEY_END when (re)creating a text input
[dragonfireclient.git] / src / player.h
index a7a2433ce3d52f10f461c7d349f921958d703e46..9a6ad93bfacad954121dda8964f27c749cdf8cc7 100644 (file)
@@ -62,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;
        }
@@ -92,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;
@@ -118,9 +140,12 @@ 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;
 
@@ -130,6 +155,7 @@ class Player
 
 protected:
        char m_name[PLAYERNAME_SIZE];
+       u16 m_selected_item;
        f32 m_pitch;
        f32 m_yaw;
        v3f m_speed;
@@ -203,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;