#pragma once #include "../Core/Menu.h" #include "Keybinds.h" #include "PiecesType.h" #include #include #include static const int CURRENT_FILE_FORMAT_VERSION = 11; static const int MAXIMUM_BOARD_WIDTH = 40; static const int MAXIMUM_BOARD_HEIGHT = 40; static const int RELEASE_PIECES_SIZE = 15; static const int DEBUG_PIECES_SIZE = 10; static const int MINIMUM_PIECES_SIZE = 4; #ifdef NDEBUG static const int MAXIMUM_PIECES_SIZE = RELEASE_PIECES_SIZE; #else static const int MAXIMUM_PIECES_SIZE = DEBUG_PIECES_SIZE; #endif static const std::pair DEFAULT_SELECTION = {ALL_PIECES, MINIMUM_PIECES_SIZE}; class Settings { private: Menu menu; int loadablePiecesSize; bool loadedPieces; std::vector keybinds; int chosenKeybinds; int windowSizeMode; int startTimerLength; Gamemode gamemode; std::vector> selectedPieces; std::vector distributions; public: Settings(bool loadPieces); void loadPieces(int loadablePiecesSizeRequest); void loadSettingsFromFile(bool loadPieces, std::optional loadablePiecesSizeRequest); void saveSettingsToFile() const; bool selectNextKeybinds(); bool selectPreviousKeybinds(); bool canModifyCurrentKeybinds() const; bool widenWindow(); bool shortenWindow(); void changeVideoMode(sf::RenderWindow& window) const; bool lengthenStartTimer(); bool shortenStartTimer(); void setGamemode(Gamemode gamemode); void selectPieces(PiecesType type, int value); void unselectPieces(int index); void confirmSelectedPieces(); bool increaseDistribution(int size); bool decreaseDistribution(int size); void confirmDistribution(); Menu& getMenu(); Keybinds& getKeybinds(); int getLoadablePiecesSize() const; bool hasLoadedPieces() const; int getKeybindsLayout() const; Gamemode getGamemode() const; int getWindowSizeMultiplier() const; int getStartTimerLength() const; const std::vector>& getSelectedPieces() const; const std::vector& getDistributions() const; };