X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=src%2Fplayer.h;h=12ea0dba1c14e087a74e5fd3e98cee2f7c0cdfa9;hb=d419e4cbb65d899239fafb5027b16fb9cb564adf;hp=8c9e7e725e8a12597344ceaaa5c2b82f9a4c1610;hpb=497ff1ecd64c8908f988e15ca879824f2781e3fd;p=minetest.git diff --git a/src/player.h b/src/player.h index 8c9e7e725..12ea0dba1 100644 --- a/src/player.h +++ b/src/player.h @@ -1,6 +1,6 @@ /* Minetest -Copyright (C) 2010-2011 celeron55, Perttu Ahola +Copyright (C) 2010-2013 celeron55, Perttu Ahola This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by @@ -87,6 +87,7 @@ class Map; class IGameDef; struct CollisionInfo; class PlayerSAO; +struct HudElement; class Player { @@ -159,6 +160,16 @@ class Player return m_yaw; } + u16 getBreath() + { + return m_breath; + } + + virtual void setBreath(u16 breath) + { + m_breath = breath; + } + f32 getRadPitch() { return -1.0 * m_pitch * core::DEGTORAD; @@ -179,6 +190,19 @@ class Player return m_name; } + core::aabbox3d getCollisionbox() { + return m_collisionbox; + } + + u32 getFreeHudID() const { + size_t size = hud.size(); + for (size_t i = 0; i != size; i++) { + if (!hud[i]) + return i; + } + return size; + } + virtual bool isLocal() const { return false; } virtual PlayerSAO *getPlayerSAO() @@ -192,7 +216,24 @@ class Player deSerialize stops reading exactly at the right point. */ void serialize(std::ostream &os); - void deSerialize(std::istream &is); + void deSerialize(std::istream &is, std::string playername); + + bool checkModified() + { + if(m_last_hp != hp || m_last_pitch != m_pitch || + m_last_pos != m_position || m_last_yaw != m_yaw || + !(inventory == m_last_inventory)) + { + m_last_hp = hp; + m_last_pitch = m_pitch; + m_last_pos = m_position; + m_last_yaw = m_yaw; + m_last_inventory = inventory; + return true; + } else { + return false; + } + } bool touching_ground; // This oscillates so that the player jumps a bit above the surface @@ -222,13 +263,17 @@ class Player f32 movement_liquid_sink; f32 movement_gravity; + float physics_override_speed; + float physics_override_jump; + float physics_override_gravity; + u16 hp; float hurt_tilt_timer; float hurt_tilt_strength; u16 peer_id; - + std::string inventory_formspec; PlayerControl control; @@ -238,17 +283,30 @@ class Player } u32 keyPressed; + + std::vector hud; + u32 hud_flags; + s32 hud_hotbar_itemcount; protected: IGameDef *m_gamedef; char m_name[PLAYERNAME_SIZE]; + u16 m_breath; f32 m_pitch; f32 m_yaw; v3f m_speed; v3f m_position; + core::aabbox3d m_collisionbox; + + f32 m_last_pitch; + f32 m_last_yaw; + v3f m_last_pos; + u16 m_last_hp; + Inventory m_last_inventory; }; + /* Player on the server */