git repos / blockattack-game

commit aaba4f1e

Poul Sander · 2023-07-25 13:34
aaba4f1e0d7551b23e412da464560a488aafd085 patch · browse files
parent 8f0c9d809f4326fb79e6adfcf826951c458e8ed3

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();