From b75fc5f4e8dc837f069e89541b52144defa2d1b9 Mon Sep 17 00:00:00 2001 From: "keyboard.osh@gmail.com" Date: Thu, 18 Apr 2013 02:42:45 +0000 Subject: Initial implementation of explosions and TNT block git-svn-id: http://mc-server.googlecode.com/svn/trunk@1392 0a769ca7-a7f5-676a-18bf-c427514a06d6 --- source/TNTEntity.cpp | 70 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 source/TNTEntity.cpp (limited to 'source/TNTEntity.cpp') 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; + } +} + + + + -- cgit v1.2.3