95 lines
2.0 KiB
C++
95 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"
|
|
|
|
|
|
|
|
class cEntity;
|
|
|
|
|
|
|
|
// tolua_begin
|
|
|
|
class cSplashPotionEntity :
|
|
public cProjectileEntity
|
|
{
|
|
// tolua_end
|
|
|
|
using Super = cProjectileEntity;
|
|
|
|
public: // tolua_export
|
|
|
|
CLASS_PROTODEF(cSplashPotionEntity)
|
|
|
|
cSplashPotionEntity(
|
|
cEntity * a_Creator,
|
|
Vector3d a_Pos,
|
|
Vector3d a_Speed,
|
|
const cItem & a_Item
|
|
);
|
|
|
|
// tolua_begin
|
|
cEntityEffect::eType GetEntityEffectType(void) const { return m_EntityEffectType; }
|
|
int GetPotionColor(void) const { return m_PotionColor; }
|
|
const cItem & GetItem(void) const { return m_Item; }
|
|
|
|
void SetEntityEffectType(cEntityEffect::eType a_EntityEffectType) { m_EntityEffectType = a_EntityEffectType; }
|
|
void SetPotionColor(int a_PotionColor) { m_PotionColor = a_PotionColor; }
|
|
|
|
// tolua_end
|
|
|
|
cEntityEffect GetEntityEffect(void) const { return m_EntityEffect; }
|
|
void SetEntityEffect(cEntityEffect a_EntityEffect) { m_EntityEffect = a_EntityEffect; }
|
|
|
|
protected:
|
|
|
|
cEntityEffect::eType m_EntityEffectType;
|
|
cEntityEffect m_EntityEffect;
|
|
int m_PotionColor;
|
|
cItem m_Item;
|
|
|
|
|
|
// cProjectileEntity overrides:
|
|
virtual void OnHitSolidBlock(Vector3d a_HitPos, eBlockFace a_HitFace) override;
|
|
virtual void OnHitEntity (cEntity & a_EntityHit, 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(Vector3d a_HitPos);
|
|
|
|
private:
|
|
/** Time in ticks to wait for the hit animation to begin before destroying */
|
|
int m_DestroyTimer;
|
|
} ; // tolua_export
|
|
|
|
|
|
|
|
|