diff options
author | Tiger Wang <ziwei.tiger@hotmail.co.uk> | 2014-06-15 21:28:08 +0200 |
---|---|---|
committer | Tiger Wang <ziwei.tiger@hotmail.co.uk> | 2014-06-15 21:28:08 +0200 |
commit | abbd11be6da261293f2086135e05e9a0659220f2 (patch) | |
tree | 249a651c23b504a0ea344087d63a6f9c1061bc27 /src | |
parent | Fixed two redstone bugs (diff) | |
download | cuberite-abbd11be6da261293f2086135e05e9a0659220f2.tar cuberite-abbd11be6da261293f2086135e05e9a0659220f2.tar.gz cuberite-abbd11be6da261293f2086135e05e9a0659220f2.tar.bz2 cuberite-abbd11be6da261293f2086135e05e9a0659220f2.tar.lz cuberite-abbd11be6da261293f2086135e05e9a0659220f2.tar.xz cuberite-abbd11be6da261293f2086135e05e9a0659220f2.tar.zst cuberite-abbd11be6da261293f2086135e05e9a0659220f2.zip |
Diffstat (limited to 'src')
-rw-r--r-- | src/Entities/Player.cpp | 19 | ||||
-rw-r--r-- | src/Entities/Player.h | 5 |
2 files changed, 22 insertions, 2 deletions
diff --git a/src/Entities/Player.cpp b/src/Entities/Player.cpp index feb09b5d2..cffdd71b1 100644 --- a/src/Entities/Player.cpp +++ b/src/Entities/Player.cpp @@ -22,6 +22,12 @@ #include "inifile/iniFile.h" #include "json/json.h" +// 6000 ticks or 5 minutes +#define PLAYER_INVENTORY_SAVE_INTERVAL 6000 + +// 1000 = once per second +#define PLAYER_LIST_TIME_MS 1000 + @@ -64,6 +70,7 @@ cPlayer::cPlayer(cClientHandle* a_Client, const AString & a_PlayerName) , m_BowCharge(0) , m_FloaterID(-1) , m_Team(NULL) + , m_TicksUntilNextSave(PLAYER_INVENTORY_SAVE_INTERVAL) { LOGD("Created a player object for \"%s\" @ \"%s\" at %p, ID %d", a_PlayerName.c_str(), a_Client->GetIPString().c_str(), @@ -250,7 +257,7 @@ void cPlayer::Tick(float a_Dt, cChunk & a_Chunk) // Send Player List (Once per m_LastPlayerListTime/1000 ms) cTimer t1; - if (m_LastPlayerListTime + cPlayer::PLAYER_LIST_TIME_MS <= t1.GetNowTime()) + if (m_LastPlayerListTime + PLAYER_LIST_TIME_MS <= t1.GetNowTime()) { m_World->SendPlayerList(this); m_LastPlayerListTime = t1.GetNowTime(); @@ -260,6 +267,16 @@ void cPlayer::Tick(float a_Dt, cChunk & a_Chunk) { m_LastGroundHeight = (float)GetPosY(); } + + if (m_TicksUntilNextSave == 0) + { + SaveToDisk(); + m_TicksUntilNextSave = PLAYER_INVENTORY_SAVE_INTERVAL; + } + else + { + m_TicksUntilNextSave--; + } } diff --git a/src/Entities/Player.h b/src/Entities/Player.h index 83b9ad593..a9acf6efc 100644 --- a/src/Entities/Player.h +++ b/src/Entities/Player.h @@ -461,7 +461,6 @@ protected: cItem m_DraggingItem; long long m_LastPlayerListTime; - static const unsigned short PLAYER_LIST_TIME_MS = 1000; // 1000 = once per second cClientHandle * m_ClientHandle; @@ -539,6 +538,10 @@ protected: Set by a right click on unoccupied bed, unset by a time fast forward or teleport */ bool m_bIsInBed; + /** How long till the player's inventory will be saved + Default save interval is #defined in PLAYER_INVENTORY_SAVE_INTERVAL */ + unsigned int m_TicksUntilNextSave; + } ; // tolua_export |