mirror of
https://github.com/PrimeDecomp/prime.git
synced 2026-07-12 18:18:56 -07:00
92 lines
2.6 KiB
C++
92 lines
2.6 KiB
C++
#ifndef _CMETROID
|
|
#define _CMETROID
|
|
|
|
#include "Collision/CCollidableSphere.hpp"
|
|
#include "MetroidPrime/CActorParameters.hpp"
|
|
#include "MetroidPrime/Enemies/CMetroidData.hpp"
|
|
#include "MetroidPrime/Enemies/CPatterned.hpp"
|
|
#include "MetroidPrime/PathFinding/CPathFindSearch.hpp"
|
|
|
|
class CMetroid : public CPatterned {
|
|
static const CDamageVulnerability skGammaRedDamageVulnerability;
|
|
static const CDamageVulnerability skGammaWhiteDamageVulnerability;
|
|
static const CDamageVulnerability skGammaPurpleDamageVulnerability;
|
|
static const CDamageVulnerability skGammaYellowDamageVulnerability;
|
|
static const CDamageVulnerability skStandingFaceHugVulnerability;
|
|
static const CColor skGammaRedColorMod;
|
|
static const CColor skGammaWhiteColorMod;
|
|
static const CColor skGammaPurpleColorMod;
|
|
static const CColor skGammaYellowColorMod;
|
|
|
|
public:
|
|
CMetroid(const TUniqueId uid, const rstl::string& name, const EFlavorType flavor,
|
|
const CEntityInfo& info, const CTransform4f& xf, const CModelData& mData,
|
|
const CPatternedInfo& pInfo, const CActorParameters& aParms,
|
|
const CMetroidData& metroidData, const TUniqueId other);
|
|
~CMetroid();
|
|
void UpdateTouchBounds();
|
|
|
|
void Accept(IVisitor& visitor) override;
|
|
void Think(float dt, CStateManager& mgr) override;
|
|
|
|
private:
|
|
enum EAIState {
|
|
kAiState_Invalid = -1,
|
|
kAiState_Zero,
|
|
kAiState_One,
|
|
kAiState_Two,
|
|
kAiState_Over,
|
|
};
|
|
|
|
enum EAttackState {
|
|
kAttackState_None,
|
|
kAttackState_Attached,
|
|
kAttackState_Draining,
|
|
kAttackState_Over,
|
|
};
|
|
|
|
// TODO: Reconcile this with CMetroidData::EGammaFlavor
|
|
|
|
|
|
EAIState mState;
|
|
CMetroidData mMetroidData;
|
|
TUniqueId mTeamAiManagerId;
|
|
CCollidableSphere mCollisionPrimitive;
|
|
CPathFindSearch mPathFindSearch;
|
|
CVector3f x7a4;
|
|
TUniqueId mAttackTarget;
|
|
float mAttackChance;
|
|
float mTelegraphAttackTime;
|
|
float mEnergyDrained;
|
|
float mEnergyDrainTime;
|
|
float x7c0;
|
|
EAttackState mAttackState;
|
|
CMetroidData::EGammaFlavor mGammaType;
|
|
CVector3f mScale1;
|
|
CVector3f mScale2;
|
|
CVector3f mScale3;
|
|
float mGrowthDuration;
|
|
float mGrowthEnergy;
|
|
float mLastGrowthEnergy;
|
|
float mSeekTime;
|
|
float mMaxSeekTime;
|
|
float mLoopAttackDistance;
|
|
CVector3f mDetachPos;
|
|
pas::EStepDirection mDodgeDirection;
|
|
CPatternedInfo mPatternedInfo;
|
|
CActorParameters mActorParameters;
|
|
TUniqueId mParent;
|
|
uchar x9be;
|
|
bool mAlert : 1;
|
|
bool mGrowing : 1;
|
|
bool mShotAt : 1;
|
|
bool x9bf_27_ : 1;
|
|
bool x9bf_28_ : 1;
|
|
bool mIsAttacking : 1;
|
|
bool mRestoreSolidCollision : 1;
|
|
bool mRestoreCharacterCollision : 1;
|
|
bool mIsEnergyDrainVulnerable : 1;
|
|
};
|
|
|
|
#endif // _CMETROID
|