ThermalBiasHandler.c
class ThermalBiasHandler
{
protected PlayerBase m_Player;
protected PlayerStat<float> m_StatCache;
protected float m_TemporaryResistanceTime;
void ThermalBiasHandler(PlayerBase player)
{
m_Player = player;
m_TemporaryResistanceTime = 0.0;
}
private PlayerStat<float> GetStat()
{
if (!m_StatCache && m_Player.GetPlayerStats())
m_StatCache = PlayerStat<float>.Cast(m_Player.GetPlayerStats().GetStatObject(EPlayerStats_current.THERMAL_BIAS));
return m_StatCache;
}
void OnTick(float deltaT)
{
if (m_TemporaryResistanceTime > 0.0)
{
m_TemporaryResistanceTime -= deltaT;
if (m_TemporaryResistanceTime < 0.0)
m_TemporaryResistanceTime = 0.0;
}
}
float Get()
{
PlayerStat<float> stat = GetStat();
if (stat)
return stat.Get();
return 0.0;
}
void Add(float value)
{
if (m_TemporaryResistanceTime > 0.0)
return;
PlayerStat<float> stat = GetStat();
if (stat)
stat.Add(value);
}
void Set(float value)
{
PlayerStat<float> stat = GetStat();
if (stat)
stat.Set(value);
}
void SetTemporaryResistance(float time)
{
m_TemporaryResistanceTime = Math.Clamp(time, 0.0, float.MAX);
}
float GetTemporaryResistance()
{
return m_TemporaryResistanceTime;
}
void OnStoreSave(ParamsWriteContext ctx)
{
ctx.Write(m_TemporaryResistanceTime);
}
bool OnStoreLoad(ParamsReadContext ctx, int version)
{
if (!ctx.Read(m_TemporaryResistanceTime))
return false;
return true;
}
}