3 const float TICK_INTERVAL = 2;
5 float m_TimeSinceLastTick;
6 float m_ProcessTimeAccuFreeze;
7 float m_ProcessTimeAccuFreezeRattle;
8 float m_ProcessTimeAccuHot;
12 float m_EventTimeFreezeRattle = -1;
13 float m_EventTimeFreeze = -1;
14 float m_EventTimeHot = -1;
35 void Update(
float delta_time, HumanMovementState hms)
37 m_TimeSinceLastTick += delta_time;
39 if (m_TimeSinceLastTick > TICK_INTERVAL)
44 m_TimeSinceLastTick = 0;
50 float hc = m_Player.GetStatHeatComfort().Get();
54 m_ProcessTimeAccuHot += delta_time;
56 if (m_EventTimeHot < 0 || m_ProcessTimeAccuHot >= m_EventTimeHot)
63 if (m_EventTimeHot > -1 && hc <= 0)
66 if (m_EventTimeFreeze > -1 && hc >= 0)
67 m_EventTimeFreeze = -1;
69 if (m_EventTimeFreezeRattle > -1)
70 m_EventTimeFreezeRattle = -1;
77 m_ProcessTimeAccuFreezeRattle += delta_time;
79 if (m_EventTimeFreezeRattle < 0 || m_ProcessTimeAccuFreezeRattle >= m_EventTimeFreezeRattle)
80 ProcessFreezeRattle(hc);
83 m_ProcessTimeAccuFreeze += delta_time;
85 if (m_EventTimeFreeze < 0 || m_ProcessTimeAccuFreeze >= m_EventTimeFreeze)
92 private void ProcessHot(
float hcValue)
94 m_Player.GetSymptomManager().QueueUpPrimarySymptom(SymptomIDs.SYMPTOM_HOT);
96 m_ProcessTimeAccuHot = 0;
101 private void ProcessFreeze(
float hcValue)
103 m_Player.GetSymptomManager().QueueUpPrimarySymptom(SymptomIDs.SYMPTOM_FREEZE);
105 m_ProcessTimeAccuFreeze = 0;
110 private void ProcessFreezeRattle(
float hcValue)
112 m_Player.GetSymptomManager().QueueUpPrimarySymptom(SymptomIDs.SYMPTOM_FREEZE_RATTLE);
114 m_ProcessTimeAccuFreezeRattle = 0;
119 private float GetEventTime(
float hcValue,
float threshold_low,
float thresholdHigh,
float lowMin,
float highMin,
float lowMax,
float highMax)
121 float inv_value = Math.Clamp(Math.InverseLerp(threshold_low, thresholdHigh, hcValue), 0, 1);
122 float valueMin = Math.Lerp(lowMin, highMin, inv_value);
123 float value_max = Math.Lerp(lowMax, highMax, inv_value);
125 return Math.RandomFloatInclusive(valueMin, value_max);