diff options
Diffstat (limited to 'source/TNTEntity.cpp')
-rw-r--r-- | source/TNTEntity.cpp | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/source/TNTEntity.cpp b/source/TNTEntity.cpp new file mode 100644 index 000000000..636c9535c --- /dev/null +++ b/source/TNTEntity.cpp @@ -0,0 +1,70 @@ +#include "Globals.h"
+
+#include "TNTEntity.h"
+#include "World.h"
+#include "ClientHandle.h"
+
+
+
+
+
+cTNTEntity::cTNTEntity(int a_X,int a_Y,int a_Z,float a_MaxFuseTime) :
+ super(etTNT, a_X + 0.5f, a_Y + 0.5f, a_Z + 0.5f)
+{
+ m_MaxFuseTime = a_MaxFuseTime;
+ m_Counter = 0;
+}
+
+
+
+
+
+cTNTEntity::cTNTEntity(const Vector3i a_Pos,float a_MaxFuseTime) :
+ super(etTNT, a_Pos.x,a_Pos.y,a_Pos.z)
+{
+ m_MaxFuseTime = a_MaxFuseTime;
+ m_Counter = 0;
+}
+
+
+
+
+void cTNTEntity::Initialize(cWorld * a_World)
+{
+ super::Initialize(a_World);
+ a_World->BroadcastSpawn(*this);
+}
+
+
+
+
+
+void cTNTEntity::SpawnOn(cClientHandle & a_ClientHandle)
+{
+ a_ClientHandle.SendSpawnObject(*this,50,1,0,0); //50 means TNT
+ m_bDirtyPosition = false;
+ m_bDirtySpeed = false;
+ m_bDirtyOrientation = false;
+ m_bDirtyHead = false;
+}
+
+
+
+
+
+void cTNTEntity::Tick(float a_Dt, cChunk & a_Chunk)
+{
+ float delta_time = a_Dt / 1000; //Convert miliseconds to seconds
+ m_Counter += delta_time;
+ if (m_Counter > m_MaxFuseTime) //Check if we go KABOOOM
+ {
+ Destroy();
+ LOGD("BOOM at {%f,%f,%f}",GetPosX(),GetPosY(),GetPosZ());
+ m_World->DoExplosiontAt(4.0,(int)floor(GetPosX()),(int)floor(GetPosY()),(int)floor(GetPosZ()));
+ return;
+ }
+}
+
+
+
+
|