Tetris: add block texture

This commit is contained in:
2020-09-29 18:22:26 +02:00
parent eb60c88dac
commit 7621dc8dd4
8 changed files with 61 additions and 27 deletions
+31 -13
View File
@@ -15,7 +15,8 @@ constexpr uint64_t GAME_OVER_QUIT = 1;
constexpr uint64_t OPTIONS_MENU_COLOR_SCHEME = 0;
constexpr uint64_t OPTIONS_MENU_SHADOW = 1;
constexpr uint64_t OPTIONS_MENU_SAVE = 2;
constexpr uint64_t OPTIONS_MENU_3D = 2;
constexpr uint64_t OPTIONS_MENU_SAVE = 3;
// Scene preparation
@@ -229,7 +230,7 @@ void addOptionsSceneItems( SDLPP::Scene &scene, std::shared_ptr< SDLPP::Renderer
y->centerX();
scene.addObject( y );
auto color_scheme =
std::make_shared< SDLPP::TextRenderer >( 0.35, 0.4, 0.3, 0.09, r );
std::make_shared< SDLPP::TextRenderer >( 0.35, 0.3, 0.3, 0.09, r );
color_scheme->setText( *font, "Color scheme: " + color_schemes_names[selected_color_scheme], colors["text"], colors["text_out"], 5 );
color_scheme->centerX();
color_scheme->setColor( colors["menu_item_background"] );
@@ -237,12 +238,19 @@ void addOptionsSceneItems( SDLPP::Scene &scene, std::shared_ptr< SDLPP::Renderer
g_options_options.push_back(color_scheme);
scene.addObject( color_scheme );
auto shadow =
std::make_shared< SDLPP::TextRenderer >( 0.4, 0.5, 0.2, 0.09, r );
std::make_shared< SDLPP::TextRenderer >( 0.4, 0.4, 0.2, 0.09, r );
shadow->setText( *font, "Show shadow: YES", colors["text"], colors["text_out"], 5 );
shadow->centerX();
shadow->setId(MENU_ITEM_ID);
g_options_options.push_back(shadow);
scene.addObject(shadow);
auto show3d =
std::make_shared< SDLPP::TextRenderer >( 0.4, 0.5, 0.2, 0.09, r );
show3d->setText( *font, "Show block texture: NO", colors["text"], colors["text_out"], 5 );
show3d->centerX();
show3d->setId(MENU_ITEM_ID);
g_options_options.push_back(show3d);
scene.addObject(show3d);
auto save =
std::make_shared< SDLPP::TextRenderer >( 0.45, 0.6, 0.1, 0.09, r );
save->setText( *font, "SAVE", colors["text"], colors["text_out"], 5 );
@@ -454,7 +462,7 @@ void handleKeyDownMenu( SDL_Keycode key ) {
case SDLK_DOWN:
g_menu_options[g_menu_select]->unsetColor();
g_menu_select++;
if ( g_menu_select > g_menu_max )
if ( g_menu_select >= g_menu_options.size() )
g_menu_select = 0;
g_menu_options[g_menu_select]->setColor( colors["menu_item_background"] );
break;
@@ -463,7 +471,7 @@ void handleKeyDownMenu( SDL_Keycode key ) {
g_menu_options[g_menu_select]->unsetColor();
g_menu_select--;
if ( g_menu_select < 0 )
g_menu_select = g_menu_max;
g_menu_select = g_menu_options.size() - 1;
g_menu_options[g_menu_select]->setColor( colors["menu_item_background"] );
break;
case SDLK_RETURN:
@@ -529,7 +537,7 @@ void handleKeyDownGameOver( SDL_Keycode key ) {
case SDLK_DOWN:
g_game_over_options[g_game_over_select]->unsetColor();
g_game_over_select++;
if ( g_game_over_select > g_game_over_max )
if ( g_game_over_select >= g_game_over_options.size() )
g_game_over_select = 0;
g_game_over_options[g_game_over_select]->setColor( colors["menu_item_background"] );
break;
@@ -538,7 +546,7 @@ void handleKeyDownGameOver( SDL_Keycode key ) {
g_game_over_options[g_game_over_select]->unsetColor();
g_game_over_select--;
if ( g_game_over_select < 0 )
g_game_over_select = g_game_over_max;
g_game_over_select = g_game_over_options.size() - 1;
g_game_over_options[g_game_over_select]->setColor( colors["menu_item_background"] );
break;
case SDLK_RETURN:
@@ -601,7 +609,7 @@ void handleKeyDownOptions( SDL_Keycode key ) {
case SDLK_DOWN:
g_options_options[g_options_select]->unsetColor();
g_options_select++;
if ( g_options_select > g_options_max )
if ( g_options_select >= g_options_options.size() )
g_options_select = 0;
g_options_options[g_options_select]->setColor( colors["menu_item_background"] );
break;
@@ -610,7 +618,7 @@ void handleKeyDownOptions( SDL_Keycode key ) {
g_options_options[g_options_select]->unsetColor();
g_options_select--;
if ( g_options_select < 0 )
g_options_select = g_options_max;
g_options_select = g_options_options.size() - 1;
g_options_options[g_options_select]->setColor( colors["menu_item_background"] );
break;
case SDLK_RIGHT:
@@ -620,12 +628,17 @@ void handleKeyDownOptions( SDL_Keycode key ) {
selected_color_scheme++;
if(selected_color_scheme >= color_schemes_names.size())
selected_color_scheme = 0;
std::dynamic_pointer_cast<SDLPP::TextRenderer>(g_options_options[0])->changeText("Color scheme: " + color_schemes_names[selected_color_scheme]);
std::dynamic_pointer_cast<SDLPP::TextRenderer>(g_options_options[OPTIONS_MENU_COLOR_SCHEME])->changeText("Color scheme: " + color_schemes_names[selected_color_scheme]);
g_update_colors = true;
break;
case OPTIONS_MENU_SHADOW:
g_show_shadow = !g_show_shadow;
std::dynamic_pointer_cast<SDLPP::TextRenderer>(g_options_options[1])->changeText(std::string("Show shadow: ") + (g_show_shadow ? "YES" : "NO"));
std::dynamic_pointer_cast<SDLPP::TextRenderer>(g_options_options[OPTIONS_MENU_SHADOW])->changeText(std::string("Show shadow: ") + (g_show_shadow ? "YES" : "NO"));
g_update_colors = true;
break;
case OPTIONS_MENU_3D:
g_show_3d = !g_show_3d;
std::dynamic_pointer_cast<SDLPP::TextRenderer>(g_options_options[OPTIONS_MENU_3D])->changeText(std::string("Show block texture: ") + (g_show_3d ? "YES" : "NO"));
g_update_colors = true;
default:
break;
@@ -638,12 +651,17 @@ void handleKeyDownOptions( SDL_Keycode key ) {
if(selected_color_scheme == 0)
selected_color_scheme = color_schemes_names.size();
selected_color_scheme--;
std::dynamic_pointer_cast<SDLPP::TextRenderer>(g_options_options[0])->changeText("Color scheme: " + color_schemes_names[selected_color_scheme]);
std::dynamic_pointer_cast<SDLPP::TextRenderer>(g_options_options[OPTIONS_MENU_COLOR_SCHEME])->changeText("Color scheme: " + color_schemes_names[selected_color_scheme]);
g_update_colors = true;
break;
case OPTIONS_MENU_SHADOW:
g_show_shadow = !g_show_shadow;
std::dynamic_pointer_cast<SDLPP::TextRenderer>(g_options_options[1])->changeText(std::string("Show shadow: ") + (g_show_shadow ? "YES" : "NO"));
std::dynamic_pointer_cast<SDLPP::TextRenderer>(g_options_options[OPTIONS_MENU_SHADOW])->changeText(std::string("Show shadow: ") + (g_show_shadow ? "YES" : "NO"));
g_update_colors = true;
break;
case OPTIONS_MENU_3D:
g_show_3d = !g_show_3d;
std::dynamic_pointer_cast<SDLPP::TextRenderer>(g_options_options[OPTIONS_MENU_3D])->changeText(std::string("Show block texture: ") + (g_show_3d ? "YES" : "NO"));
g_update_colors = true;
default:
break;