diff --git a/.gitignore b/.gitignore index 81709a670..2510aed51 100644 --- a/.gitignore +++ b/.gitignore @@ -4,7 +4,5 @@ version.h .DS_Store *.autosave docs/* -.idea/dictionaries -.idea/workspace.xml -.idea/misc.xml +.idea/ Editor/platforms/win/urde.rc diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml deleted file mode 100644 index f0175108e..000000000 --- a/.idea/codeStyles/Project.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/codeStyles/codeStyleConfig.xml b/.idea/codeStyles/codeStyleConfig.xml deleted file mode 100644 index 79ee123c2..000000000 --- a/.idea/codeStyles/codeStyleConfig.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml deleted file mode 100644 index 922e1c890..000000000 --- a/.idea/modules.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/.idea/urde.iml b/.idea/urde.iml deleted file mode 100644 index f08604bb6..000000000 --- a/.idea/urde.iml +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/Runtime/MP1/World/CDrone.cpp b/Runtime/MP1/World/CDrone.cpp index 5d79dea7a..f0d1e52db 100644 --- a/Runtime/MP1/World/CDrone.cpp +++ b/Runtime/MP1/World/CDrone.cpp @@ -301,7 +301,7 @@ void CDrone::PreRender(CStateManager& mgr, const zeus::CFrustum& frustum) { } } -void CDrone::Render(const CStateManager& mgr) const { +void CDrone::Render(CStateManager& mgr) { bool isOne = x3fc_flavor == EFlavorType::One; if (!isOne || GetModelAlphau8(mgr) != 0) { if (isOne && mgr.GetPlayerState()->GetActiveVisor(mgr) == CPlayerState::EPlayerVisor::XRay) { @@ -811,10 +811,13 @@ bool CDrone::LineOfSight(CStateManager& mgr, float arg) { {EMaterialTypes::Player, EMaterialTypes::ProjectilePassthrough}), this); } + bool CDrone::ShouldMove(CStateManager& mgr, float arg) { return x644_ <= 0.f; } + bool CDrone::CodeTrigger(CStateManager& mgr, float arg) { return x834_29_codeTrigger; } -void CDrone::Burn(float duration, float damage) { /* Intentionally empty */ -} + +void CDrone::Burn(float duration, float damage) { /* Intentionally empty */ } + CPathFindSearch* CDrone::GetSearchPath() { return &x6b0_pathFind; } void CDrone::BuildNearList(EMaterialTypes includeMat, EMaterialTypes excludeMat, @@ -823,6 +826,7 @@ void CDrone::BuildNearList(EMaterialTypes includeMat, EMaterialTypes excludeMat, mgr.BuildNearList(listOut, zeus::CAABox(pos - radius, pos + radius), CMaterialFilter::MakeIncludeExclude({includeMat}, {excludeMat}), nullptr); } + void CDrone::SetLightEnabled(CStateManager& mgr, bool activate) { mgr.SendScriptMsgAlways(x578_lightId, GetUniqueId(), activate ? EScriptObjectMessage::Activate : EScriptObjectMessage::Deactivate); @@ -848,6 +852,7 @@ bool CDrone::HitShield(const zeus::CVector3f& dir) const { return false; } + void CDrone::AddToTeam(CStateManager& mgr) const { if (x688_teamMgr == kInvalidUniqueId) { return; @@ -858,6 +863,7 @@ void CDrone::AddToTeam(CStateManager& mgr) const { CTeamAiRole::ETeamAiRole::Invalid); } } + void CDrone::RemoveFromTeam(CStateManager& mgr) const { if (TCastToPtr teamMgr = mgr.ObjectById(x688_teamMgr)) { if (teamMgr->IsPartOfTeam(GetUniqueId())) { @@ -865,6 +871,7 @@ void CDrone::RemoveFromTeam(CStateManager& mgr) const { } } } + void CDrone::UpdateLaser(CStateManager& mgr, u32 laserIdx, bool b1) { // TODO: Finish } @@ -902,6 +909,7 @@ void CDrone::StrafeFromCompanions(CStateManager& mgr) { x450_bodyController->GetCommandMgr().DeliverCmd(CBCStepCmd(pas::EStepDirection::Right, pas::EStepType::Normal)); } } + void CDrone::UpdateScanner(CStateManager& mgr, float dt) { x5d4_ = zeus::CRelAngle::MakeRelativeAngle(1.2f * dt + x5d4_); x5d8_ = zeus::CRelAngle::MakeRelativeAngle(x5d8_); @@ -923,8 +931,13 @@ void CDrone::UpdateScanner(CStateManager& mgr, float dt) { } } } + void CDrone::sub_80163c40(float, CStateManager& mgr) {} + void CDrone::sub_801633a8(CStateManager& mgr) {} + void CDrone::sub_8015f25c(float dt, CStateManager& mgr) {} + void CDrone::sub_8015f158(float dt) {} + } // namespace urde::MP1 diff --git a/Runtime/MP1/World/CDrone.hpp b/Runtime/MP1/World/CDrone.hpp index 2939884c3..b6ce4d6d6 100644 --- a/Runtime/MP1/World/CDrone.hpp +++ b/Runtime/MP1/World/CDrone.hpp @@ -76,7 +76,7 @@ class CDrone : public CPatterned { CSfxHandle x7d0_; rstl::reserved_vector x7d4_ = {{kInvalidUniqueId, kInvalidUniqueId}}; rstl::reserved_vector x7e0_ = {{zeus::skZero3f, zeus::skZero3f}}; - rstl::reserved_vector x7fc_ = {{zeus::skZero3f, zeus::skZero3f}};; + rstl::reserved_vector x7fc_ = {{zeus::skZero3f, zeus::skZero3f}}; rstl::reserved_vector x818_ = {{0.f, 0.f}}; rstl::reserved_vector x824_ = {{false, false}}; std::unique_ptr x82c_shieldModel; @@ -93,6 +93,7 @@ class CDrone : public CPatterned { bool x835_24_ : 1; bool x835_25_ : 1; bool x835_26_ : 1; + void UpdateTouchBounds(float radius); bool HitShield(const zeus::CVector3f& dir) const; void AddToTeam(CStateManager& mgr) const; @@ -106,6 +107,7 @@ class CDrone : public CPatterned { void sub_801633a8(CStateManager& mgr); void sub_8015f25c(float dt, CStateManager& mgr); void sub_8015f158(float dt); + public: DEFINE_PATTERNED(Drone); CDrone(TUniqueId uid, std::string_view name, EFlavorType flavor, const CEntityInfo& info, const zeus::CTransform& xf, @@ -120,7 +122,7 @@ public: void Think(float dt, CStateManager& mgr) override; void AcceptScriptMsg(EScriptObjectMessage msg, TUniqueId sender, CStateManager& mgr) override; void PreRender(CStateManager& mgr, const zeus::CFrustum& frustum) override; - void Render(const CStateManager& mgr) const override; + void Render(CStateManager& mgr) override; bool CanRenderUnsorted(const CStateManager& mgr) const override; const CDamageVulnerability* GetDamageVulnerability() const override { return CAi::GetDamageVulnerability(); } const CDamageVulnerability* GetDamageVulnerability(const zeus::CVector3f&, const zeus::CVector3f&, diff --git a/Runtime/MP1/World/CDroneLaser.cpp b/Runtime/MP1/World/CDroneLaser.cpp index 2d12a9352..da4ee05e3 100644 --- a/Runtime/MP1/World/CDroneLaser.cpp +++ b/Runtime/MP1/World/CDroneLaser.cpp @@ -42,12 +42,12 @@ void CDroneLaser::AcceptScriptMsg(EScriptObjectMessage msg, TUniqueId sender, CS } } -void CDroneLaser::AddToRenderer(const zeus::CFrustum& frustum, const CStateManager& mgr) const { +void CDroneLaser::AddToRenderer(const zeus::CFrustum& frustum, CStateManager& mgr) { g_Renderer->AddParticleGen(*x104_beamParticle); EnsureRendered(mgr); } -void CDroneLaser::Render(const CStateManager& mgr) const { +void CDroneLaser::Render(CStateManager& mgr) { // g_Renderer->SetDepthReadWrite(true, true); RenderBeam(4, 0.01f, zeus::CColor(1.f, .9f, .9f, 1.f), true); // g_Renderer->SetDepthReadWrite(true, false); @@ -64,9 +64,12 @@ void CDroneLaser::CalculateRenderBounds() { box.accumulateBounds(xe8_ - (mag1 * GetTransform().basis[2])); x9c_renderBounds = box; } + void CDroneLaser::SetScannerLightActive(CStateManager& mgr, bool activate) { mgr.SendScriptMsgAlways(xf4_scannerLight, GetUniqueId(), activate ? EScriptObjectMessage::Activate : EScriptObjectMessage::Deactivate); } + void CDroneLaser::RenderBeam(u32 w, float f, const zeus::CColor& col, bool) const {} + } // namespace urde::MP1 diff --git a/Runtime/MP1/World/CDroneLaser.hpp b/Runtime/MP1/World/CDroneLaser.hpp index 783873353..cb83b5da1 100644 --- a/Runtime/MP1/World/CDroneLaser.hpp +++ b/Runtime/MP1/World/CDroneLaser.hpp @@ -12,14 +12,15 @@ class CDroneLaser : public CActor { void SetScannerLightActive(CStateManager& mgr, bool activate); void RenderBeam(u32 w, float f, const zeus::CColor& col, bool) const; + public: CDroneLaser(TUniqueId uid, TAreaId aId, const zeus::CTransform& xf, CAssetId particle); void Accept(IVisitor& visitor) override; void Think(float dt, CStateManager& mgr) override; void AcceptScriptMsg(EScriptObjectMessage msg, TUniqueId sender, CStateManager& mgr) override; - void AddToRenderer(const zeus::CFrustum& frustum, const CStateManager& mgr) const override; - void Render(const CStateManager& mgr) const override; + void AddToRenderer(const zeus::CFrustum& frustum, CStateManager& mgr) override; + void Render(CStateManager& mgr) override; void CalculateRenderBounds() override; }; } // namespace MP1 -} // namespace urde \ No newline at end of file +} // namespace urde diff --git a/Runtime/MP1/World/CIceSheegoth.cpp b/Runtime/MP1/World/CIceSheegoth.cpp index 19f79c7ac..160230341 100644 --- a/Runtime/MP1/World/CIceSheegoth.cpp +++ b/Runtime/MP1/World/CIceSheegoth.cpp @@ -762,6 +762,7 @@ void CIceSheegoth::ProjectileAttack(CStateManager& mgr, EStateMsg msg, float dt) xb28_26_ = false; } } + void CIceSheegoth::Flinch(CStateManager& mgr, EStateMsg msg, float dt) { if (msg == EStateMsg::Activate) { x568_ = 0; @@ -1104,6 +1105,7 @@ void CIceSheegoth::SetupCollisionActorManager(CStateManager& mgr) { AddMaterial(EMaterialTypes::ProjectilePassthrough, mgr); xa2c_collisionManager->AddMaterial(mgr, {EMaterialTypes::AIJoint, EMaterialTypes::CameraPassthrough}); } + void CIceSheegoth::SetupHealthInfo(CStateManager& mgr) { CHealthInfo* thisHealth = HealthInfo(mgr); x970_maxHp = thisHealth->GetHP(); @@ -1223,6 +1225,7 @@ void CIceSheegoth::UpdateTimers(float dt) { x968_interestTimer += dt; } } + void CIceSheegoth::UpdateScanState(CStateManager& mgr) { if (!xb29_29_scanned && GetScannableObjectInfo() != nullptr && zeus::close_enough(1.f, mgr.GetPlayerState()->GetScanTime(GetScannableObjectInfo()->GetScannableObjectId()))) { @@ -1412,11 +1415,13 @@ bool CIceSheegoth::sub_8019ecdc(CStateManager& mgr, float minAngle) { return zeus::CVector2f::getAngleDiff(GetTransform().basis[1].toVec2f(), plAimPos.toVec2f() - GetTranslation().toVec2f()) > minAngle; } + void CIceSheegoth::SetMouthVulnerability(CStateManager& mgr, bool isVulnerable) { if (TCastToPtr colAct = mgr.ObjectById(xaf8_mouthCollider)) { colAct->SetDamageVulnerability(isVulnerable ? x56c_sheegothData.Get_xe8() : x98c_mouthVulnerability); } } + void CIceSheegoth::SetGillVulnerability(CStateManager& mgr, bool isVulnerable) { for (TUniqueId uid : xafc_gillColliders) { if (TCastToPtr colAct = mgr.ObjectById(uid)) { @@ -1467,6 +1472,7 @@ void CIceSheegoth::ShakePlayer(CStateManager& mgr) { sub_8019ebf0(mgr, 0.25f * x56c_sheegothData.Get_x170()); } } + zeus::CVector3f CIceSheegoth::GetEnergyAttractionPos(CStateManager& mgr) const { if (const TCastToConstPtr colAct = mgr.GetObjectById(xaf6_iceShardsCollider)) { return colAct->GetTranslation(); @@ -1474,6 +1480,7 @@ zeus::CVector3f CIceSheegoth::GetEnergyAttractionPos(CStateManager& mgr) const { return GetTranslation(); } + bool CIceSheegoth::ShouldAttractProjectile(const CGameProjectile& proj, CStateManager& mgr) const { if (proj.GetType() != EWeaponType::Missile && proj.GetType() != EWeaponType::Plasma && (!proj.GetDamageInfo().GetWeaponMode().IsComboed() || proj.GetType() != EWeaponType::Power)) { @@ -1500,6 +1507,7 @@ bool CIceSheegoth::ShouldAttractProjectile(const CGameProjectile& proj, CStateMa return false; } + bool CIceSheegoth::IsClosestSheegoth(CStateManager& mgr, rstl::reserved_vector nearList, zeus::CVector3f projectileOffset) const { @@ -1517,4 +1525,4 @@ bool CIceSheegoth::IsClosestSheegoth(CStateManager& mgr, rstl::reserved_vector nearList, const zeus::CVector3f projectileOffset) const; + bool IsClosestSheegoth(CStateManager& mgr, const rstl::reserved_vector nearList, + const zeus::CVector3f projectileOffset) const; public: DEFINE_PATTERNED(IceSheeegoth); diff --git a/Runtime/MP1/World/CPuddleSpore.cpp b/Runtime/MP1/World/CPuddleSpore.cpp index a0744347f..5716c7c26 100644 --- a/Runtime/MP1/World/CPuddleSpore.cpp +++ b/Runtime/MP1/World/CPuddleSpore.cpp @@ -69,7 +69,9 @@ bool CPuddleSpore::HitShell(const zeus::CVector3f& point) const { return (distance <= -0.5f || distance >= 0.5f); } -void CPuddleSpore::KnockPlayer(CStateManager&, float) {} +void CPuddleSpore::KnockPlayer(CStateManager& mgr, float arg) { + // TODO implement +} void CPuddleSpore::UpdateBoundingState(const zeus::CAABox& box, CStateManager& mgr, float dt) { SetBoundingBox(box); @@ -296,4 +298,4 @@ void CPuddleSpore::Attack(CStateManager& mgr, EStateMsg msg, float) { x32c_animState = EAnimState::NotReady; } } -} // namespace urde::MP1 \ No newline at end of file +} // namespace urde::MP1 diff --git a/Runtime/MP1/World/CPuddleSpore.hpp b/Runtime/MP1/World/CPuddleSpore.hpp index b5b76e485..40e16263b 100644 --- a/Runtime/MP1/World/CPuddleSpore.hpp +++ b/Runtime/MP1/World/CPuddleSpore.hpp @@ -26,7 +26,7 @@ class CPuddleSpore : public CPatterned { CCollidableAABox x5a0_; u32 x5c8_ = 0; u32 x5cc_ = 0; - TToken x5d0_; + TCachedToken x5d0_; std::vector> x5dc_elemGens; // originally a vector of CElementGen CProjectileInfo x5ec_projectileInfo; bool x614_24 : 1 = false; @@ -81,4 +81,4 @@ public: void GetUp(CStateManager&, EStateMsg, float) override; void Attack(CStateManager&, EStateMsg, float) override; }; -} // namespace urde::MP1 \ No newline at end of file +} // namespace urde::MP1