mirror of
https://github.com/AxioDL/metaforce.git
synced 2025-12-14 21:26:09 +00:00
Implement CEyeBall, disable CPuddleToadGamma (preventing softlocks), initial CSpankWeed
This commit is contained in:
@@ -8,33 +8,32 @@ namespace urde::MP1
|
||||
{
|
||||
class CEyeball : public CPatterned
|
||||
{
|
||||
float x568_;
|
||||
float x56c_;
|
||||
static constexpr std::string_view skEyeLocator="Laser_LCTR"sv;
|
||||
float x568_attackDelay;
|
||||
float x56c_maxAttackDelay;
|
||||
CBoneTracking x570_boneTracking;
|
||||
zeus::CVector3f x5a8_;
|
||||
zeus::CVector3f x5a8_targetPosition;
|
||||
CProjectileInfo x5b4_projectileInfo;
|
||||
CAssetId x5dc_;
|
||||
CAssetId x5e0_;
|
||||
CAssetId x5e4_;
|
||||
CAssetId x5e8_;
|
||||
TUniqueId x5ec_projectileId = kInvalidUniqueId;
|
||||
u32 x5f0_ = 0;
|
||||
u32 x5f4_;
|
||||
u32 x5f8_;
|
||||
u32 x5fc_;
|
||||
u32 x600_;
|
||||
s16 x604_;
|
||||
CSfxHandle x608_ = 0;
|
||||
bool x60c_24_ : 1;
|
||||
bool x60c_25_ : 1;
|
||||
u32 x5f0_currentAnim = 0;
|
||||
s32 x5f4_animIdxs[4];
|
||||
u16 x604_beamSfxId;
|
||||
CSfxHandle x608_beamSfx = 0;
|
||||
bool x60c_24_canAttack : 1;
|
||||
bool x60c_25_playerInRange : 1;
|
||||
bool x60c_26_alert : 1;
|
||||
bool x60c_27_ : 1;
|
||||
bool x60c_28_ : 1;
|
||||
bool x60c_27_attackDisabled : 1;
|
||||
bool x60c_28_firingBeam : 1;
|
||||
|
||||
void CreateBeam(CStateManager&);
|
||||
|
||||
void FireBeam(CStateManager&, const zeus::CTransform&);
|
||||
void TryFlinch(CStateManager&, int);
|
||||
void sub802249c8();
|
||||
void UpdateAnimation();
|
||||
void ResetBeamState(CStateManager&);
|
||||
public:
|
||||
DEFINE_PATTERNED(EyeBall)
|
||||
|
||||
@@ -43,8 +42,13 @@ public:
|
||||
CAssetId, CAssetId, u32, u32, u32, u32, u32, bool, const CActorParameters&);
|
||||
|
||||
void Accept(IVisitor& visitor);
|
||||
void PreRender(CStateManager&, const zeus::CFrustum&);
|
||||
void Touch(CActor&, CStateManager&) {};
|
||||
void Death(CStateManager&, const zeus::CVector3f&, EScriptObjectState);
|
||||
|
||||
void AcceptScriptMsg(EScriptObjectMessage msg, TUniqueId uid, CStateManager& mgr);
|
||||
void DoUserAnimEvent(CStateManager&, const CInt32POINode&, EUserEventType, float);
|
||||
void Think(float, CStateManager&);
|
||||
void Flinch(CStateManager&, EStateMsg, float);
|
||||
void Active(CStateManager&, EStateMsg, float);
|
||||
void InActive(CStateManager&, EStateMsg, float);
|
||||
@@ -52,6 +56,6 @@ public:
|
||||
void Cover(CStateManager&, EStateMsg, float);
|
||||
|
||||
bool ShouldAttack(CStateManager&, float) { return x60c_26_alert; }
|
||||
bool ShouldFire(CStateManager&, float) { return !x60c_27_; }
|
||||
bool ShouldFire(CStateManager&, float) { return !x60c_27_attackDisabled; }
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user