X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=src%2Fplayer.cpp;h=584c00dd0855158a400ecc14bc5e0f3b72588281;hb=4e1f50035e860a00636ca5d804c267119df99601;hp=d3e16810ff51a738353002288736437e33a3430d;hpb=88ffb3f73bb16c6680ee10a8e804a699e366edd8;p=dragonfireclient.git diff --git a/src/player.cpp b/src/player.cpp index d3e16810f..584c00dd0 100644 --- a/src/player.cpp +++ b/src/player.cpp @@ -21,7 +21,6 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "hud.h" #include "constants.h" #include "gamedef.h" -#include "connection.h" // PEER_ID_INEXISTENT #include "settings.h" #include "content_sao.h" #include "util/numeric.h" @@ -34,16 +33,26 @@ Player::Player(IGameDef *gamedef): is_climbing(false), swimming_vertical(false), camera_barely_in_ceiling(false), + light(0), inventory(gamedef->idef()), hp(PLAYER_MAX_HP), + hurt_tilt_timer(0), + hurt_tilt_strength(0), peer_id(PEER_ID_INEXISTENT), + keyPressed(0), // protected m_gamedef(gamedef), + m_breath(-1), m_pitch(0), m_yaw(0), m_speed(0,0,0), m_position(0,0,0), - m_collisionbox(-BS*0.30,0.0,-BS*0.30,BS*0.30,BS*1.55,BS*0.30) + m_collisionbox(-BS*0.30,0.0,-BS*0.30,BS*0.30,BS*1.55,BS*0.30), + m_last_pitch(0), + m_last_yaw(0), + m_last_pos(0,0,0), + m_last_hp(PLAYER_MAX_HP), + m_last_inventory(gamedef->idef()) { updateName(""); inventory.clear(); @@ -52,37 +61,39 @@ Player::Player(IGameDef *gamedef): craft->setWidth(3); inventory.addList("craftpreview", 1); inventory.addList("craftresult", 1); + m_last_inventory = inventory; // Can be redefined via Lua - inventory_formspec = "size[8,7.5]" + inventory_formspec = "size[8,7.5]" //"image[1,0.6;1,2;player.png]" "list[current_player;main;0,3.5;8,4;]" "list[current_player;craft;3,0;3,3;]" "list[current_player;craftpreview;7,1;1,1;]"; // Initialize movement settings at default values, so movement can work if the server fails to send them - movement_acceleration_default = 3 * BS; - movement_acceleration_air = 2 * BS; - movement_acceleration_fast = 10 * BS; - movement_speed_walk = 4 * BS; - movement_speed_crouch = 1.35 * BS; - movement_speed_fast = 20 * BS; - movement_speed_climb = 2 * BS; - movement_speed_jump = 6.5 * BS; - movement_liquid_fluidity = 1 * BS; - movement_liquid_fluidity_smooth = 0.5 * BS; - movement_liquid_sink = 10 * BS; - movement_gravity = 9.81 * BS; + movement_acceleration_default = 3 * BS; + movement_acceleration_air = 2 * BS; + movement_acceleration_fast = 10 * BS; + movement_speed_walk = 4 * BS; + movement_speed_crouch = 1.35 * BS; + movement_speed_fast = 20 * BS; + movement_speed_climb = 2 * BS; + movement_speed_jump = 6.5 * BS; + movement_liquid_fluidity = 1 * BS; + movement_liquid_fluidity_smooth = 0.5 * BS; + movement_liquid_sink = 10 * BS; + movement_gravity = 9.81 * BS; // Movement overrides are multipliers and must be 1 by default - physics_override_speed = 1; - physics_override_jump = 1; + physics_override_speed = 1; + physics_override_jump = 1; physics_override_gravity = 1; - hud_flags = HUD_DRAW_HOTBAR - | HUD_DRAW_HEALTHBAR - | HUD_DRAW_CROSSHAIR - | HUD_DRAW_WIELDITEM; + hud_flags = HUD_FLAG_HOTBAR_VISIBLE | HUD_FLAG_HEALTHBAR_VISIBLE | + HUD_FLAG_CROSSHAIR_VISIBLE | HUD_FLAG_WIELDITEM_VISIBLE | + HUD_FLAG_BREATHBAR_VISIBLE; + + hud_hotbar_itemcount = HUD_HOTBAR_ITEMCOUNT_DEFAULT; } Player::~Player() @@ -169,15 +180,16 @@ void Player::serialize(std::ostream &os) args.setFloat("yaw", m_yaw); args.setV3F("position", m_position); args.setS32("hp", hp); + args.setS32("breath", m_breath); args.writeLines(os); os<<"PlayerArgsEnd\n"; - + inventory.serialize(os); } -void Player::deSerialize(std::istream &is) +void Player::deSerialize(std::istream &is, std::string playername) { Settings args; @@ -185,7 +197,7 @@ void Player::deSerialize(std::istream &is) { if(is.eof()) throw SerializationError - ("Player::deSerialize(): PlayerArgsEnd not found"); + (("Player::deSerialize(): PlayerArgsEnd of player \"" + playername + "\" not found").c_str()); std::string line; std::getline(is, line); std::string trimmedline = trim(line); @@ -205,6 +217,11 @@ void Player::deSerialize(std::istream &is) }catch(SettingNotFoundException &e){ hp = 20; } + try{ + m_breath = args.getS32("breath"); + }catch(SettingNotFoundException &e){ + m_breath = 11; + } inventory.deSerialize(is); @@ -222,6 +239,9 @@ void Player::deSerialize(std::istream &is) inventory.getList("craftresult")->changeItem(0, ItemStack()); } } + + // Set m_last_* + checkModified(); } /*