Park/Events/EventEffects/HeatWaveEvent.cs
using HC3;
public class HeatWaveEvent : BaseEvent
{
ColorGrading ColorGrading { get; set; }
ColorAdjustments ColorAdjustments { get; set; }
GameObject CameraObject { get; set; }
private List<Guest> AllGuests;
protected override void OnStart()
{
base.OnStart();
ColorGrading = Scene.Camera.AddComponent<ColorGrading>();
ColorGrading.GradingMethod = ColorGrading.GradingType.TemperatureControl;
ColorAdjustments = Scene.Camera.AddComponent<ColorAdjustments>();
AllGuests = Scene.GetAllComponents<Guest>().ToList();
}
protected override void OnUpdate()
{
base.OnUpdate();
if ( !ColorGrading.IsValid() ) return;
ColorGrading.ColorTempK = MathX.Lerp( ColorGrading.ColorTempK, 3000.0f, Time.Delta * 0.5f );
ColorAdjustments.Brightness = MathX.Lerp( ColorAdjustments.Brightness, 2.0f, Time.Delta * 0.5f );
// Don't update guests happiness if we aren't the host.
if ( !Networking.IsHost )
return;
if ( AllGuests == null ) return;
foreach ( var guest in AllGuests )
{
if ( guest.IsValid() )
{
var need = guest.Needs.GetNeed( "thirst" );
if ( need != null )
{
need.Level -= Time.Delta * 0.2f;
}
}
}
}
protected override void OnDestroy()
{
ColorGrading?.Destroy();
ColorAdjustments?.Destroy();
}
}