updated file format
This commit is contained in:
@@ -13,44 +13,54 @@ static const sf::Vector2u BASE_WINDOW_SIZE = {80, 50};
|
||||
static const int WINDOW_SIZE_MULTIPLIERS[] = {4, 6, 10, 14, 20, 30, 40};
|
||||
static const int WINDOW_SIZE_LAST_MODE = (sizeof(WINDOW_SIZE_MULTIPLIERS) / sizeof(int)) - 1;
|
||||
static const int START_TIMER_MAX = 4;
|
||||
static const int DISTRIBUTION_MAX = 10;
|
||||
static const int DISTRIBUTION_MAX = 20;
|
||||
|
||||
|
||||
Settings::Settings(int maximumPiecesSize) {
|
||||
if (maximumPiecesSize < MINIMUM_PIECES_SIZE || maximumPiecesSize > LOADED_PIECES_SIZE) {
|
||||
this->maximumPiecesSize = 0;
|
||||
this->loadedPieces = false;
|
||||
}
|
||||
else {
|
||||
bool loaded = true;
|
||||
int i = 1;
|
||||
while (loaded && (i <= maximumPiecesSize)) {
|
||||
loaded = this->menu.getPiecesList().loadPieces(i);
|
||||
i++;
|
||||
}
|
||||
|
||||
if (loaded) {
|
||||
this->maximumPiecesSize = maximumPiecesSize;
|
||||
this->loadedPieces = true;
|
||||
}
|
||||
else {
|
||||
this->maximumPiecesSize = 0;
|
||||
this->loadedPieces = false;
|
||||
}
|
||||
}
|
||||
|
||||
Settings::Settings(bool loadPieces) {
|
||||
this->keybinds.reserve(NUMBER_OF_KEYBINDS);
|
||||
for (int i = 0; i < NUMBER_OF_KEYBINDS; i++) {
|
||||
this->keybinds.emplace_back(i);
|
||||
}
|
||||
|
||||
this->loadSettingsFromFile();
|
||||
this->loadSettingsFromFile(loadPieces);
|
||||
}
|
||||
|
||||
void Settings::loadSettingsFromFile() {
|
||||
bool Settings::loadPieces(int maximumPiecesSizeRequest) {
|
||||
if (maximumPiecesSizeRequest < MINIMUM_PIECES_SIZE) {
|
||||
maximumPiecesSizeRequest = MINIMUM_PIECES_SIZE;
|
||||
}
|
||||
else if (maximumPiecesSizeRequest > LOADED_PIECES_SIZE || maximumPiecesSizeRequest > MAXIMUM_PIECES_SIZE) {
|
||||
maximumPiecesSizeRequest = LOADED_PIECES_SIZE;
|
||||
}
|
||||
|
||||
bool succeeded = true;
|
||||
int i = 1;
|
||||
while (succeeded && (i <= maximumPiecesSizeRequest)) {
|
||||
succeeded = this->menu.getPiecesList().loadPieces(i);
|
||||
i++;
|
||||
}
|
||||
|
||||
this->maximumPiecesSize = (succeeded) ? maximumPiecesSizeRequest : 0;
|
||||
return succeeded;
|
||||
|
||||
}
|
||||
|
||||
void Settings::loadSettingsFromFile(bool loadPieces) {
|
||||
std::ifstream settingsFile("data/config/settings.bin", std::ios::binary);
|
||||
char byte;
|
||||
|
||||
// file format version
|
||||
settingsFile.get(byte);
|
||||
|
||||
// maximum pieces size
|
||||
settingsFile.get(byte);
|
||||
if (loadPieces) {
|
||||
this->loadedPieces = this->loadPieces(byte);
|
||||
}
|
||||
else {
|
||||
this->loadedPieces = false;
|
||||
}
|
||||
|
||||
// keybind layout
|
||||
settingsFile.get(byte);
|
||||
this->chosenKeybinds = byte;
|
||||
@@ -144,6 +154,14 @@ void Settings::saveSettingsToFile() const {
|
||||
std::ofstream settingsFile("data/config/settings.bin", std::ios::trunc | std::ios::binary);
|
||||
char byte;
|
||||
|
||||
// file format version
|
||||
byte = CURRENT_FILE_FORMAT_VERSION;
|
||||
settingsFile.write(&byte, 1);
|
||||
|
||||
// maximum pieces size
|
||||
byte = this->maximumPiecesSize;
|
||||
settingsFile.write(&byte, 1);
|
||||
|
||||
// keybind layout
|
||||
byte = this->chosenKeybinds;
|
||||
settingsFile.write(&byte, 1);
|
||||
|
||||
Reference in New Issue
Block a user