summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJames Ravenscroft <ravenscroftj@gmail.com>2013-08-08 11:57:36 +0200
committerJames Ravenscroft <ravenscroftj@gmail.com>2013-08-08 11:57:36 +0200
commit9a6442a20652249248c8c631550718c314230ec7 (patch)
tree5edd56a2a2de24a981dd66485597fd41b28f3c11
parentMade player drowning implementation (diff)
downloadcuberite-9a6442a20652249248c8c631550718c314230ec7.tar
cuberite-9a6442a20652249248c8c631550718c314230ec7.tar.gz
cuberite-9a6442a20652249248c8c631550718c314230ec7.tar.bz2
cuberite-9a6442a20652249248c8c631550718c314230ec7.tar.lz
cuberite-9a6442a20652249248c8c631550718c314230ec7.tar.xz
cuberite-9a6442a20652249248c8c631550718c314230ec7.tar.zst
cuberite-9a6442a20652249248c8c631550718c314230ec7.zip
-rw-r--r--source/Player.cpp61
-rw-r--r--source/Player.h16
2 files changed, 38 insertions, 39 deletions
diff --git a/source/Player.cpp b/source/Player.cpp
index 0ec6bb5ca..21f31c555 100644
--- a/source/Player.cpp
+++ b/source/Player.cpp
@@ -40,8 +40,8 @@ cPlayer::cPlayer(cClientHandle* a_Client, const AString & a_PlayerName)
, m_IP("")
, m_LastBlockActionTime( 0 )
, m_LastBlockActionCnt( 0 )
- , m_AirLevel( MAX_AIR_LEVEL )
- , m_AirTickTimer( DROWNING_TICKS )
+ , m_AirLevel( MAX_AIR_LEVEL )
+ , m_AirTickTimer( DROWNING_TICKS )
, m_bVisible( true )
, m_LastGroundHeight( 0 )
, m_bTouchGround( false )
@@ -181,8 +181,8 @@ void cPlayer::Tick(float a_Dt, cChunk & a_Chunk)
super::Tick(a_Dt, a_Chunk);
- //handle air drowning stuff
- HandleAir(a_Chunk);
+ //handle air drowning stuff
+ HandleAir(a_Chunk);
if (m_bDirtyPosition)
{
@@ -1252,7 +1252,7 @@ bool cPlayer::SaveToDisk()
root["rotation"] = JSON_PlayerRotation;
root["inventory"] = JSON_Inventory;
root["health"] = m_Health;
- root["air"] = m_AirLevel;
+ root["air"] = m_AirLevel;
root["food"] = m_FoodLevel;
root["foodSaturation"] = m_FoodSaturationLevel;
root["foodTickTimer"] = m_FoodTickTimer;
@@ -1322,10 +1322,9 @@ void cPlayer::UseEquippedItem()
void cPlayer::HandleAir(cChunk & a_Chunk)
{
- //Ref.: http://www.minecraftwiki.net/wiki/Chunk_format
-
- //see if the player is /submerged/ water (block above is water)
- // Get the type of block the player's standing in:
+ //Ref.: http://www.minecraftwiki.net/wiki/Chunk_format
+ //see if the player is /submerged/ water (block above is water)
+ // 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 + 1.1);
@@ -1333,29 +1332,29 @@ void cPlayer::HandleAir(cChunk & a_Chunk)
// 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));
- if (IsBlockWater(BlockIn))
- {
- //either reduce air level or damage player
- if(m_AirLevel < 1)
- {
- if(m_AirTickTimer < 1)
- {
- //damage player
- TakeDamage(dtDrowning, NULL, 1, 1, 0);
- //reset timer
- m_AirTickTimer = DROWNING_TICKS;
- }else{
- m_AirTickTimer -= 1;
- }
- }else{
- //reduce air supply
- m_AirLevel -= 1;
- }
+ if (IsBlockWater(BlockIn))
+ {
+ //either reduce air level or damage player
+ if(m_AirLevel < 1)
+ {
+ if(m_AirTickTimer < 1)
+ {
+ //damage player
+ TakeDamage(dtDrowning, NULL, 1, 1, 0);
+ //reset timer
+ m_AirTickTimer = DROWNING_TICKS;
+ }else{
+ m_AirTickTimer -= 1;
+ }
+ }else{
+ //reduce air supply
+ m_AirLevel -= 1;
+ }
}else{
- //set the air back to maximum
- m_AirLevel = MAX_AIR_LEVEL;
- m_AirTickTimer = DROWNING_TICKS;
- }
+ //set the air back to maximum
+ m_AirLevel = MAX_AIR_LEVEL;
+ m_AirTickTimer = DROWNING_TICKS;
+ }
}
diff --git a/source/Player.h b/source/Player.h
index c0fe31863..f1d746318 100644
--- a/source/Player.h
+++ b/source/Player.h
@@ -29,8 +29,8 @@ public:
MAX_HEALTH = 20,
MAX_FOOD_LEVEL = 20,
EATING_TICKS = 30, ///< Number of ticks it takes to eat an item
- MAX_AIR_LEVEL = 300,
- DROWNING_TICKS = 10, //number of ticks per heart of damage
+ MAX_AIR_LEVEL = 300,
+ DROWNING_TICKS = 10, //number of ticks per heart of damage
} ;
// tolua_end
@@ -271,10 +271,10 @@ protected:
std::string m_PlayerName;
std::string m_LoadedWorldName;
- //Player's air level (for swimming)
- int m_AirLevel;
- //used to time ticks between damage taken via drowning/suffocation
- int m_AirTickTimer;
+ //Player's air level (for swimming)
+ int m_AirLevel;
+ //used to time ticks between damage taken via drowning/suffocation
+ int m_AirTickTimer;
bool m_bVisible;
@@ -346,8 +346,8 @@ protected:
/// Called in each tick to handle food-related processing
void HandleFood(void);
- /// Called in each tick to handle air-related processing i.e. drowning
- void HandleAir(cChunk & a_Chunk);
+ /// Called in each tick to handle air-related processing i.e. drowning
+ void HandleAir(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);