Skip to content

Commit

Permalink
Now possible to switch themes with F11 in game
Browse files Browse the repository at this point in the history
  • Loading branch information
sago007 committed Jul 25, 2023
1 parent 8f0c9d8 commit aaba4f1
Show file tree
Hide file tree
Showing 4 changed files with 88 additions and 3 deletions.
4 changes: 1 addition & 3 deletions source/code/global.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ Source information and contacts persons can be found at
#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
Expand Down Expand Up @@ -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;
Expand Down
1 change: 1 addition & 0 deletions source/code/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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 ) {
Expand Down
49 changes: 49 additions & 0 deletions source/code/themes.cpp
Original file line number Diff line number Diff line change
@@ -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);
}
37 changes: 37 additions & 0 deletions source/code/themes.hpp
Original file line number Diff line number Diff line change
@@ -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();

0 comments on commit aaba4f1

Please sign in to comment.