diff options
author | admin@omencraft.com <admin@omencraft.com@0a769ca7-a7f5-676a-18bf-c427514a06d6> | 2011-11-06 10:23:20 +0100 |
---|---|---|
committer | admin@omencraft.com <admin@omencraft.com@0a769ca7-a7f5-676a-18bf-c427514a06d6> | 2011-11-06 10:23:20 +0100 |
commit | 36f7084e3fb4193676b14f302d0f961f2102e4ba (patch) | |
tree | b2e7d7c7d1854dbe484605b4054e707c0bd09cef /source/cWorld.cpp | |
parent | Finished most of piston class. Pistons should work when a redstone current with wire is lit up or extinguished near them but don't yet. There'sa bug to kill. (diff) | |
download | cuberite-36f7084e3fb4193676b14f302d0f961f2102e4ba.tar cuberite-36f7084e3fb4193676b14f302d0f961f2102e4ba.tar.gz cuberite-36f7084e3fb4193676b14f302d0f961f2102e4ba.tar.bz2 cuberite-36f7084e3fb4193676b14f302d0f961f2102e4ba.tar.lz cuberite-36f7084e3fb4193676b14f302d0f961f2102e4ba.tar.xz cuberite-36f7084e3fb4193676b14f302d0f961f2102e4ba.tar.zst cuberite-36f7084e3fb4193676b14f302d0f961f2102e4ba.zip |
Diffstat (limited to 'source/cWorld.cpp')
-rw-r--r-- | source/cWorld.cpp | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/source/cWorld.cpp b/source/cWorld.cpp index c67998064..0601746e8 100644 --- a/source/cWorld.cpp +++ b/source/cWorld.cpp @@ -13,6 +13,7 @@ #include "../iniFile/iniFile.h"
#include "cChunkMap.h"
#include "cWaterSimulator.h"
+#include "cLavaSimulator.h"
#include "cChicken.h"
#include "cSpider.h"
#include "cCow.h" //cow
@@ -47,6 +48,8 @@ #include <sys/types.h>
#endif
+
+
float cWorld::m_Time = 0.f;
char g_BlockLightValue[128];
@@ -94,6 +97,7 @@ cWorld::~cWorld() UnlockEntities();
delete m_WaterSimulator;
+ delete m_LavaSimulator;
UnloadUnusedChunks();
delete m_ChunkMap;
@@ -114,9 +118,9 @@ cWorld::cWorld( const char* a_WorldName ) cMakeDir::MakeDir(m_pState->WorldName.c_str());
srand( (unsigned int) time(0) );
- m_SpawnX = (double)((rand()%10000)-5000);
+ m_SpawnX = (double)((rand()%1000)-500);
m_SpawnY = 128;
- m_SpawnZ = (double)((rand()%10000)-5000);
+ m_SpawnZ = (double)((rand()%1000)-500);
m_WorldSeed = rand();
m_GameMode = 0;
@@ -187,6 +191,7 @@ cWorld::cWorld( const char* a_WorldName ) m_ChunksCriticalSection = new cCriticalSection();
m_WaterSimulator = new cWaterSimulator( this );
+ m_LavaSimulator = new cLavaSimulator( this );
memset( g_BlockLightValue, 0x0, 128 );
memset( g_BlockSpreadLightFalloff, 0xf, 128 ); // 0xf means total falloff
@@ -263,6 +268,8 @@ void cWorld::Tick(float a_Dt) {
m_Time+=a_Dt/1000.f;
+ CurrentTick++;
+
bool bSendTime = false;
m_WorldTimeFraction+=a_Dt/1000.f;
while( m_WorldTimeFraction > 1.f )
@@ -302,7 +309,10 @@ void cWorld::Tick(float a_Dt) }
m_ChunkMap->Tick(a_Dt);
- m_WaterSimulator->Simulate(a_Dt);
+ if( CurrentTick % 6 == 0 )
+ m_WaterSimulator->Simulate(a_Dt);
+ if( CurrentTick % 12 == 0 )
+ m_LavaSimulator->Simulate(a_Dt);
UnlockChunks();
if( m_Time - m_LastSave > 60*5 ) // Save each 5 minutes
@@ -499,6 +509,7 @@ cChunk* cWorld::GetChunkOfBlock( int a_X, int a_Y, int a_Z ) void cWorld::SetBlock( int a_X, int a_Y, int a_Z, char a_BlockType, char a_BlockMeta )
{
m_WaterSimulator->WakeUp( a_X, a_Y, a_Z );
+ m_LavaSimulator->WakeUp( a_X, a_Y, a_Z );
int ChunkX, ChunkY, ChunkZ;
AbsoluteToRelative( a_X, a_Y, a_Z, ChunkX, ChunkY, ChunkZ );
@@ -556,6 +567,7 @@ bool cWorld::DigBlock( int a_X, int a_Y, int a_Z, cItem & a_PickupItem ) {
DestChunk->SetBlock(PosX, PosY, PosZ, 0, 0 );
m_WaterSimulator->WakeUp( a_X, a_Y, a_Z );
+ m_LavaSimulator->WakeUp( a_X, a_Y, a_Z );
if( !a_PickupItem.IsEmpty() )
{
|