public void UpdateVentingPhase(HeatVentController heatVent) { switch(heatVent.state) { case HeatVentState.Start: UpdateStart(heatVent); break; case HeatVentState.Closed: UpdateClosedState(heatVent); break; case HeatVentState.Opening: UpdateOpeningState(heatVent); break; case HeatVentState.WarmingUp: UpdateWarmingUpState(heatVent); break; case HeatVentState.Venting: UpdateVentingState(heatVent); break; case HeatVentState.Closing: UpdateClosingState(heatVent); break; } }
public void SetCycleCompletion(HeatVentController heatVent, float cyclePercent) { transitions[HeatVentState.Start](heatVent); HeatVentState targetState = HeatVentState.Closed; float targetStateStayTime = stateTimers[targetState]; while (targetStateStayTime < totalCycleTime * cyclePercent) { transitions[targetState](heatVent); ++targetState; targetStateStayTime += stateTimers[targetState]; } heatVent.state = targetState; heatVent.stateExitTime = Time.timeSinceLevelLoad + (targetStateStayTime - (totalCycleTime * cyclePercent)); }
private void UpdateStart(HeatVentController heatVent) { TransitionToClosed(heatVent); }
private void UpdateWarmingUpState(HeatVentController heatVent) { if(Time.timeSinceLevelLoad >= heatVent.stateExitTime) { TransitionToVenting(heatVent); } else { heatVent.UpdateWarmingUp(); } }
private void UpdateClosingState(HeatVentController heatVent) { if(Time.timeSinceLevelLoad >= heatVent.stateExitTime) { TransitionToClosed(heatVent); } else { heatVent.UpdateVentDoorClosing(); } }
private void UpdateOpeningState(HeatVentController heatVent) { if(Time.timeSinceLevelLoad >= heatVent.stateExitTime) { TransitionToWarmingUp(heatVent); } else { heatVent.UpdateVentDoorOpening(); } }
private void TransitionToWarmingUp(HeatVentController heatVent) { SetStateAndTimer(heatVent, HeatVentState.WarmingUp); UpdateWarmingUpState(heatVent); }
private void UpdateClosedState(HeatVentController heatVent) { if(Time.timeSinceLevelLoad >= heatVent.stateExitTime) { TransitionToOpening(heatVent); } }
private void TransitionToVenting(HeatVentController heatVent) { SetStateAndTimer(heatVent, HeatVentState.Venting); heatVent.SetHazadrousLayer(); UpdateVentingState(heatVent); }
private void TransitionToOpening(HeatVentController heatVent) { SetStateAndTimer(heatVent, HeatVentState.Opening); UpdateOpeningState(heatVent); }
private void TransitionToClosing(HeatVentController heatVent) { SetStateAndTimer(heatVent, HeatVentState.Closing); heatVent.SetSafeLayer(); UpdateClosingState(heatVent); }
private void TransitionToClosed(HeatVentController heatVent) { SetStateAndTimer(heatVent, HeatVentState.Closed); UpdateClosedState(heatVent); }
private void SetStateAndTimer(HeatVentController heatVent, HeatVentState state) { heatVent.StateExitTime = Time.timeSinceLevelLoad + stateTimers[state]; heatVent.state = state; }