2014-10-21 15:25:52 -04:00
|
|
|
|
|
|
|
// SplashPotionEntity.h
|
|
|
|
|
|
|
|
// Declares the cSplashPotionEntity class representing a splash potion that has been thrown
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-06-06 03:16:33 -04:00
|
|
|
|
|
|
|
#pragma once
|
|
|
|
|
|
|
|
#include "ProjectileEntity.h"
|
2014-06-16 23:22:17 -04:00
|
|
|
#include "EntityEffect.h"
|
2014-06-08 00:56:01 -04:00
|
|
|
#include "../World.h"
|
2014-06-08 21:14:34 -04:00
|
|
|
#include "Entity.h"
|
2014-06-06 03:16:33 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// tolua_begin
|
|
|
|
|
|
|
|
class cSplashPotionEntity :
|
2014-06-08 00:56:01 -04:00
|
|
|
public cProjectileEntity
|
2014-06-06 03:16:33 -04:00
|
|
|
{
|
|
|
|
typedef cProjectileEntity super;
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
|
|
|
// tolua_end
|
|
|
|
|
2014-07-22 18:36:13 -04:00
|
|
|
CLASS_PROTODEF(cSplashPotionEntity)
|
2014-06-06 03:16:33 -04:00
|
|
|
|
2014-07-15 16:41:42 -04:00
|
|
|
cSplashPotionEntity(
|
|
|
|
cEntity * a_Creator,
|
|
|
|
double a_X, double a_Y, double a_Z,
|
|
|
|
const Vector3d & a_Speed,
|
2014-07-26 06:55:40 -04:00
|
|
|
const cItem & a_Item
|
2014-07-15 16:41:42 -04:00
|
|
|
);
|
|
|
|
|
2014-10-21 15:25:52 -04:00
|
|
|
// tolua_begin
|
2014-07-19 05:51:39 -04:00
|
|
|
cEntityEffect::eType GetEntityEffectType(void) const { return m_EntityEffectType; }
|
|
|
|
cEntityEffect GetEntityEffect(void) const { return m_EntityEffect; }
|
|
|
|
int GetPotionColor(void) const { return m_PotionColor; }
|
2014-07-11 21:58:11 -04:00
|
|
|
|
|
|
|
void SetEntityEffectType(cEntityEffect::eType a_EntityEffectType) { m_EntityEffectType = a_EntityEffectType; }
|
|
|
|
void SetEntityEffect(cEntityEffect a_EntityEffect) { m_EntityEffect = a_EntityEffect; }
|
2014-07-19 05:51:39 -04:00
|
|
|
void SetPotionColor(int a_PotionColor) { m_PotionColor = a_PotionColor; }
|
2014-10-21 15:25:52 -04:00
|
|
|
|
|
|
|
// tolua_end
|
2014-07-11 21:58:11 -04:00
|
|
|
|
2014-06-06 03:16:33 -04:00
|
|
|
protected:
|
|
|
|
|
2014-07-15 16:41:42 -04:00
|
|
|
cEntityEffect::eType m_EntityEffectType;
|
|
|
|
cEntityEffect m_EntityEffect;
|
2014-07-19 05:51:39 -04:00
|
|
|
int m_PotionColor;
|
2014-07-15 16:41:42 -04:00
|
|
|
|
|
|
|
|
2014-06-06 03:16:33 -04:00
|
|
|
// cProjectileEntity overrides:
|
|
|
|
virtual void OnHitSolidBlock(const Vector3d & a_HitPos, eBlockFace a_HitFace) override;
|
|
|
|
virtual void OnHitEntity (cEntity & a_EntityHit, const Vector3d & a_HitPos) override;
|
2015-01-11 16:12:26 -05:00
|
|
|
virtual void Tick (std::chrono::milliseconds a_Dt, cChunk & a_Chunk) override
|
2014-07-20 04:38:36 -04:00
|
|
|
{
|
|
|
|
if (m_DestroyTimer > 0)
|
|
|
|
{
|
|
|
|
m_DestroyTimer--;
|
|
|
|
if (m_DestroyTimer == 0)
|
|
|
|
{
|
|
|
|
Destroy();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
super::Tick(a_Dt, a_Chunk);
|
|
|
|
}
|
|
|
|
}
|
2014-06-06 03:16:33 -04:00
|
|
|
|
2014-06-08 00:56:01 -04:00
|
|
|
/** Splashes the potion, fires its particle effects and sounds
|
2014-07-15 16:41:42 -04:00
|
|
|
@param a_HitPos The position where the potion will splash */
|
2014-06-08 00:56:01 -04:00
|
|
|
void Splash(const Vector3d & a_HitPos);
|
2014-07-19 05:46:31 -04:00
|
|
|
|
|
|
|
virtual void SpawnOn(cClientHandle & a_Client) override;
|
2014-07-20 04:38:36 -04:00
|
|
|
|
|
|
|
private:
|
|
|
|
/** Time in ticks to wait for the hit animation to begin before destroying */
|
|
|
|
int m_DestroyTimer;
|
2014-07-17 16:15:34 -04:00
|
|
|
} ; // tolua_export
|
2014-10-21 15:25:52 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|