Core/Utilities: Use generic templates with AddPct, ApplyPct and CalculatePct

This commit is contained in:
Spp
2012-10-02 12:17:42 +02:00
parent f8846cdeaf
commit 380db44583
31 changed files with 321 additions and 357 deletions

View File

@@ -114,58 +114,22 @@ inline void ApplyPercentModFloatVar(float& var, float val, bool apply)
}
// Percentage calculation
template <class T>
inline T CalculatePctF(T base, float pct)
template <class T, class U>
inline T CalculatePct(T base, U pct)
{
return T(base * pct / 100.0f);
return T(base * static_cast<float>(pct) / 100.0f);
}
template <class T>
inline T CalculatePctN(T base, int32 pct)
template <class T, class U>
inline T AddPct(T &base, U pct)
{
return T(base * float(pct) / 100.0f);
return base += CalculatePct(base, pct);
}
template <class T>
inline T CalculatePctU(T base, uint32 pct)
template <class T, class U>
inline T ApplyPct(T &base, U pct)
{
return T(base * float(pct) / 100.0f);
}
template <class T>
inline T AddPctF(T& base, float pct)
{
return base += CalculatePctF(base, pct);
}
template <class T>
inline T AddPctN(T& base, int32 pct)
{
return base += CalculatePctN(base, pct);
}
template <class T>
inline T AddPctU(T& base, uint32 pct)
{
return base += CalculatePctU(base, pct);
}
template <class T>
inline T ApplyPctF(T& base, float pct)
{
return base = CalculatePctF(base, pct);
}
template <class T>
inline T ApplyPctN(T& base, int32 pct)
{
return base = CalculatePctN(base, pct);
}
template <class T>
inline T ApplyPctU(T& base, uint32 pct)
{
return base = CalculatePctU(base, pct);
return base = CalculatePct(base, pct);
}
template <class T>