diff --git a/source/code/global.hpp b/source/code/global.hpp index d0874cd..4a1a102 100644 --- a/source/code/global.hpp +++ b/source/code/global.hpp @@ -32,6 +32,7 @@ http://www.blockattack.net #include "ExplosionManager.hpp" #include "sago/SagoTextField.hpp" #include "ModInfo.hpp" +#include "themes.hpp" //if SHAREDIR is not used we look in current directory #ifndef SHAREDIR @@ -72,9 +73,6 @@ const int SCREEN_HIGHT = 768; const int BOARD_WIDTH = 300; const int BOARD_HEIGHT = 600; -struct Theme { - std::string back_board = "back_board"; // Can also be "back_board_sample_snow" or "trans_cover" -}; struct GlobalData { sago::SagoSprite bHighScore; diff --git a/source/code/main.cpp b/source/code/main.cpp index d97d760..2cbd294 100644 --- a/source/code/main.cpp +++ b/source/code/main.cpp @@ -1529,6 +1529,7 @@ int runGame(Gametype gametype, int level) { if ( event.key.keysym.sym == SDLK_F5 ) { } if ( event.key.keysym.sym == SDLK_F11 ) { + globalData.theme = getNextTheme(); } //F11 } if ( event.key.keysym.sym == SDLK_F12 ) { diff --git a/source/code/themes.cpp b/source/code/themes.cpp new file mode 100644 index 0000000..999da72 --- /dev/null +++ b/source/code/themes.cpp @@ -0,0 +1,49 @@ +/* +=========================================================================== +blockattack - Block Attack - Rise of the Blocks +Copyright (C) 2005-2023 Poul Sander + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see http://www.gnu.org/licenses/ + +Source information and contacts persons can be found at +https://www.blockattack.net +=========================================================================== +*/ + + +#include "themes.hpp" + +#include + +static std::vector themes(1); +static bool initialized = false; +static size_t current_theme = 0; + +void InitThemes() { + if (initialized) { + return; + } + themes.resize(1); //Add the default theme + Theme snow; + snow.theme_name = "snow"; + snow.back_board = "back_board_sample_snow"; + themes.push_back(snow); +} + +Theme getNextTheme() { + InitThemes(); + current_theme++; + current_theme = current_theme % themes.size(); + return themes.at(current_theme); +} diff --git a/source/code/themes.hpp b/source/code/themes.hpp new file mode 100644 index 0000000..7a5db3c --- /dev/null +++ b/source/code/themes.hpp @@ -0,0 +1,37 @@ +/* +=========================================================================== +blockattack - Block Attack - Rise of the Blocks +Copyright (C) 2005-2023 Poul Sander + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see http://www.gnu.org/licenses/ + +Source information and contacts persons can be found at +https://www.blockattack.net +=========================================================================== +*/ + +#pragma once + +#include + +struct Theme { + std::string theme_name = "standard"; + std::string back_board = "back_board"; // Can also be "back_board_sample_snow" or "trans_cover" +}; + +/** + * @brief returns a theme from a list + * @return A copy of a theme + */ +Theme getNextTheme();