Refactor CObject::ObjectDamage switch statement

This commit is contained in:
saml1er 2020-04-10 21:52:02 +05:00
parent c2b00d7ad9
commit 16360eb6df

View file

@ -169,26 +169,35 @@ CObject::ObjectDamage(float amount)
amount = 0.0f; amount = 0.0f;
} }
if ((amount * m_fCollisionDamageMultiplier > 150.0f || bBodyCastDamageEffect) && m_nCollisionDamageEffect) { if ((amount * m_fCollisionDamageMultiplier > 150.0f || bBodyCastDamageEffect) && m_nCollisionDamageEffect) {
if (m_nCollisionDamageEffect == COLDAMAGE_EFFECT_CHANGE_MODEL) { const CVector& vecPos = m_matrix.GetPosition();
const float fDirectionZ = 0.0002f * amount;
switch (m_nCollisionDamageEffect)
{
case COLDAMAGE_EFFECT_CHANGE_MODEL:
bRenderDamaged = true; bRenderDamaged = true;
return; break;
} case COLDAMAGE_EFFECT_SPLIT_MODEL:
if (m_nCollisionDamageEffect == COLDAMAGE_EFFECT_SPLIT_MODEL) break;
return; case COLDAMAGE_EFFECT_SMASH_COMPLETELY:
if (m_nCollisionDamageEffect == COLDAMAGE_EFFECT_SMASH_COMPLETELY) {
bIsVisible = false; bIsVisible = false;
bUsesCollision = false; bUsesCollision = false;
bIsStatic = true; bIsStatic = true;
bExplosionProof = true; bExplosionProof = true;
m_vecMoveSpeed = CVector(0.0f, 0.0f, 0.0f); m_vecMoveSpeed = CVector(0.0f, 0.0f, 0.0f);
m_vecTurnSpeed = CVector(0.0f, 0.0f, 0.0f); m_vecTurnSpeed = CVector(0.0f, 0.0f, 0.0f);
return; case COLDAMAGE_EFFECT_CHANGE_THEN_SMASH:
if (!bRenderDamaged) {
bRenderDamaged = true;
} }
if (m_nCollisionDamageEffect != COLDAMAGE_EFFECT_CHANGE_THEN_SMASH) { else {
const CVector& vecPos = m_matrix.GetPosition(); bIsVisible = false;
const float fDirectionZ = 0.0002f * amount; bUsesCollision = false;
switch (m_nCollisionDamageEffect) bIsStatic = true;
{ bExplosionProof = true;
m_vecMoveSpeed = CVector(0.0f, 0.0f, 0.0f);
m_vecTurnSpeed = CVector(0.0f, 0.0f, 0.0f);
}
break;
case COLDAMAGE_EFFECT_SMASH_CARDBOX_COMPLETELY: { case COLDAMAGE_EFFECT_SMASH_CARDBOX_COMPLETELY: {
bIsVisible = false; bIsVisible = false;
bUsesCollision = false; bUsesCollision = false;
@ -288,18 +297,6 @@ CObject::ObjectDamage(float amount)
default: default:
return; return;
} }
return;
}
if (!bRenderDamaged) {
bRenderDamaged = true;
} else {
bIsVisible = false;
bUsesCollision = false;
bIsStatic = true;
bExplosionProof = true;
m_vecMoveSpeed = CVector(0.0f, 0.0f, 0.0f);
m_vecTurnSpeed = CVector(0.0f, 0.0f, 0.0f);
}
} }
} }