mirror of https://github.com/AxioDL/metaforce.git
COmegaPirate: Stub
This commit is contained in:
parent
b43d4eaddc
commit
ffd94d1106
|
@ -1,6 +1,7 @@
|
|||
#pragma once
|
||||
|
||||
#include "Runtime/Character/CBoneTracking.hpp"
|
||||
#include "Runtime/Collision/CCollisionActorManager.hpp"
|
||||
#include "Runtime/Collision/CJointCollisionDescription.hpp"
|
||||
#include "Runtime/MP1/World/CGrenadeLauncher.hpp"
|
||||
#include "Runtime/MP1/World/CShockWave.hpp"
|
||||
|
@ -9,10 +10,7 @@
|
|||
#include "Runtime/World/CPathFindSearch.hpp"
|
||||
#include "Runtime/World/CPatterned.hpp"
|
||||
|
||||
namespace urde {
|
||||
class CCollisionActorManager;
|
||||
class CGenDescription;
|
||||
namespace MP1 {
|
||||
namespace urde::MP1 {
|
||||
class CElitePirateData {
|
||||
private:
|
||||
float x0_tauntInterval;
|
||||
|
@ -228,5 +226,4 @@ private:
|
|||
bool IsClosestEnergyAttractor(const CStateManager& mgr, const rstl::reserved_vector<TUniqueId, 1024>& charNearList,
|
||||
const zeus::CVector3f& projectilePos) const;
|
||||
};
|
||||
} // namespace MP1
|
||||
} // namespace urde
|
||||
|
|
|
@ -27,6 +27,7 @@ set(MP1_WORLD_SOURCES
|
|||
CMetroidPrimeProjectile.hpp CMetroidPrimeProjectile.cpp
|
||||
CMetroidPrimeRelay.hpp CMetroidPrimeRelay.cpp
|
||||
CNewIntroBoss.hpp CNewIntroBoss.cpp
|
||||
COmegaPirate.hpp COmegaPirate.cpp
|
||||
CParasite.hpp CParasite.cpp
|
||||
CPuddleSpore.hpp CPuddleSpore.cpp
|
||||
CPuddleToadGamma.hpp CPuddleToadGamma.cpp
|
||||
|
|
|
@ -0,0 +1,12 @@
|
|||
#include "Runtime/MP1/World/COmegaPirate.hpp"
|
||||
|
||||
namespace urde::MP1 {
|
||||
COmegaPirate::CFlash::CFlash(TUniqueId uid, const CEntityInfo& info, const zeus::CVector3f& pos, CToken& p4, float p5)
|
||||
: CActor(uid, true, "Omega Pirate Flash", info, zeus::CTransform::Translate(pos), CModelData::CModelDataNull(), {},
|
||||
CActorParameters::None(), kInvalidUniqueId) {}
|
||||
|
||||
COmegaPirate::COmegaPirate(TUniqueId uid, std::string_view name, const CEntityInfo& info, const zeus::CTransform& xf,
|
||||
CModelData&& mData, const CPatternedInfo& pInfo, const CActorParameters& actParms,
|
||||
CElitePirateData data, CAssetId w1, CAssetId w2, CAssetId w3)
|
||||
: CElitePirate(uid, name, info, xf, std::move(mData), pInfo, actParms, data) {}
|
||||
} // namespace urde::MP1
|
|
@ -0,0 +1,24 @@
|
|||
#pragma once
|
||||
|
||||
#include "Runtime/MP1/World/CElitePirate.hpp"
|
||||
|
||||
namespace urde::MP1 {
|
||||
class COmegaPirate : public CElitePirate {
|
||||
private:
|
||||
class CFlash : public CActor {
|
||||
private:
|
||||
CToken xe8_;
|
||||
int xf0_;
|
||||
float xf4_;
|
||||
float xf8_;
|
||||
float xfc_;
|
||||
|
||||
CFlash(TUniqueId uid, const CEntityInfo& info, const zeus::CVector3f& pos, CToken& p4, float p5);
|
||||
};
|
||||
|
||||
public:
|
||||
COmegaPirate(TUniqueId uid, std::string_view name, const CEntityInfo& info, const zeus::CTransform& xf,
|
||||
CModelData&& mData, const CPatternedInfo& pInfo, const CActorParameters& actParms, CElitePirateData data,
|
||||
CAssetId w1, CAssetId w2, CAssetId w3);
|
||||
};
|
||||
} // namespace urde::MP1
|
|
@ -31,6 +31,7 @@
|
|||
#include "Runtime/MP1/World/CMetroidBeta.hpp"
|
||||
#include "Runtime/MP1/World/CMetroidPrimeRelay.hpp"
|
||||
#include "Runtime/MP1/World/CNewIntroBoss.hpp"
|
||||
#include "Runtime/MP1/World/COmegaPirate.hpp"
|
||||
#include "Runtime/MP1/World/CParasite.hpp"
|
||||
#include "Runtime/MP1/World/CPuddleSpore.hpp"
|
||||
#include "Runtime/MP1/World/CPuddleToadGamma.hpp"
|
||||
|
@ -127,6 +128,8 @@ static logvisor::Module Log("urde::ScriptLoader");
|
|||
|
||||
constexpr SObjectTag MorphballDoorANCS = {FOURCC('ANCS'), 0x1F9DA858};
|
||||
|
||||
constexpr int skElitePiratePropCount = 41;
|
||||
|
||||
static bool EnsurePropertyCount(int count, int expected, const char* structName) {
|
||||
if (count < expected) {
|
||||
Log.report(logvisor::Warning, fmt("Insufficient number of props ({}/{}) for {} entity"), count, expected,
|
||||
|
@ -1383,7 +1386,7 @@ CEntity* ScriptLoader::LoadFlyingPirate(CStateManager& mgr, CInputStream& in, in
|
|||
}
|
||||
|
||||
CEntity* ScriptLoader::LoadElitePirate(CStateManager& mgr, CInputStream& in, int propCount, const CEntityInfo& info) {
|
||||
if (!EnsurePropertyCount(propCount, 41, "ElitePirate"))
|
||||
if (!EnsurePropertyCount(propCount, skElitePiratePropCount, "ElitePirate"))
|
||||
return nullptr;
|
||||
|
||||
SScaledActorHead actHead = LoadScaledActorHead(in, mgr);
|
||||
|
@ -3622,9 +3625,35 @@ CEntity* ScriptLoader::LoadMazeNode(CStateManager& mgr, CInputStream& in, int pr
|
|||
}
|
||||
|
||||
CEntity* ScriptLoader::LoadOmegaPirate(CStateManager& mgr, CInputStream& in, int propCount, const CEntityInfo& info) {
|
||||
if (!EnsurePropertyCount(propCount, skElitePiratePropCount + 1, "OmegaPirate")) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
#if 0
|
||||
SScaledActorHead actHead = LoadScaledActorHead(in, mgr);
|
||||
auto pair = CPatternedInfo::HasCorrectParameterCount(in);
|
||||
if (!pair.first) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
CPatternedInfo pInfo(in, pair.second);
|
||||
CActorParameters actParms = LoadActorParameters(in);
|
||||
MP1::CElitePirateData elitePirateData(in, propCount);
|
||||
|
||||
if (!pInfo.GetAnimationParameters().GetACSFile().IsValid()) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
CModelData mData(CAnimRes(pInfo.GetAnimationParameters().GetACSFile(), pInfo.GetAnimationParameters().GetCharacter(),
|
||||
actHead.x40_scale, pInfo.GetAnimationParameters().GetInitialAnimation(), true));
|
||||
|
||||
return new MP1::COmegaPirate(mgr.AllocateUniqueId(), actHead.x0_name, info, actHead.x10_transform, std::move(mData),
|
||||
pInfo, actParms, elitePirateData, CAssetId(in), CAssetId(in), CAssetId(in));
|
||||
#else
|
||||
return nullptr;
|
||||
#endif
|
||||
}
|
||||
|
||||
CEntity* ScriptLoader::LoadPhazonPool(CStateManager& mgr, CInputStream& in, int propCount, const CEntityInfo& info) {
|
||||
return nullptr;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue