commit aaba4f1e
Now possible to switch themes with F11 in game
Changed files
| M | source/code/global.hpp before |
| M | source/code/main.cpp before |
| A | source/code/themes.cpp |
| A | source/code/themes.hpp |
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 <vector>
+
+static std::vector<Theme> 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 <string>
+
+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();