#pragma once
#include "types.h"

enum class GPURenderer
{
  HardwareOpenGL,
  Software
};

struct Settings
{
  Settings();

  bool start_paused = false;

  GPURenderer gpu_renderer = GPURenderer::HardwareOpenGL;
  u32 gpu_resolution_scale = 1;
  u32 max_gpu_resolution_scale = 1;
  bool gpu_vsync = true;
  bool display_linear_filtering = true;

  struct DebugSettings
  {
    bool show_gpu_state = false;
    bool show_gpu_renderer_stats = false;
    bool show_vram = false;
    bool dump_cpu_to_vram_copies = false;
    bool dump_vram_to_cpu_copies = false;

    bool show_cdrom_state = false;
    bool show_spu_state = false;
    bool show_timers_state = false;
    bool show_mdec_state = false;
  } debugging;

  // TODO: Controllers, memory cards, etc.

  std::string memory_card_a_filename;
  std::string memory_card_b_filename;
};
