PostProcessing.cs
using System.Linq;
using Sandbox;
using Editor;

namespace Facepunch.BombRoyale;

[Group( "Bomb Royale" )]
[Title( "Post Processing" )]
public sealed class PostProcessing : Component
{
	private Pixelate Pixelate { get; set; }
	private ColorAdjustments ColorAdjustments { get; set; }
	private Sharpen Sharpen { get; set; }
	private ChromaticAberration ChromaticAberration { get; set; }
	
	protected override void OnStart()
	{
		Pixelate = Components.Get<Pixelate>();
		ColorAdjustments = Components.Get<ColorAdjustments>();
		Sharpen = Components.Get<Sharpen>();
		ChromaticAberration = Components.Get<ChromaticAberration>();
		
		base.OnStart();
	}

	protected override void OnUpdate()
	{
		var sum = ScreenShake.List.OfType<ScreenShake.Random>().Sum( s => (1f - s.Progress) );

		Pixelate.Scale = 0.02f * sum;
		ColorAdjustments.Saturation = 1.1f;

		if ( StateSystem.Active is SummaryState )
		{
			ColorAdjustments.Saturation = 0.25f;
		}

		ColorAdjustments.Contrast = 1f;

		var me = Player.Me;

		if ( me.IsValid() && me.LastTakeDamageTime.Absolute > 0f && me.LastTakeDamageTime < 1f )
		{
			var delta = 1f - ((1f / 1f) * me.LastTakeDamageTime);
			Pixelate.Scale += (0.05f * delta);
			ColorAdjustments.Saturation -= (0.5f * delta);
			ColorAdjustments.Contrast += (0.1f * delta);
		}

		ChromaticAberration.Scale = 0.03f + (0.05f * sum);
		Sharpen.Scale = 0.1f;
		
		base.OnUpdate();
	}
}