mirror of
https://github.com/AxioDL/metaforce.git
synced 2025-12-08 21:47:42 +00:00
New code style refactor
This commit is contained in:
@@ -5,88 +5,73 @@
|
||||
#include "Particle/CGenDescription.hpp"
|
||||
#include "TCastTo.hpp"
|
||||
|
||||
namespace urde
|
||||
{
|
||||
namespace urde {
|
||||
|
||||
CScriptSpawnPoint::CScriptSpawnPoint(TUniqueId uid, std::string_view name, const CEntityInfo& info, const zeus::CTransform& xf,
|
||||
CScriptSpawnPoint::CScriptSpawnPoint(TUniqueId uid, std::string_view name, const CEntityInfo& info,
|
||||
const zeus::CTransform& xf,
|
||||
const rstl::reserved_vector<u32, int(CPlayerState::EItemType::Max)>& itemCounts,
|
||||
bool defaultSpawn, bool active, bool morphed)
|
||||
: CEntity(uid, info, active, name), x34_xf(xf), x64_itemCounts(itemCounts)
|
||||
{
|
||||
: CEntity(uid, info, active, name), x34_xf(xf), x64_itemCounts(itemCounts) {
|
||||
#ifndef NDEBUG
|
||||
x64_itemCounts[int(CPlayerState::EItemType::GravitySuit)] = 1;
|
||||
x64_itemCounts[int(CPlayerState::EItemType::ThermalVisor)] = 1;
|
||||
x64_itemCounts[int(CPlayerState::EItemType::XRayVisor)] = 1;
|
||||
x64_itemCounts[int(CPlayerState::EItemType::GrappleBeam)] = 1;
|
||||
x64_itemCounts[int(CPlayerState::EItemType::BoostBall)] = 1;
|
||||
x64_itemCounts[int(CPlayerState::EItemType::ChargeBeam)] = 1;
|
||||
x64_itemCounts[int(CPlayerState::EItemType::PowerBombs)] = 8;
|
||||
x64_itemCounts[int(CPlayerState::EItemType::GravitySuit)] = 1;
|
||||
x64_itemCounts[int(CPlayerState::EItemType::ThermalVisor)] = 1;
|
||||
x64_itemCounts[int(CPlayerState::EItemType::XRayVisor)] = 1;
|
||||
x64_itemCounts[int(CPlayerState::EItemType::GrappleBeam)] = 1;
|
||||
x64_itemCounts[int(CPlayerState::EItemType::BoostBall)] = 1;
|
||||
x64_itemCounts[int(CPlayerState::EItemType::ChargeBeam)] = 1;
|
||||
x64_itemCounts[int(CPlayerState::EItemType::PowerBombs)] = 8;
|
||||
#endif
|
||||
x10c_24_firstSpawn = defaultSpawn;
|
||||
x10c_25_morphed = morphed;
|
||||
x10c_24_firstSpawn = defaultSpawn;
|
||||
x10c_25_morphed = morphed;
|
||||
}
|
||||
|
||||
void CScriptSpawnPoint::Accept(IVisitor& visitor)
|
||||
{
|
||||
visitor.Visit(this);
|
||||
}
|
||||
void CScriptSpawnPoint::Accept(IVisitor& visitor) { visitor.Visit(this); }
|
||||
|
||||
void CScriptSpawnPoint::AcceptScriptMsg(EScriptObjectMessage msg, TUniqueId objId, CStateManager& stateMgr)
|
||||
{
|
||||
CEntity::AcceptScriptMsg(msg, objId, stateMgr);
|
||||
void CScriptSpawnPoint::AcceptScriptMsg(EScriptObjectMessage msg, TUniqueId objId, CStateManager& stateMgr) {
|
||||
CEntity::AcceptScriptMsg(msg, objId, stateMgr);
|
||||
|
||||
if (msg == EScriptObjectMessage::SetToZero || msg == EScriptObjectMessage::Reset)
|
||||
{
|
||||
if (msg == EScriptObjectMessage::Reset)
|
||||
{
|
||||
using EPlayerItemType = CPlayerState::EItemType;
|
||||
const std::shared_ptr<CPlayerState>& plState = stateMgr.GetPlayerState();
|
||||
for (u32 i = 0; i < u32(EPlayerItemType::Max); ++i)
|
||||
{
|
||||
plState->ReInitalizePowerUp(EPlayerItemType(i), GetPowerup(EPlayerItemType(i)));
|
||||
plState->ResetAndIncrPickUp(EPlayerItemType(i), GetPowerup(EPlayerItemType(i)));
|
||||
}
|
||||
}
|
||||
|
||||
if (GetActive())
|
||||
{
|
||||
CPlayer* player = stateMgr.Player();
|
||||
|
||||
if (x4_areaId != stateMgr.GetNextAreaId())
|
||||
{
|
||||
CGameArea* area = stateMgr.WorldNC()->GetArea(x4_areaId);
|
||||
if (area->IsPostConstructed() && area->GetOcclusionState() == CGameArea::EOcclusionState::Occluded)
|
||||
{
|
||||
/* while (!area->TryTakingOutOfARAM()) {} */
|
||||
CWorld::PropogateAreaChain(CGameArea::EOcclusionState::Visible, area, stateMgr.WorldNC());
|
||||
}
|
||||
|
||||
stateMgr.SetCurrentAreaId(x4_areaId);
|
||||
stateMgr.SetActorAreaId(*stateMgr.Player(), x4_areaId);
|
||||
player->Teleport(GetTransform(), stateMgr, true);
|
||||
player->SetSpawnedMorphBallState(CPlayer::EPlayerMorphBallState(x10c_25_morphed), stateMgr);
|
||||
|
||||
if (area->IsPostConstructed() && area->GetOcclusionState() == CGameArea::EOcclusionState::Visible)
|
||||
CWorld::PropogateAreaChain(CGameArea::EOcclusionState::Occluded,
|
||||
stateMgr.WorldNC()->GetArea(stateMgr.GetNextAreaId()),
|
||||
stateMgr.WorldNC());
|
||||
}
|
||||
else
|
||||
{
|
||||
player->Teleport(GetTransform(), stateMgr, true);
|
||||
player->SetSpawnedMorphBallState(CPlayer::EPlayerMorphBallState(x10c_25_morphed), stateMgr);
|
||||
}
|
||||
}
|
||||
|
||||
CEntity::SendScriptMsgs(EScriptObjectState::Zero, stateMgr, EScriptObjectMessage::None);
|
||||
if (msg == EScriptObjectMessage::SetToZero || msg == EScriptObjectMessage::Reset) {
|
||||
if (msg == EScriptObjectMessage::Reset) {
|
||||
using EPlayerItemType = CPlayerState::EItemType;
|
||||
const std::shared_ptr<CPlayerState>& plState = stateMgr.GetPlayerState();
|
||||
for (u32 i = 0; i < u32(EPlayerItemType::Max); ++i) {
|
||||
plState->ReInitalizePowerUp(EPlayerItemType(i), GetPowerup(EPlayerItemType(i)));
|
||||
plState->ResetAndIncrPickUp(EPlayerItemType(i), GetPowerup(EPlayerItemType(i)));
|
||||
}
|
||||
}
|
||||
|
||||
if (GetActive()) {
|
||||
CPlayer* player = stateMgr.Player();
|
||||
|
||||
if (x4_areaId != stateMgr.GetNextAreaId()) {
|
||||
CGameArea* area = stateMgr.WorldNC()->GetArea(x4_areaId);
|
||||
if (area->IsPostConstructed() && area->GetOcclusionState() == CGameArea::EOcclusionState::Occluded) {
|
||||
/* while (!area->TryTakingOutOfARAM()) {} */
|
||||
CWorld::PropogateAreaChain(CGameArea::EOcclusionState::Visible, area, stateMgr.WorldNC());
|
||||
}
|
||||
|
||||
stateMgr.SetCurrentAreaId(x4_areaId);
|
||||
stateMgr.SetActorAreaId(*stateMgr.Player(), x4_areaId);
|
||||
player->Teleport(GetTransform(), stateMgr, true);
|
||||
player->SetSpawnedMorphBallState(CPlayer::EPlayerMorphBallState(x10c_25_morphed), stateMgr);
|
||||
|
||||
if (area->IsPostConstructed() && area->GetOcclusionState() == CGameArea::EOcclusionState::Visible)
|
||||
CWorld::PropogateAreaChain(CGameArea::EOcclusionState::Occluded,
|
||||
stateMgr.WorldNC()->GetArea(stateMgr.GetNextAreaId()), stateMgr.WorldNC());
|
||||
} else {
|
||||
player->Teleport(GetTransform(), stateMgr, true);
|
||||
player->SetSpawnedMorphBallState(CPlayer::EPlayerMorphBallState(x10c_25_morphed), stateMgr);
|
||||
}
|
||||
}
|
||||
|
||||
CEntity::SendScriptMsgs(EScriptObjectState::Zero, stateMgr, EScriptObjectMessage::None);
|
||||
}
|
||||
}
|
||||
|
||||
u32 CScriptSpawnPoint::GetPowerup(CPlayerState::EItemType item) const
|
||||
{
|
||||
int idx = int(item);
|
||||
if (idx >= int(CPlayerState::EItemType::Max) || idx < 0)
|
||||
return x64_itemCounts.front();
|
||||
return x64_itemCounts[idx];
|
||||
}
|
||||
u32 CScriptSpawnPoint::GetPowerup(CPlayerState::EItemType item) const {
|
||||
int idx = int(item);
|
||||
if (idx >= int(CPlayerState::EItemType::Max) || idx < 0)
|
||||
return x64_itemCounts.front();
|
||||
return x64_itemCounts[idx];
|
||||
}
|
||||
} // namespace urde
|
||||
|
||||
Reference in New Issue
Block a user