#pragma once
#include "quokka_gfx/quokka_gfx.h"

//------------------------------------------------------------
class MainMenuScreen : public quokka_gfx::Screen
{
  static constexpr float FADE_IN_MAX_ALPHA = 0.8f;     // Maximum alpha value for fade-in effect
  static constexpr float FADE_IN_DURATION  = 0.2f;     // Duration of the fade-in effect in seconds

  public:
  MainMenuScreen()                                     = delete;      // Default constructor
  virtual ~MainMenuScreen()                            = default;     // Default destructor
  MainMenuScreen(const MainMenuScreen &obj)            = delete;      // Copy constructor
  MainMenuScreen(MainMenuScreen &&obj)                 = delete;      // Move constructor
  MainMenuScreen &operator=(const MainMenuScreen &obj) = delete;      // Copy assignment operator
  MainMenuScreen &operator=(MainMenuScreen &&obj)      = delete;      // Move assignment operator

  explicit MainMenuScreen(quokka_gfx::Application *app);     // Constructor

  void on_enter() override;                                        // Called when the screen is entered
  void on_exit() override;                                         // Called when the screen is exited
  void handleEvents() override;                                    // Manage events
  void update(const double deltaTime) override;                    // Update the logic of the screen
  void render(quokka_gfx::RendererManager *renderer) override;     // Render the screen

  protected:
  float m_alpha = 0.0f;     // Alpha value for fade-in effect
};
//------------------------------------------------------------
