2
0
mirror of https://github.com/AxioDL/metaforce.git synced 2025-07-14 19:25:51 +00:00

Minor stylistic adjustments

This commit is contained in:
Jack Andersen 2017-10-05 21:43:39 -10:00
parent 0f68e2ba3f
commit d8fc301484
3 changed files with 58 additions and 48 deletions

View File

@ -19,6 +19,10 @@ struct ITweakGame : ITweak
virtual float GetRippleIntensityPoison() const = 0; virtual float GetRippleIntensityPoison() const = 0;
virtual float GetRippleIntensityLava() const = 0; virtual float GetRippleIntensityLava() const = 0;
virtual float GetFluidEnvBumpScale() const = 0; virtual float GetFluidEnvBumpScale() const = 0;
virtual float GetWaterFogDistanceBase() const = 0;
virtual float GetWaterFogDistanceRange() const = 0;
virtual float GetGravityWaterFogDistanceBase() const = 0;
virtual float GetGravityWaterFogDistanceRange() const = 0;
virtual float GetHardModeDamageMultiplier() const = 0; virtual float GetHardModeDamageMultiplier() const = 0;
virtual float GetHardModeWeaponMultiplier() const = 0; virtual float GetHardModeWeaponMultiplier() const = 0;
}; };

View File

@ -45,6 +45,10 @@ struct CTweakGame final : ITweakGame
float GetRippleIntensityPoison() const { return x44_rippleIntentityPoison; } float GetRippleIntensityPoison() const { return x44_rippleIntentityPoison; }
float GetRippleIntensityLava() const { return x48_rippleIntensityLava; } float GetRippleIntensityLava() const { return x48_rippleIntensityLava; }
float GetFluidEnvBumpScale() const { return x4c_fluidEnvBumpScale; } float GetFluidEnvBumpScale() const { return x4c_fluidEnvBumpScale; }
float GetWaterFogDistanceBase() const { return x50_waterFogDistanceBase; }
float GetWaterFogDistanceRange() const { return x54_waterFogDistanceRange; }
float GetGravityWaterFogDistanceBase() const { return x58_gravityWaterFogDistanceBase; }
float GetGravityWaterFogDistanceRange() const { return x5c_gravityWaterFogDistanceRange; }
float GetHardModeDamageMultiplier() const { return x60_hardmodeDamageMult; } float GetHardModeDamageMultiplier() const { return x60_hardmodeDamageMult; }
float GetHardModeWeaponMultiplier() const { return x64_hardmodeWeaponMult; } float GetHardModeWeaponMultiplier() const { return x64_hardmodeWeaponMult; }
CTweakGame() = default; CTweakGame() = default;

View File

@ -215,7 +215,7 @@ void CCameraManager::RestoreHintlessCamera(CStateManager& mgr)
x80_ballCamera->TeleportCamera(x80_ballCamera->UpdateLookDirection(camToPlayerFlat, mgr), mgr); x80_ballCamera->TeleportCamera(x80_ballCamera->UpdateLookDirection(camToPlayerFlat, mgr), mgr);
InterpolateToBallCamera(ballCamXf, x80_ballCamera->GetUniqueId(), x80_ballCamera->GetX1D8(), InterpolateToBallCamera(ballCamXf, x80_ballCamera->GetUniqueId(), x80_ballCamera->GetX1D8(),
hint->GetHint().GetX5C(), hint->GetHint().GetX4C(), hint->GetHint().GetX50(), hint->GetHint().GetX5C(), hint->GetHint().GetX4C(), hint->GetHint().GetX50(),
((hint->GetHint().GetOverrideFlags() >> 11) & 0x1) != 0, mgr); (hint->GetHint().GetOverrideFlags() & 0x800) != 0, mgr);
} }
} }
} }
@ -276,25 +276,25 @@ void CCameraManager::ApplyCameraHint(const CScriptCameraHint& hint, CStateManage
{ {
InterpolateToBallCamera(camXf, x80_ballCamera->GetUniqueId(), x80_ballCamera->GetX1D8(), InterpolateToBallCamera(camXf, x80_ballCamera->GetUniqueId(), x80_ballCamera->GetX1D8(),
hint.GetHint().GetX58(), hint.GetHint().GetX4C(), hint.GetHint().GetX50(), hint.GetHint().GetX58(), hint.GetHint().GetX4C(), hint.GetHint().GetX50(),
((hint.GetHint().GetOverrideFlags() >> 10) & 0x1) != 0, mgr); (hint.GetHint().GetOverrideFlags() & 0x400) != 0, mgr);
} }
} }
void CCameraManager::UpdateCameraHints(float, CStateManager& mgr) void CCameraManager::UpdateCameraHints(float, CStateManager& mgr)
{ {
bool r27 = false; bool invalidHintRemoved = false;
for (auto it = xac_cameraHints.begin() ; it != xac_cameraHints.end() ;) for (auto it = xac_cameraHints.begin() ; it != xac_cameraHints.end() ;)
{ {
if (!TCastToPtr<CScriptCameraHint>(mgr.ObjectById(it->second))) if (!TCastToPtr<CScriptCameraHint>(mgr.ObjectById(it->second)))
{ {
r27 = true; invalidHintRemoved = true;
it = xac_cameraHints.erase(it); it = xac_cameraHints.erase(it);
continue; continue;
} }
++it; ++it;
} }
bool r26 = false; bool inactiveHintRemoved = false;
for (TUniqueId id : x2b0_inactiveCameraHints) for (TUniqueId id : x2b0_inactiveCameraHints)
{ {
if (TCastToConstPtr<CScriptCameraHint> hint = mgr.GetObjectById(id)) if (TCastToConstPtr<CScriptCameraHint> hint = mgr.GetObjectById(id))
@ -308,7 +308,7 @@ void CCameraManager::UpdateCameraHints(float, CStateManager& mgr)
xac_cameraHints.erase(it); xac_cameraHints.erase(it);
if (xa6_camHintId == id) if (xa6_camHintId == id)
{ {
r26 = true; inactiveHintRemoved = true;
SetPathCamera(kInvalidUniqueId, mgr); SetPathCamera(kInvalidUniqueId, mgr);
SetSpindleCamera(kInvalidUniqueId, mgr); SetSpindleCamera(kInvalidUniqueId, mgr);
} }
@ -320,61 +320,61 @@ void CCameraManager::UpdateCameraHints(float, CStateManager& mgr)
} }
x2b0_inactiveCameraHints.clear(); x2b0_inactiveCameraHints.clear();
bool r25 = false; bool activeHintAdded = false;
for (TUniqueId id : x334_activeCameraHints) for (TUniqueId id : x334_activeCameraHints)
{ {
if (TCastToConstPtr<CScriptCameraHint> hint = mgr.GetObjectById(id)) if (TCastToConstPtr<CScriptCameraHint> hint = mgr.GetObjectById(id))
{ {
bool newActiveHint = false; bool activeHintPresent = false;
for (auto it = xac_cameraHints.begin() ; it != xac_cameraHints.end() ; ++it) for (auto it = xac_cameraHints.begin() ; it != xac_cameraHints.end() ; ++it)
{ {
if (it->second == id) if (it->second == id)
{ {
newActiveHint = true; activeHintPresent = true;
break; break;
} }
} }
if (!newActiveHint) if (!activeHintPresent)
{ {
r25 = true; activeHintAdded = true;
xac_cameraHints.emplace_back(hint->GetPriority(), id); xac_cameraHints.emplace_back(hint->GetPriority(), id);
} }
} }
} }
x334_activeCameraHints.clear(); x334_activeCameraHints.clear();
if (r26 || r25 || r27) if (inactiveHintRemoved || activeHintAdded || invalidHintRemoved)
{ {
std::sort(xac_cameraHints.begin(), xac_cameraHints.end(), std::sort(xac_cameraHints.begin(), xac_cameraHints.end(),
[](const auto& a, const auto& b) { return a.first < b.first; }); [](const auto& a, const auto& b) { return a.first < b.first; });
zeus::CTransform ballCamXf = x80_ballCamera->GetTransform(); zeus::CTransform ballCamXf = x80_ballCamera->GetTransform();
if ((r26 || r27) && xac_cameraHints.empty()) if ((inactiveHintRemoved || invalidHintRemoved) && xac_cameraHints.empty())
{ {
RestoreHintlessCamera(mgr); RestoreHintlessCamera(mgr);
return; return;
} }
bool r26b = false; bool foundHint = false;
CScriptCameraHint* foundHint = nullptr; CScriptCameraHint* bestHint = nullptr;
for (auto& h : xac_cameraHints) for (auto& h : xac_cameraHints)
{ {
if (TCastToPtr<CScriptCameraHint> hint = mgr.ObjectById(h.second)) if (TCastToPtr<CScriptCameraHint> hint = mgr.ObjectById(h.second))
{ {
foundHint = hint.GetPtr(); bestHint = hint.GetPtr();
r26b = true; foundHint = true;
break; break;
} }
} }
if (!r26b) if (!foundHint)
RestoreHintlessCamera(mgr); RestoreHintlessCamera(mgr);
bool r25b = false; bool changeHint = false;
if (foundHint && r26b) if (bestHint && foundHint)
{ {
if ((foundHint->GetHint().GetOverrideFlags() & 0x80) != 0 && xac_cameraHints.size() > 1) if ((bestHint->GetHint().GetOverrideFlags() & 0x80) != 0 && xac_cameraHints.size() > 1)
{ {
zeus::CVector3f ballPos = mgr.GetPlayer().GetBallPosition(); zeus::CVector3f ballPos = mgr.GetPlayer().GetBallPosition();
if ((foundHint->GetHint().GetOverrideFlags() & 0x100) != 0) if ((bestHint->GetHint().GetOverrideFlags() & 0x100) != 0)
{ {
zeus::CVector3f camToBall = ballPos - ballCamXf.origin; zeus::CVector3f camToBall = ballPos - ballCamXf.origin;
if (camToBall.canBeNormalized()) if (camToBall.canBeNormalized())
@ -387,14 +387,14 @@ void CCameraManager::UpdateCameraHints(float, CStateManager& mgr)
if (TCastToPtr<CScriptCameraHint> hint = mgr.ObjectById(it->second)) if (TCastToPtr<CScriptCameraHint> hint = mgr.ObjectById(it->second))
{ {
if ((hint->GetHint().GetOverrideFlags() & 0x80) != 0 && hint->GetPriority() == if ((hint->GetHint().GetOverrideFlags() & 0x80) != 0 && hint->GetPriority() ==
foundHint->GetPriority() && bestHint->GetPriority() &&
hint->GetAreaIdAlways() == foundHint->GetAreaIdAlways()) hint->GetAreaIdAlways() == bestHint->GetAreaIdAlways())
{ {
zeus::CVector3f hintToBall = ballPos - foundHint->GetTranslation(); zeus::CVector3f hintToBall = ballPos - bestHint->GetTranslation();
if (hintToBall.canBeNormalized()) if (hintToBall.canBeNormalized())
hintToBall.normalize(); hintToBall.normalize();
else else
hintToBall = foundHint->GetTransform().basis[1]; hintToBall = bestHint->GetTransform().basis[1];
float camHintDot = zeus::clamp(-1.f, camToBall.dot(hintToBall), 1.f); float camHintDot = zeus::clamp(-1.f, camToBall.dot(hintToBall), 1.f);
@ -407,7 +407,7 @@ void CCameraManager::UpdateCameraHints(float, CStateManager& mgr)
float camThisHintDot = zeus::clamp(-1.f, camToBall.dot(thisHintToBall), 1.f); float camThisHintDot = zeus::clamp(-1.f, camToBall.dot(thisHintToBall), 1.f);
if (camThisHintDot > camHintDot) if (camThisHintDot > camHintDot)
foundHint = hint.GetPtr(); bestHint = hint.GetPtr();
} }
else else
{ {
@ -422,7 +422,7 @@ void CCameraManager::UpdateCameraHints(float, CStateManager& mgr)
} }
else else
{ {
if (TCastToConstPtr<CActor> act = mgr.GetObjectById(foundHint->GetFirstHelper())) if (TCastToConstPtr<CActor> act = mgr.GetObjectById(bestHint->GetFirstHelper()))
{ {
zeus::CVector3f ballPos = mgr.GetPlayer().GetBallPosition(); zeus::CVector3f ballPos = mgr.GetPlayer().GetBallPosition();
zeus::CVector3f f26 = act->GetTranslation() - ballPos; zeus::CVector3f f26 = act->GetTranslation() - ballPos;
@ -430,21 +430,21 @@ void CCameraManager::UpdateCameraHints(float, CStateManager& mgr)
if (ballToHelper.canBeNormalized()) if (ballToHelper.canBeNormalized())
ballToHelper.normalize(); ballToHelper.normalize();
else else
ballToHelper = foundHint->GetTransform().basis[1]; ballToHelper = bestHint->GetTransform().basis[1];
for (auto it = xac_cameraHints.begin() + 1 ; it != xac_cameraHints.end() ; ++it) for (auto it = xac_cameraHints.begin() + 1 ; it != xac_cameraHints.end() ; ++it)
{ {
if (TCastToPtr<CScriptCameraHint> hint = mgr.ObjectById(it->second)) if (TCastToPtr<CScriptCameraHint> hint = mgr.ObjectById(it->second))
{ {
if ((hint->GetHint().GetOverrideFlags() & 0x80) != 0 && hint->GetPriority() == if ((hint->GetHint().GetOverrideFlags() & 0x80) != 0 && hint->GetPriority() ==
foundHint->GetPriority() && bestHint->GetPriority() &&
hint->GetAreaIdAlways() == foundHint->GetAreaIdAlways()) hint->GetAreaIdAlways() == bestHint->GetAreaIdAlways())
{ {
zeus::CVector3f hintToHelper = act->GetTranslation() - foundHint->GetTranslation(); zeus::CVector3f hintToHelper = act->GetTranslation() - bestHint->GetTranslation();
if (hintToHelper.canBeNormalized()) if (hintToHelper.canBeNormalized())
hintToHelper.normalize(); hintToHelper.normalize();
else else
hintToHelper = foundHint->GetTransform().basis[1]; hintToHelper = bestHint->GetTransform().basis[1];
float ballHintDot = zeus::clamp(-1.f, ballToHelper.dot(hintToHelper), 1.f); float ballHintDot = zeus::clamp(-1.f, ballToHelper.dot(hintToHelper), 1.f);
@ -464,7 +464,7 @@ void CCameraManager::UpdateCameraHints(float, CStateManager& mgr)
zeus::clamp(-1.f, thisBallToHelper.dot(thisHintToHelper), 1.f); zeus::clamp(-1.f, thisBallToHelper.dot(thisHintToHelper), 1.f);
if (thisBallHintDot > ballHintDot) if (thisBallHintDot > ballHintDot)
foundHint = hint.GetPtr(); bestHint = hint.GetPtr();
} }
else else
{ {
@ -479,31 +479,31 @@ void CCameraManager::UpdateCameraHints(float, CStateManager& mgr)
} }
} }
if (foundHint->GetUniqueId() != xa6_camHintId) if (bestHint->GetUniqueId() != xa6_camHintId)
r25b = true; changeHint = true;
} }
else if (xa6_camHintId != foundHint->GetUniqueId()) else if (xa6_camHintId != bestHint->GetUniqueId())
{ {
if (foundHint->GetHint().GetBehaviourType() == CBallCamera::EBallCameraBehaviour::Three) if (bestHint->GetHint().GetBehaviourType() == CBallCamera::EBallCameraBehaviour::Three)
{ {
if ((foundHint->GetHint().GetOverrideFlags() & 0x20) != 0) if ((bestHint->GetHint().GetOverrideFlags() & 0x20) != 0)
{ {
x80_ballCamera->TeleportCamera( x80_ballCamera->TeleportCamera(
zeus::lookAt(foundHint->GetTranslation(), x80_ballCamera->GetX1D8()), mgr); zeus::lookAt(bestHint->GetTranslation(), x80_ballCamera->GetX1D8()), mgr);
} }
DeleteCameraHint(foundHint->GetUniqueId(), mgr); DeleteCameraHint(bestHint->GetUniqueId(), mgr);
if ((foundHint->GetHint().GetOverrideFlags() & 0x2000) != 0) if ((bestHint->GetHint().GetOverrideFlags() & 0x2000) != 0)
SkipBallCameraCinematic(mgr); SkipBallCameraCinematic(mgr);
r25b = false; changeHint = false;
} }
else else
{ {
r25b = true; changeHint = true;
} }
} }
if (r25b) if (changeHint)
ApplyCameraHint(*foundHint, mgr); ApplyCameraHint(*bestHint, mgr);
} }
} }
} }
@ -615,9 +615,11 @@ float CCameraManager::CalculateFogDensity(CStateManager& mgr, const CScriptWater
float distanceFactor = 1.f - water->GetFluidPlane().GetAlpha(); float distanceFactor = 1.f - water->GetFluidPlane().GetAlpha();
float distance = 0; float distance = 0;
if (mgr.GetPlayerState()->HasPowerUp(CPlayerState::EItemType::GravitySuit)) if (mgr.GetPlayerState()->HasPowerUp(CPlayerState::EItemType::GravitySuit))
distance = g_tweakGame->x5c_gravityWaterFogDistanceRange * distanceFactor + g_tweakGame->x58_gravityWaterFogDistanceBase; distance = g_tweakGame->GetGravityWaterFogDistanceRange() * distanceFactor +
g_tweakGame->GetGravityWaterFogDistanceBase();
else else
distance = g_tweakGame->x54_waterFogDistanceRange * distanceFactor + g_tweakGame->x50_waterFogDistanceBase; distance = g_tweakGame->GetWaterFogDistanceRange() * distanceFactor +
g_tweakGame->GetWaterFogDistanceBase();
return distance * x94_fogDensityFactor; return distance * x94_fogDensityFactor;
} }