From e92b9e7ecbdf2918aab59d4eeb7bb5966430b264 Mon Sep 17 00:00:00 2001 From: "madmaxoft@gmail.com" Date: Fri, 24 Aug 2012 07:58:26 +0000 Subject: Monster classes don't use cPackets. Chat messages are sent / broadcast without cPackets. BlockEntities don't use cPackets. git-svn-id: http://mc-server.googlecode.com/svn/trunk@783 0a769ca7-a7f5-676a-18bf-c427514a06d6 --- source/cPickup.cpp | 73 +++++++++++------------------------------------------- 1 file changed, 14 insertions(+), 59 deletions(-) (limited to 'source/cPickup.cpp') diff --git a/source/cPickup.cpp b/source/cPickup.cpp index d643c9d88..dd0da9372 100644 --- a/source/cPickup.cpp +++ b/source/cPickup.cpp @@ -17,8 +17,6 @@ #include "cRoot.h" #include "cTracer.h" -#include "packets/cPacket_TeleportEntity.h" -#include "packets/cPacket_PickupSpawn.h" #include "packets/cPacket_CollectItem.h" #include "Vector3d.h" @@ -30,10 +28,9 @@ CLASS_DEFINITION( cPickup, cEntity ) -cPickup::~cPickup() -{ - delete m_Item; -} + + + cPickup::cPickup(int a_X, int a_Y, int a_Z, const cItem & a_Item, float a_SpeedX /* = 0.f */, float a_SpeedY /* = 0.f */, float a_SpeedZ /* = 0.f */) : cEntity( ((double)(a_X))/32, ((double)(a_Y))/32, ((double)(a_Z))/32 ) @@ -44,18 +41,7 @@ cPickup::cPickup(int a_X, int a_Y, int a_Z, const cItem & a_Item, float a_SpeedX , m_Item( new cItem( a_Item ) ) , m_bCollected( false ) { - - //LOG("New pickup: ID(%i) Amount(%i) Health(%i)", m_Item.m_ItemID, m_Item.m_ItemCount, m_Item.m_ItemHealth ); - - // Spawn it on clients - if (!a_Item.IsEmpty()) - { - std::auto_ptr PickupSpawn(GetSpawnPacket()); - if (PickupSpawn.get() != NULL) - { - cRoot::Get()->GetServer()->Broadcast(*(PickupSpawn.get())); - } - } + // LOGD("New pickup: ID(%i) Amount(%i) Health(%i)", m_Item.m_ItemID, m_Item.m_ItemCount, m_Item.m_ItemHealth ); m_EntityType = eEntityType_Pickup; } @@ -64,59 +50,28 @@ cPickup::cPickup(int a_X, int a_Y, int a_Z, const cItem & a_Item, float a_SpeedX -cPickup::cPickup(cPacket_PickupSpawn* a_PickupSpawnPacket) - : cEntity( ((double)a_PickupSpawnPacket->m_PosX)/32, ((double)a_PickupSpawnPacket->m_PosY)/32, ((double)a_PickupSpawnPacket->m_PosZ)/32 ) - , m_Speed( new Vector3f() ) - , m_ResultingSpeed(new Vector3f()) - , m_WaterSpeed(new Vector3f()) - , m_bOnGround( false ) - , m_bReplicated( false ) - , m_Timer( 0.f ) - , m_bCollected( false ) +cPickup::~cPickup() { - a_PickupSpawnPacket->m_UniqueID = m_UniqueID; + delete m_Item; +} - m_Item = new cItem(); - m_Item->m_ItemID = (ENUM_ITEM_ID)a_PickupSpawnPacket->m_Item; - m_Item->m_ItemCount = a_PickupSpawnPacket->m_Count; - m_Item->m_ItemHealth = 0x0; - m_Speed.x = (float)(a_PickupSpawnPacket->m_Rotation) / 8; - m_Speed.y = (float)(a_PickupSpawnPacket->m_Pitch) / 8; - m_Speed.z = (float)(a_PickupSpawnPacket->m_Roll) / 8; - // Spawn it on clients - if (a_PickupSpawnPacket->m_Item != E_ITEM_EMPTY) - { - cRoot::Get()->GetServer()->Broadcast( *a_PickupSpawnPacket ); - } - m_EntityType = eEntityType_Pickup; + +void cPickup::Initialize(cWorld * a_World) +{ + super::Initialize(a_World); + a_World->BroadcastSpawn(*this); } -cPacket * cPickup::GetSpawnPacket(void) const +void cPickup::SpawnOn(cClientHandle & a_Client) { - if (m_Item->IsEmpty()) - { - return NULL; - } - - cPacket_PickupSpawn * PickupSpawn = new cPacket_PickupSpawn; - PickupSpawn->m_UniqueID = m_UniqueID; - PickupSpawn->m_Item = (short)m_Item->m_ItemID; - PickupSpawn->m_Count = m_Item->m_ItemCount; - PickupSpawn->m_Health = m_Item->m_ItemHealth; - PickupSpawn->m_PosX = (int) (m_Pos.x * 32); - PickupSpawn->m_PosY = (int) (m_Pos.y * 32); - PickupSpawn->m_PosZ = (int) (m_Pos.z * 32); - PickupSpawn->m_Rotation = (char)(m_Speed.x * 8); - PickupSpawn->m_Pitch = (char)(m_Speed.y * 8); - PickupSpawn->m_Roll = (char)(m_Speed.z * 8); - return PickupSpawn; + a_Client.SendPickupSpawn(*this); } -- cgit v1.2.3