Avocado/src/platform/windows/gui/gui.h
Jakub Czekański b51c2b8a64 memory_card: added support for .vgs, .gme, .vmp memory card formats
Load memory cards by drag&drop
Better parsing of memory card contents
Card formatting
2021-11-16 18:31:42 +01:00

75 lines
1.7 KiB
C++

#pragma once
#include <SDL.h>
#include <optional>
#include "file/open.h"
#include "debug/cdrom.h"
#include "debug/cpu.h"
#include "debug/gpu.h"
#include "debug/gte.h"
#include "debug/io.h"
#include "debug/kernel.h"
#include "debug/spu.h"
#include "debug/timers.h"
#include "help/about.h"
#include "options/bios.h"
#include "options/memory_card.h"
#include "options/options.h"
#include "options/system_options.h"
#include "toasts.h"
struct System;
class GUI {
int busToken;
SDL_Window* window;
bool notInitializedWindowShown = false;
std::string iniPath;
gui::file::Open openFile;
gui::debug::Cdrom cdromDebug;
gui::debug::CPU cpuDebug;
gui::debug::GPU gpuDebug;
gui::debug::Timers timersDebug;
gui::debug::GTE gteDebug;
gui::debug::SPU spuDebug;
gui::debug::IO ioDebug;
gui::options::Bios biosOptions;
gui::options::MemoryCard memoryCardOptions;
gui::options::System systemOptions;
gui::help::About aboutHelp;
gui::Toasts toasts;
void mainMenu(std::unique_ptr<System>& sys);
void memoryCardDialog();
void discDialog();
void drawControls(std::unique_ptr<System>& sys);
void renderController();
public:
static float scale;
bool singleFrame = false;
bool showGui = true;
bool showMenu = true;
// Status
double statusFps = 0.0;
bool statusFramelimitter = true;
bool statusMouseLocked = false;
// Drag&drop
std::optional<std::string> droppedItem;
enum class DroppedItemDialog { None, Disc, MemoryCard };
DroppedItemDialog droppedItemDialog = DroppedItemDialog::None;
GUI(SDL_Window* window, void* glContext);
~GUI();
void processEvent(SDL_Event* e);
void render(std::unique_ptr<System>& sys);
};