Files
prime/include/MetroidPrime/ScriptObjects/CScriptGunTurret.hpp
T
2026-03-19 20:55:56 -06:00

82 lines
2.3 KiB
C++

#ifndef _CSCRIPTGUNTURRET
#define _CSCRIPTGUNTURRET
#include "MetroidPrime/CPhysicsActor.hpp"
#include "MetroidPrime/CDamageInfo.hpp"
#include "MetroidPrime/CDamageVulnerability.hpp"
#include "MetroidPrime/CHealthInfo.hpp"
class CScriptGunTurretData {
public:
CScriptGunTurretData(CInputStream& in, int propCount);
CScriptGunTurretData(const CScriptGunTurretData& other);
static int GetMinProperties() { return skMinProperties; }
private:
static const int skMinProperties;
float x0_intoDeactivateDelay;
float x4_intoActivateDelay;
float x8_reloadTime;
float xc_reloadTimeVariance;
float x10_panStartTime;
float x14_panHoldTime;
float x18_totalPanSearchTime;
float x1c_leftMaxAngle;
float x20_rightMaxAngle;
float x24_downMaxAngle;
float x28_turnSpeed;
float x2c_detectionRange;
float x30_detectionZRange;
float x34_freezeDuration;
float x38_freezeVariance;
bool x3c_freezeTimeout;
CAssetId x40_projectileRes;
CDamageInfo x44_projectileDamage;
CAssetId x60_idleLightRes;
CAssetId x64_deactivateLightRes;
CAssetId x68_targettingLightRes;
CAssetId x6c_frozenEffectRes;
CAssetId x70_chargingEffectRes;
CAssetId x74_panningEffectRes;
CAssetId x78_visorEffectRes;
ushort x7c_trackingSoundId;
ushort x7e_lockOnSoundId;
ushort x80_unfreezeSoundId;
ushort x82_stopClankSoundId;
ushort x84_chargingSoundId;
ushort x86_visorSoundId;
CAssetId x88_extensionModelResId;
float x8c_extensionDropDownDist;
uint x90_numInitialShots;
uint x94_initialShotTableIndex;
uint x98_numSubsequentShots;
float x9c_frenzyDuration;
bool xa0_scriptedStartOnly;
};
CHECK_SIZEOF(CScriptGunTurretData, 0xa4)
class CScriptGunTurret : public CPhysicsActor {
public:
enum ETurretComponent {
kTC_Base,
kTC_Gun,
};
CScriptGunTurret(TUniqueId uid, const rstl::string& name, ETurretComponent comp,
const CEntityInfo& info, const CTransform4f& xf, const CModelData& mData,
const CAABox& aabb, const CHealthInfo& hInfo,
const CDamageVulnerability& dVuln, const CActorParameters& aParms,
const CScriptGunTurretData& turretData);
~CScriptGunTurret();
void Accept(IVisitor& visitor) override;
private:
uchar x258_pad[0x568 - 0x258];
};
CHECK_SIZEOF(CScriptGunTurret, 0x568)
#endif // _CSCRIPTGUNTURRET