Scripts/Settings/PauseGame.cs
namespace Milaine.Settings;

public sealed class PauseGame : Component {
  [Property]
  public bool IsOpened { get; set; } = false;

  protected override void OnUpdate() {
    if (Input.EscapePressed) {
      Input.EscapePressed = false;

      if (IsOpened) {
        Resume();
        return;
      }

      Pause();
    }
  }

  private void Resume() {
    IsOpened = false;
    Scene.TimeScale = 1f;
  }

  private void Pause() {
    IsOpened = true;
    Scene.TimeScale = 0f;
  }

  public void OnBack() {
    IsOpened = false;
  }
}