2023-08-09 02:53:18 +03:00
|
|
|
#ifndef _CSCRIPTPICKUP
|
|
|
|
|
#define _CSCRIPTPICKUP
|
|
|
|
|
|
|
|
|
|
#include "types.h"
|
|
|
|
|
|
|
|
|
|
#include "MetroidPrime/CActor.hpp"
|
|
|
|
|
#include "MetroidPrime/Player/CPlayerState.hpp"
|
|
|
|
|
|
|
|
|
|
class CGenDescription;
|
2023-08-10 15:25:59 +03:00
|
|
|
class CEchoParameters;
|
2023-08-09 02:53:18 +03:00
|
|
|
|
|
|
|
|
class CScriptPickup : public CActor {
|
2023-08-11 22:23:40 +03:00
|
|
|
CPlayerState::EItemType m_itemType; // x158
|
|
|
|
|
int m_amount;
|
|
|
|
|
int m_capacity;
|
|
|
|
|
int m_percentageIncrease;
|
|
|
|
|
float m_lifeTime;
|
|
|
|
|
float m_respawnTime;
|
2023-08-10 16:13:36 +03:00
|
|
|
float x170;
|
2023-08-11 22:23:40 +03:00
|
|
|
float m_fadeTime;
|
|
|
|
|
float m_curTime;
|
2023-08-10 16:13:36 +03:00
|
|
|
float x17c;
|
2023-08-11 22:23:40 +03:00
|
|
|
float m_pickupEffectLifetime;
|
|
|
|
|
float m_activateDelay;
|
|
|
|
|
float m_autoHomeRange;
|
|
|
|
|
float m_delayUntilHome;
|
|
|
|
|
float m_homingSpeed;
|
|
|
|
|
float m_transformZ;
|
|
|
|
|
rstl::optional_object< TCachedToken< CGenDescription > > m_pickupParticleDesc;
|
|
|
|
|
CAABox m_touchBounds;
|
2023-08-10 16:13:36 +03:00
|
|
|
int x1bc;
|
|
|
|
|
int x1c0;
|
2023-08-11 22:23:40 +03:00
|
|
|
CVector3f m_orbitOffset;
|
|
|
|
|
bool m_unknownProp : 1;
|
|
|
|
|
bool m_generated : 1; // unk
|
|
|
|
|
bool m_inTractor : 1; // unk
|
|
|
|
|
bool m_absoluteValue : 1;
|
|
|
|
|
bool m_enableTractorTest : 1; // unk
|
|
|
|
|
bool m_autoSpin : 1;
|
|
|
|
|
bool m_unk2 : 1;
|
|
|
|
|
bool m_unk3 : 1;
|
|
|
|
|
bool m_blinkOut : 1;
|
2023-08-09 02:53:18 +03:00
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
CScriptPickup(TUniqueId uid, const rstl::string& name, const CEntityInfo& info,
|
|
|
|
|
const CTransform4f& xf, const CModelData& mData, const CActorParameters& aParams,
|
2023-08-10 15:25:59 +03:00
|
|
|
const CEchoParameters& echo, const CAABox& aabb, CPlayerState::EItemType itemType,
|
|
|
|
|
int amount, int capacityIncrease, int itemPercentageIncrease, CAssetId pickupEffect,
|
|
|
|
|
bool absoluteValue, bool unknown, bool autoSpin, bool blinkOut, float lifetime,
|
2023-08-10 16:13:36 +03:00
|
|
|
float respawnTime, float fadeTime, float activateDelay, float, float, float, float, const CVector3f& orbitOffset);
|
2023-08-10 15:25:59 +03:00
|
|
|
|
2023-08-09 02:53:18 +03:00
|
|
|
~CScriptPickup();
|
|
|
|
|
|
2024-01-22 11:55:44 +02:00
|
|
|
CEntity* TypesMatch(int typeId) const override;
|
2023-08-09 02:53:18 +03:00
|
|
|
|
|
|
|
|
void Think(float, CStateManager&) override;
|
|
|
|
|
void Touch(CActor&, CStateManager&) override;
|
|
|
|
|
rstl::optional_object< CAABox > GetTouchBounds() const override;
|
2024-01-22 11:55:44 +02:00
|
|
|
void AcceptScriptMsg(CStateManager& mgr, const CScriptMsg&) override;
|
2023-08-10 15:25:59 +03:00
|
|
|
|
2023-08-09 02:53:18 +03:00
|
|
|
void Render(const CStateManager&) const override;
|
|
|
|
|
void AddToRenderer(const CFrustumPlanes&, const CStateManager&) const override;
|
|
|
|
|
|
|
|
|
|
CPlayerState::EItemType GetItem() const;
|
|
|
|
|
void SetSpawned();
|
|
|
|
|
bool IsVisible() const;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
#endif // _CSCRIPTPICKUP
|