X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=src%2Fplayer.cpp;h=6bacb088d79578cfc493b1d569cafa51793e8738;hb=7985d746f97ce1b37b6ca48a8a3e7ed70d02e4b0;hp=a6ddeee64464dc6b50f07c3ebdbd26a6bfd847cd;hpb=248d7c8469f8cb37406ea0ce56d0945e38334cfb;p=dragonfireclient.git diff --git a/src/player.cpp b/src/player.cpp index a6ddeee64..6bacb088d 100644 --- a/src/player.cpp +++ b/src/player.cpp @@ -23,6 +23,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "constants.h" #include "utility.h" + Player::Player(): touching_ground(false), in_water(false), @@ -34,8 +35,7 @@ Player::Player(): m_pitch(0), m_yaw(0), m_speed(0,0,0), - m_position(0,0,0), - privs(PRIV_DEFAULT) + m_position(0,0,0) { updateName(""); resetInventory(); @@ -96,12 +96,12 @@ void Player::serialize(std::ostream &os) Settings args; args.setS32("version", 1); args.set("name", m_name); + //args.set("password", m_password); args.setFloat("pitch", m_pitch); args.setFloat("yaw", m_yaw); args.setV3F("position", m_position); args.setBool("craftresult_is_preview", craftresult_is_preview); args.setS32("hp", hp); - args.setU64("privs", privs); args.writeLines(os); @@ -130,6 +130,10 @@ void Player::deSerialize(std::istream &is) //args.getS32("version"); 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"); @@ -143,11 +147,20 @@ void Player::deSerialize(std::istream &is) }catch(SettingNotFoundException &e){ hp = 20; } - try{ - privs = args.getU64("privs"); + /*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); } @@ -197,7 +210,7 @@ RemotePlayer::RemotePlayer( // Set material buf->getMaterial().setFlag(video::EMF_LIGHTING, false); //buf->getMaterial().setFlag(video::EMF_BACK_FACE_CULLING, false); - buf->getMaterial().setTexture(0, driver->getTexture(porting::getDataPath("player.png").c_str())); + buf->getMaterial().setTexture(0, driver->getTexture(getTexturePath("player.png").c_str())); buf->getMaterial().setFlag(video::EMF_BILINEAR_FILTER, false); buf->getMaterial().setFlag(video::EMF_FOG_ENABLE, true); //buf->getMaterial().MaterialType = video::EMT_TRANSPARENT_ALPHA_CHANNEL; @@ -221,7 +234,7 @@ RemotePlayer::RemotePlayer( // Set material buf->getMaterial().setFlag(video::EMF_LIGHTING, false); //buf->getMaterial().setFlag(video::EMF_BACK_FACE_CULLING, false); - buf->getMaterial().setTexture(0, driver->getTexture(porting::getDataPath("player_back.png").c_str())); + buf->getMaterial().setTexture(0, driver->getTexture(getTexturePath("player_back.png").c_str())); buf->getMaterial().setFlag(video::EMF_BILINEAR_FILTER, false); buf->getMaterial().setFlag(video::EMF_FOG_ENABLE, true); buf->getMaterial().MaterialType = video::EMT_TRANSPARENT_ALPHA_CHANNEL_REF; @@ -296,6 +309,8 @@ void LocalPlayer::move(f32 dtime, Map &map, f32 pos_max_d, v3f oldpos = position; v3s16 oldpos_i = floatToInt(oldpos, BS); + v3f old_speed = m_speed; + /*std::cout<<"oldpos_i=("<push_back(info); + } + }*/ } } @@ -544,13 +574,13 @@ void LocalPlayer::move(f32 dtime, Map &map, f32 pos_max_d, */ if(other_axes_overlap && main_axis_collides) { - v3f old_speed = m_speed; + //v3f old_speed = m_speed; m_speed -= m_speed.dotProduct(dirs[i]) * dirs[i]; position -= position.dotProduct(dirs[i]) * dirs[i]; position += oldpos.dotProduct(dirs[i]) * dirs[i]; - if(collision_info) + /*if(collision_info) { // Report fall collision if(old_speed.Y < m_speed.Y - 0.1) @@ -560,7 +590,7 @@ void LocalPlayer::move(f32 dtime, Map &map, f32 pos_max_d, info.speed = m_speed.Y - old_speed.Y; collision_info->push_back(info); } - } + }*/ } } @@ -643,6 +673,21 @@ void LocalPlayer::move(f32 dtime, Map &map, f32 pos_max_d, Set new position */ setPosition(position); + + /* + Report collisions + */ + if(collision_info) + { + // Report fall collision + if(old_speed.Y < m_speed.Y - 0.1) + { + CollisionInfo info; + info.t = COLLISION_FALL; + info.speed = m_speed.Y - old_speed.Y; + collision_info->push_back(info); + } + } } void LocalPlayer::move(f32 dtime, Map &map, f32 pos_max_d)