summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJames Ravenscroft <ravenscroftj@gmail.com>2013-08-09 09:50:33 +0200
committerJames Ravenscroft <ravenscroftj@gmail.com>2013-08-09 09:50:33 +0200
commitffce5d143fe2b6224ee7ff29e40c9a73af0463e4 (patch)
tree1a57ee22dbeed4a1ccc1cb18407affe90ebd9b97
parentAdded IsSwimming and IsSubmerged flags and access methods (diff)
downloadcuberite-ffce5d143fe2b6224ee7ff29e40c9a73af0463e4.tar
cuberite-ffce5d143fe2b6224ee7ff29e40c9a73af0463e4.tar.gz
cuberite-ffce5d143fe2b6224ee7ff29e40c9a73af0463e4.tar.bz2
cuberite-ffce5d143fe2b6224ee7ff29e40c9a73af0463e4.tar.lz
cuberite-ffce5d143fe2b6224ee7ff29e40c9a73af0463e4.tar.xz
cuberite-ffce5d143fe2b6224ee7ff29e40c9a73af0463e4.tar.zst
cuberite-ffce5d143fe2b6224ee7ff29e40c9a73af0463e4.zip
-rw-r--r--source/Player.cpp14
-rw-r--r--source/Player.h12
2 files changed, 10 insertions, 16 deletions
diff --git a/source/Player.cpp b/source/Player.cpp
index eab6e08e5..ba165989a 100644
--- a/source/Player.cpp
+++ b/source/Player.cpp
@@ -192,7 +192,7 @@ void cPlayer::Tick(float a_Dt, cChunk & a_Chunk)
if (m_bDirtyPosition)
{
// Apply food exhaustion from movement:
- ApplyFoodExhaustionFromMovement(a_Chunk);
+ ApplyFoodExhaustionFromMovement();
cRoot::Get()->GetPluginManager()->CallHookPlayerMoving(*this);
BroadcastMovementUpdate(m_ClientHandle);
@@ -1445,7 +1445,7 @@ void cPlayer::HandleFood(void)
-void cPlayer::ApplyFoodExhaustionFromMovement(cChunk & a_Chunk)
+void cPlayer::ApplyFoodExhaustionFromMovement()
{
if (IsGameModeCreative())
{
@@ -1463,14 +1463,6 @@ void cPlayer::ApplyFoodExhaustionFromMovement(cChunk & a_Chunk)
return;
}
- // Get the type of block the player's standing in:
- BLOCKTYPE BlockIn;
- int RelX = (int)floor(m_LastPosX) - a_Chunk.GetPosX() * cChunkDef::Width;
- int RelY = (int)floor(m_LastPosY + 0.1);
- int RelZ = (int)floor(m_LastPosZ) - a_Chunk.GetPosZ() * cChunkDef::Width;
- // Use Unbounded, because we're being called *after* processing super::Tick(), which could have changed our chunk
- VERIFY(a_Chunk.UnboundedRelGetBlockType(RelX, RelY, RelZ, BlockIn));
-
// Apply the exhaustion based on distance travelled:
double BaseExhaustion = Movement.Length();
if (IsSprinting())
@@ -1478,7 +1470,7 @@ void cPlayer::ApplyFoodExhaustionFromMovement(cChunk & a_Chunk)
// 0.1 pt per meter sprinted
BaseExhaustion = BaseExhaustion * 0.1;
}
- else if (IsBlockWater(BlockIn))
+ else if (IsSwimming())
{
// 0.015 pt per meter swum
BaseExhaustion = BaseExhaustion * 0.015;
diff --git a/source/Player.h b/source/Player.h
index ab9a17cf2..105e7d0a1 100644
--- a/source/Player.h
+++ b/source/Player.h
@@ -253,6 +253,12 @@ public:
/// Starts or stops sprinting, sends the max speed update to the client, if needed
void SetSprint(bool a_IsSprinting);
+ /// Returns whether the player is swimming or not
+ virtual bool IsSwimming(void) const{ return m_IsSwimming; }
+
+ /// Return whether the player is under water or not
+ virtual bool IsSubmerged(void) const{ return m_IsSubmerged; }
+
// tolua_end
// cEntity overrides:
@@ -260,11 +266,7 @@ public:
virtual bool IsSprinting(void) const { return m_IsSprinting; }
virtual bool IsRclking (void) const { return IsEating(); }
- /// Returns whether the player is swimming or not
- virtual bool IsSwimming(void) const{ return m_IsSwimming; }
- /// Return whether the player is under water or not
- virtual bool IsSubmerged(void) const{ return m_IsSubmerged; }
protected:
typedef std::map< std::string, bool > PermissionMap;
@@ -362,7 +364,7 @@ protected:
void SetSwimState(cChunk & a_Chunk);
/// Adds food exhaustion based on the difference between Pos and LastPos, sprinting status and swimming (in water block)
- void ApplyFoodExhaustionFromMovement(cChunk & a_Chunk);
+ void ApplyFoodExhaustionFromMovement();
} ; // tolua_export