2a9664d6ca
also refactored cWorld::m_WorldAge and cWorld::m_TimeOfDay
92 lines
2.0 KiB
C++
92 lines
2.0 KiB
C++
|
|
// SplashPotionEntity.h
|
|
|
|
// Declares the cSplashPotionEntity class representing a splash potion that has been thrown
|
|
|
|
|
|
|
|
|
|
|
|
#pragma once
|
|
|
|
#include "ProjectileEntity.h"
|
|
#include "EntityEffect.h"
|
|
#include "../World.h"
|
|
#include "Entity.h"
|
|
|
|
|
|
|
|
|
|
// tolua_begin
|
|
|
|
class cSplashPotionEntity :
|
|
public cProjectileEntity
|
|
{
|
|
typedef cProjectileEntity super;
|
|
|
|
public:
|
|
|
|
// tolua_end
|
|
|
|
CLASS_PROTODEF(cSplashPotionEntity)
|
|
|
|
cSplashPotionEntity(
|
|
cEntity * a_Creator,
|
|
double a_X, double a_Y, double a_Z,
|
|
const Vector3d & a_Speed,
|
|
const cItem & a_Item
|
|
);
|
|
|
|
// tolua_begin
|
|
cEntityEffect::eType GetEntityEffectType(void) const { return m_EntityEffectType; }
|
|
cEntityEffect GetEntityEffect(void) const { return m_EntityEffect; }
|
|
int GetPotionColor(void) const { return m_PotionColor; }
|
|
|
|
void SetEntityEffectType(cEntityEffect::eType a_EntityEffectType) { m_EntityEffectType = a_EntityEffectType; }
|
|
void SetEntityEffect(cEntityEffect a_EntityEffect) { m_EntityEffect = a_EntityEffect; }
|
|
void SetPotionColor(int a_PotionColor) { m_PotionColor = a_PotionColor; }
|
|
|
|
// tolua_end
|
|
|
|
protected:
|
|
|
|
cEntityEffect::eType m_EntityEffectType;
|
|
cEntityEffect m_EntityEffect;
|
|
int m_PotionColor;
|
|
|
|
|
|
// cProjectileEntity overrides:
|
|
virtual void OnHitSolidBlock(const Vector3d & a_HitPos, eBlockFace a_HitFace) override;
|
|
virtual void OnHitEntity (cEntity & a_EntityHit, const Vector3d & a_HitPos) override;
|
|
virtual void Tick (std::chrono::milliseconds a_Dt, cChunk & a_Chunk) override
|
|
{
|
|
if (m_DestroyTimer > 0)
|
|
{
|
|
m_DestroyTimer--;
|
|
if (m_DestroyTimer == 0)
|
|
{
|
|
Destroy();
|
|
return;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
super::Tick(a_Dt, a_Chunk);
|
|
}
|
|
}
|
|
|
|
/** Splashes the potion, fires its particle effects and sounds
|
|
@param a_HitPos The position where the potion will splash */
|
|
void Splash(const Vector3d & a_HitPos);
|
|
|
|
virtual void SpawnOn(cClientHandle & a_Client) override;
|
|
|
|
private:
|
|
/** Time in ticks to wait for the hit animation to begin before destroying */
|
|
int m_DestroyTimer;
|
|
} ; // tolua_export
|
|
|
|
|
|
|
|
|