2022-10-09 05:13:17 +00:00
|
|
|
#ifndef _CPOWERBOMB
|
|
|
|
#define _CPOWERBOMB
|
|
|
|
|
|
|
|
#include "types.h"
|
2022-10-06 19:38:21 +00:00
|
|
|
|
|
|
|
#include "MetroidPrime/Weapons/CWeapon.hpp"
|
|
|
|
|
2022-11-09 23:45:24 +00:00
|
|
|
class CGenDescription;
|
2022-10-06 19:38:21 +00:00
|
|
|
class CElementGen;
|
|
|
|
|
|
|
|
class CPowerBomb : public CWeapon {
|
2022-11-09 23:45:24 +00:00
|
|
|
public:
|
|
|
|
CPowerBomb(TToken< CGenDescription > particle, TUniqueId uid, TAreaId aid,
|
|
|
|
TUniqueId playerId, const CTransform4f& xf, const CDamageInfo& dInfo);
|
|
|
|
~CPowerBomb();
|
|
|
|
|
2023-02-06 17:01:01 +00:00
|
|
|
void Accept(IVisitor& visitor) override;
|
|
|
|
void AcceptScriptMsg(EScriptObjectMessage, TUniqueId, CStateManager&) override;
|
|
|
|
void Think(float, CStateManager&) override;
|
|
|
|
void AddToRenderer(const CFrustumPlanes&, const CStateManager&) const override;
|
|
|
|
void Render(const CStateManager&) const override;
|
|
|
|
rstl::optional_object<CAABox> GetTouchBounds() const override;
|
|
|
|
void Touch(CActor&, CStateManager&) override;
|
2022-11-09 23:45:24 +00:00
|
|
|
|
|
|
|
float GetCurTime() const { return x15c_curTime; }
|
2023-10-12 02:21:41 +00:00
|
|
|
bool IsEnding() const { return x15c_curTime > kEndingTime; }
|
2022-11-09 23:45:24 +00:00
|
|
|
void ApplyDynamicDamage(const CVector3f&, CStateManager&);
|
|
|
|
|
|
|
|
private:
|
|
|
|
static CColor kFadeColor;
|
2023-10-08 11:41:43 +00:00
|
|
|
static const float kEndingTime;
|
|
|
|
|
2022-10-06 19:38:21 +00:00
|
|
|
bool x158_24_canStartFilter : 1;
|
|
|
|
bool x158_25_filterEnabled : 1;
|
|
|
|
float x15c_curTime;
|
|
|
|
float x160_curRadius;
|
|
|
|
float x164_radiusIncrement;
|
2022-10-09 05:13:17 +00:00
|
|
|
rstl::single_ptr< CElementGen > x168_particle;
|
2022-10-06 19:38:21 +00:00
|
|
|
float x16c_radius;
|
|
|
|
};
|
|
|
|
|
2022-10-09 05:13:17 +00:00
|
|
|
#endif // _CPOWERBOMB
|