Link CPowerBeam

Former-commit-id: 2f08ee8e2b967aff6d0057ae0d010ee7982c5ba1
This commit is contained in:
Luke Street 2023-10-11 19:27:57 -04:00
parent e85fd9312c
commit e4c947d2ad
4 changed files with 18 additions and 56 deletions

View File

@ -16986,7 +16986,7 @@ lbl_803CE4A5 = .rodata:0x803CE4A5; // type:object size:0xD data:string
lbl_803CE4B2 = .rodata:0x803CE4B2; // type:object size:0x76
lbl_803CE528 = .rodata:0x803CE528; // type:object size:0x8
@stringBase0 = .rodata:0x803CE530; // type:object size:0x13 scope:local data:string_table
lbl_803CE548 = .rodata:0x803CE548; // type:object size:0x20
@stringBase0 = .rodata:0x803CE548; // type:object size:0x1C scope:local data:string_table
lbl_803CE568 = .rodata:0x803CE568; // type:object size:0x30
lbl_803CE598 = .rodata:0x803CE598; // type:object size:0x28
lbl_803CE5C0 = .rodata:0x803CE5C0; // type:object size:0x8
@ -17318,52 +17318,14 @@ lbl_803D1678 = .rodata:0x803D1678; // type:object size:0xD data:string
lbl_803D1685 = .rodata:0x803D1685; // type:object size:0x9 data:string
lbl_803D168E = .rodata:0x803D168E; // type:object size:0xB data:string
lbl_803D1699 = .rodata:0x803D1699; // type:object size:0xB7
skMuzzleNames = .rodata:0x803D1750; // type:object size:0x28 scope:global
skFrozenNames = .rodata:0x803D1778; // type:object size:0x28 scope:global
skBeamXferNames = .rodata:0x803D17A0; // type:object size:0x14 scope:global
skAnimDependencyNames = .rodata:0x803D17B4; // type:object size:0x14 scope:global
skDependencyNames = .rodata:0x803D17C8; // type:object size:0x14 scope:global
skSuitArmNames = .rodata:0x803D17DC; // type:object size:0x20 scope:global data:4byte
skAnimTypeList = .rodata:0x803D17FC; // type:object size:0x2C scope:global
lbl_803D1828 = .rodata:0x803D1828; // type:object size:0xC data:string
lbl_803D1834 = .rodata:0x803D1834; // type:object size:0xC data:string
lbl_803D1840 = .rodata:0x803D1840; // type:object size:0xA data:string
lbl_803D184A = .rodata:0x803D184A; // type:object size:0xA data:string
lbl_803D1854 = .rodata:0x803D1854; // type:object size:0xB data:string
lbl_803D185F = .rodata:0x803D185F; // type:object size:0xD data:string
lbl_803D186C = .rodata:0x803D186C; // type:object size:0xD data:string
lbl_803D1879 = .rodata:0x803D1879; // type:object size:0xD data:string
lbl_803D1886 = .rodata:0x803D1886; // type:object size:0xC data:string
lbl_803D1892 = .rodata:0x803D1892; // type:object size:0xC data:string
lbl_803D189E = .rodata:0x803D189E; // type:object size:0x9 data:string
lbl_803D18A7 = .rodata:0x803D18A7; // type:object size:0xA data:string
lbl_803D18B1 = .rodata:0x803D18B1; // type:object size:0xB data:string
lbl_803D18BC = .rodata:0x803D18BC; // type:object size:0xD data:string
lbl_803D18C9 = .rodata:0x803D18C9; // type:object size:0xA data:string
lbl_803D18D3 = .rodata:0x803D18D3; // type:object size:0x8 data:string
lbl_803D18DB = .rodata:0x803D18DB; // type:object size:0x9 data:string
lbl_803D18E4 = .rodata:0x803D18E4; // type:object size:0xB data:string
lbl_803D18EF = .rodata:0x803D18EF; // type:object size:0xB data:string
lbl_803D18FA = .rodata:0x803D18FA; // type:object size:0x10 data:string
lbl_803D190A = .rodata:0x803D190A; // type:object size:0xE data:string
lbl_803D1918 = .rodata:0x803D1918; // type:object size:0xF data:string
lbl_803D1927 = .rodata:0x803D1927; // type:object size:0x11 data:string
lbl_803D1938 = .rodata:0x803D1938; // type:object size:0x11 data:string
lbl_803D1949 = .rodata:0x803D1949; // type:object size:0xB data:string
lbl_803D1954 = .rodata:0x803D1954; // type:object size:0x9 data:string
lbl_803D195D = .rodata:0x803D195D; // type:object size:0xA data:string
lbl_803D1967 = .rodata:0x803D1967; // type:object size:0xC data:string
lbl_803D1973 = .rodata:0x803D1973; // type:object size:0xC data:string
lbl_803D197F = .rodata:0x803D197F; // type:object size:0x9 data:string
lbl_803D1988 = .rodata:0x803D1988; // type:object size:0xB data:string
lbl_803D1993 = .rodata:0x803D1993; // type:object size:0x9 data:string
lbl_803D199C = .rodata:0x803D199C; // type:object size:0xA data:string
lbl_803D19A6 = .rodata:0x803D19A6; // type:object size:0xA data:string
lbl_803D19B0 = .rodata:0x803D19B0; // type:object size:0xB data:string
lbl_803D19BB = .rodata:0x803D19BB; // type:object size:0xB data:string
lbl_803D19C6 = .rodata:0x803D19C6; // type:object size:0xB data:string
lbl_803D19D1 = .rodata:0x803D19D1; // type:object size:0x6 data:string
lbl_803D19D7 = .rodata:0x803D19D7; // type:object size:0x19
skMuzzleNames__10CGunWeapon = .rodata:0x803D1750; // type:object size:0x28 scope:global
skFrozenNames__10CGunWeapon = .rodata:0x803D1778; // type:object size:0x28 scope:global
skBeamXferNames__10CGunWeapon = .rodata:0x803D17A0; // type:object size:0x14 scope:global
skAnimDependencyNames__10CGunWeapon = .rodata:0x803D17B4; // type:object size:0x14 scope:global
skDependencyNames__10CGunWeapon = .rodata:0x803D17C8; // type:object size:0x14 scope:global
skSuitArmNames__10CGunWeapon = .rodata:0x803D17DC; // type:object size:0x20 scope:global data:4byte
skAnimTypeList__10CGunWeapon = .rodata:0x803D17FC; // type:object size:0x2C scope:global
@stringBase0 = .rodata:0x803D1828; // type:object size:0x1C7 scope:local data:string_table
lbl_803D19F0 = .rodata:0x803D19F0; // type:object size:0x8
lbl_803D19F8 = .rodata:0x803D19F8; // type:object size:0x10
lbl_803D1A08 = .rodata:0x803D1A08; // type:object size:0x18 data:4byte
@ -24806,8 +24768,8 @@ lbl_805AC6D8 = .sdata2:0x805AC6D8; // type:object size:0x4 data:float
lbl_805AC6DC = .sdata2:0x805AC6DC; // type:object size:0x4 data:float
lbl_805AC6E0 = .sdata2:0x805AC6E0; // type:object size:0x4 data:float
lbl_805AC6E4 = .sdata2:0x805AC6E4; // type:object size:0x4 data:float
lbl_805AC6E8 = .sdata2:0x805AC6E8; // type:object size:0x4 data:4byte
lbl_805AC6EC = .sdata2:0x805AC6EC; // type:object size:0x4 data:4byte
skMuzzleLocator__10CGunWeapon = .sdata2:0x805AC6E8; // type:object size:0x4 data:4byte
skElbowLocator__10CGunWeapon = .sdata2:0x805AC6EC; // type:object size:0x4 data:4byte
skShootAnim__10CGunWeapon = .sdata2:0x805AC6F0; // type:object size:0x8 scope:global
lbl_805AC6F8 = .sdata2:0x805AC6F8; // type:object size:0x4 data:float
lbl_805AC6FC = .sdata2:0x805AC6FC; // type:object size:0x4 data:float

View File

@ -352,7 +352,7 @@ config.libs = [
Object(NonMatching, "MetroidPrime/CSamusDoll.cpp"),
Object(NonMatching, "MetroidPrime/Factories/CStateMachineFactory.cpp"),
Object(Matching, "MetroidPrime/Weapons/CPlasmaBeam.cpp"),
Object(NonMatching, "MetroidPrime/Weapons/CPowerBeam.cpp"),
Object(Matching, "MetroidPrime/Weapons/CPowerBeam.cpp"),
Object(NonMatching, "MetroidPrime/Weapons/CWaveBeam.cpp"),
Object(NonMatching, "MetroidPrime/Weapons/CIceBeam.cpp"),
Object(NonMatching, "MetroidPrime/CScriptMailbox.cpp"),

View File

@ -164,6 +164,8 @@ protected:
bool x218_28_suitArmLocked : 1;
bool x218_29_drawHologram : 1;
static const char* skMuzzleLocator;
static const char* skElbowLocator;
static const int skShootAnim[2];
void AllocResPools(CPlayerState::EBeamId beam);

View File

@ -48,8 +48,6 @@ void CPowerBeam::PostRenderGunFx(const CStateManager& mgr, const CTransform4f& x
CGunWeapon::PostRenderGunFx(mgr, xf);
}
static const char* kTransformName = "LBEAM";
void CPowerBeam::UpdateGunFx(bool shotSmoke, float dt, const CStateManager& mgr,
const CTransform4f& xf) {
switch (x240_smokeState) {
@ -72,7 +70,7 @@ void CPowerBeam::UpdateGunFx(bool shotSmoke, float dt, const CStateManager& mgr,
// [[fallthrough]];
case kSS_Done:
if (!x234_shotSmokeGen.null()) {
CTransform4f locator = x10_solidModelData->GetScaledLocatorTransform(rstl::string_l(kTransformName));
CTransform4f locator = x10_solidModelData->GetScaledLocatorTransform(rstl::string_l(CGunWeapon::skMuzzleLocator));
x234_shotSmokeGen->SetGlobalTranslation(locator.GetTranslation());
x234_shotSmokeGen->Update(dt);
if (x240_smokeState == kSS_Done && x234_shotSmokeGen->GetSystemCount() == 0)
@ -100,7 +98,7 @@ void CPowerBeam::Update(float dt, CStateManager& mgr) {
if (CGunWeapon::IsLoaded() && !x244_25_loaded) {
x244_25_loaded = x21c_shotSmoke.IsLoaded() && x228_power2nd1.IsLoaded();
if (x244_25_loaded) {
x234_shotSmokeGen = new CElementGen (x21c_shotSmoke);
x234_shotSmokeGen = NEW CElementGen (x21c_shotSmoke);
x234_shotSmokeGen->SetParticleEmission(false);
}
}
@ -109,7 +107,7 @@ void CPowerBeam::Update(float dt, CStateManager& mgr) {
void CPowerBeam::Fire(bool underwater, float dt, CPlayerState::EChargeStage chargeState, const CTransform4f& xf,
CStateManager& mgr, TUniqueId homingTarget, float chargeFactor1,
float chargeFactor2) {
static ushort skSoundId[] = {
static const ushort skSoundId[] = {
SFXwpn_fire_power_normal,
SFXwpn_fire_power_charged,
};
@ -145,7 +143,7 @@ void CPowerBeam::EnableSecondaryFx(ESecondaryFxType type) {
x1cc_enabledSecondaryEffect = kSFT_None;
break;
case kSFT_Charge:
x238_power2ndGen = new CElementGen(x228_power2nd1);
x238_power2ndGen = NEW CElementGen(x228_power2nd1);
x238_power2ndGen->SetGlobalScale(x4_scale);
x1cc_enabledSecondaryEffect = type;
break;