diff options
| -rw-r--r-- | game/CMakeLists.txt | 1 | ||||
| -rw-r--r-- | game/GameScene.cpp | 5 | ||||
| -rw-r--r-- | game/coins/CoinSubScene.cpp | 3 | ||||
| -rw-r--r-- | game/coins/CoinSystemScript.cpp | 6 | ||||
| -rw-r--r-- | game/menus/ButtonSubScene.cpp | 38 | ||||
| -rw-r--r-- | game/menus/ButtonSubScene.h | 4 | ||||
| -rw-r--r-- | game/menus/FloatingWindowSubScene.cpp | 178 | ||||
| -rw-r--r-- | game/menus/FloatingWindowSubScene.h | 16 | ||||
| -rw-r--r-- | game/menus/MenusConfig.h | 2 | ||||
| -rw-r--r-- | game/menus/endgame/EndGameSubScene.cpp | 199 | ||||
| -rw-r--r-- | game/menus/endgame/EndGameSubScene.h | 7 | 
11 files changed, 284 insertions, 175 deletions
diff --git a/game/CMakeLists.txt b/game/CMakeLists.txt index 4c5bd53..9886973 100644 --- a/game/CMakeLists.txt +++ b/game/CMakeLists.txt @@ -27,6 +27,7 @@ add_executable(main  	menus/IButtonScript.cpp  	menus/ButtonSetShopScript.cpp  	menus/ButtonSetMainMenuScript.cpp +	menus/FloatingWindowSubScene.cpp  	menus/shop/ShopMenuScene.cpp  	menus/mainmenu/ButtonTransitionPreviewScript.cpp  	menus/mainmenu/ITransitionScript.cpp diff --git a/game/GameScene.cpp b/game/GameScene.cpp index bd12d50..24b4287 100644 --- a/game/GameScene.cpp +++ b/game/GameScene.cpp @@ -10,6 +10,7 @@  #include "hud/HudScript.h"  #include "hud/HudSubScene.h"  #include "hud/SpeedScript.h" +#include "menus/endgame/EndGameSubScene.h"  #include "player/PlayerSubScene.h"  #include <cmath> @@ -133,6 +134,10 @@ void GameScene::load_scene() {  		.collision_layer = COLL_LAY_MISSILE,  	});  	missile.add_component<BoxCollider>(vec2(100, 100)); + + +	EndGameSubScene test; +	test.create(*this);  }  string GameScene::get_name() const { return "scene1"; } diff --git a/game/coins/CoinSubScene.cpp b/game/coins/CoinSubScene.cpp index 604af78..3914921 100644 --- a/game/coins/CoinSubScene.cpp +++ b/game/coins/CoinSubScene.cpp @@ -5,8 +5,6 @@  #include "api/Rigidbody.h"  #include "api/Scene.h"  #include "api/AudioSource.h" -#include <concepts> -#include <iostream>  #include "CoinScript.h"  #include "../Config.h" @@ -18,7 +16,6 @@ int CoinSubScene::create(Scene & scn){  	static int coin_counter = 0;  	string unique_name = "coin_" + to_string(coin_counter++); -	cout << "new coin: "<< unique_name << endl;  	GameObject coin = scn.new_object(unique_name.c_str(),"coin",vec2{650,0},0,1);  	coin.add_component<Rigidbody>(Rigidbody::Data{ diff --git a/game/coins/CoinSystemScript.cpp b/game/coins/CoinSystemScript.cpp index b77c597..c9c301e 100644 --- a/game/coins/CoinSystemScript.cpp +++ b/game/coins/CoinSystemScript.cpp @@ -5,7 +5,6 @@  #include "api/Sprite.h"  #include "api/Transform.h"  #include <random> -#include "iostream"  using namespace crepe;  using namespace std; @@ -239,10 +238,7 @@ void CoinSystemScript::generate_locations(){  	std::uniform_real_distribution<float> space_dist(SPAWN_SPACING_MIN, SPAWN_SPACING_MAX);  	float spacing = space_dist(engine); - - -	cout << "selected " << selected_index << std::endl; -	cout << "spacing " << spacing << std::endl; +	  	// Call the corresponding function and return the new x position  	this->system_position += functions[selected_index]({this->system_position,0});  	this->system_position += spacing; diff --git a/game/menus/ButtonSubScene.cpp b/game/menus/ButtonSubScene.cpp index d735d08..8574b9b 100644 --- a/game/menus/ButtonSubScene.cpp +++ b/game/menus/ButtonSubScene.cpp @@ -56,7 +56,7 @@ void ButtonSubScene::set_icon(crepe::GameObject & button_object,const Data & dat  	switch (data.icon_type) {  		case IconSelect::SHOP:  			button_object.add_component<Sprite>(Asset("asset/ui/buttonCoinsSmall.png"),Sprite::Data{ -				.sorting_in_layer = STARTING_SORTING_IN_LAYER+3, +				.sorting_in_layer = STARTING_SORTING_IN_LAYER+3 + data.sorting_layer_offset,  				.size = ICON_SIZE,  				.position_offset = data.icon_offset,  				.world_space = data.worldspace, @@ -64,7 +64,7 @@ void ButtonSubScene::set_icon(crepe::GameObject & button_object,const Data & dat  			break;  		case IconSelect::COINS:  			button_object.add_component<Sprite>(Asset("asset/ui/buttonCoinsSmall.png"),Sprite::Data{ -				.sorting_in_layer = STARTING_SORTING_IN_LAYER+3, +				.sorting_in_layer = STARTING_SORTING_IN_LAYER+3 + data.sorting_layer_offset,  				.size = ICON_SIZE,  				.position_offset = data.icon_offset,  				.world_space = data.worldspace, @@ -81,17 +81,17 @@ void ButtonSubScene::set_button_overlay(crepe::GameObject & button_object,const  			this->large_btn_overlay(button_object,data);  			break;  		case ButtonSelect::BACK: -			this->small_btn_overlay(button_object,data); +			this->back_btn_overlay(button_object,data);  			break;  		case ButtonSelect::NEXT: -			this->small_btn_overlay(button_object,data); +			this->next_btn_overlay(button_object,data);  			break;  	}  }  void ButtonSubScene::large_btn_overlay(crepe::GameObject & button_object,const Data & data){  	button_object.add_component<Sprite>(Asset("asset/ui/buttonBacking.png"),Sprite::Data{ -		.sorting_in_layer = STARTING_SORTING_IN_LAYER+1, +		.sorting_in_layer = STARTING_SORTING_IN_LAYER+1 + data.sorting_layer_offset,  		.size = LARGE_OVERLAY_SIZE,  		.world_space = data.worldspace,  	}); @@ -100,15 +100,15 @@ void ButtonSubScene::large_btn_overlay(crepe::GameObject & button_object,const D  	this->btn_color_side(button_object,SIDE_PANEL_OFFSET,data);  } -void ButtonSubScene::small_btn_overlay(crepe::GameObject & button_object,const Data & data){ +void ButtonSubScene::back_btn_overlay(crepe::GameObject & button_object,const Data & data){  	button_object.add_component<Sprite>(Asset("asset/ui/backbuttonright.png"),Sprite::Data{ -		.sorting_in_layer = STARTING_SORTING_IN_LAYER+1, +		.sorting_in_layer = STARTING_SORTING_IN_LAYER+1+ data.sorting_layer_offset,  		.size = SMALL_OVERLAY_SIZE_RIGHT,  		.position_offset = {20,0},  		.world_space = data.worldspace,  	});  	button_object.add_component<Sprite>(Asset("asset/ui/backbuttonleft.png"),Sprite::Data{ -		.sorting_in_layer = STARTING_SORTING_IN_LAYER+1, +		.sorting_in_layer = STARTING_SORTING_IN_LAYER+1+ data.sorting_layer_offset,  		.size = SMALL_OVERLAY_SIZE_LEFT,  		.position_offset = {-80,0},  		.world_space = data.worldspace, @@ -116,16 +116,34 @@ void ButtonSubScene::small_btn_overlay(crepe::GameObject & button_object,const D  	button_object.add_component<Button>(vec2{SMALL_OVERLAY_SIZE_LEFT.x+SMALL_OVERLAY_SIZE_RIGHT.x,SMALL_OVERLAY_SIZE_LEFT.y},Button::Data{});  } +void ButtonSubScene::next_btn_overlay(crepe::GameObject & button_object,const Data & data){ +	button_object.add_component<Sprite>(Asset("asset/ui/backbuttonright.png"),Sprite::Data{ +		.flip = {true,false}, +		.sorting_in_layer = STARTING_SORTING_IN_LAYER+1+ data.sorting_layer_offset, +		.size = SMALL_OVERLAY_SIZE_RIGHT, +		.position_offset = {-20,0}, +		.world_space = data.worldspace, +	}); +	button_object.add_component<Sprite>(Asset("asset/ui/backbuttonleft.png"),Sprite::Data{ +		.flip = {true,false}, +		.sorting_in_layer = STARTING_SORTING_IN_LAYER+1+ data.sorting_layer_offset, +		.size = SMALL_OVERLAY_SIZE_LEFT, +		.position_offset = {80,0}, +		.world_space = data.worldspace, +	}); +	button_object.add_component<Button>(vec2{SMALL_OVERLAY_SIZE_LEFT.x+SMALL_OVERLAY_SIZE_RIGHT.x,SMALL_OVERLAY_SIZE_LEFT.y},Button::Data{}); +} +  void ButtonSubScene::btn_color_side(crepe::GameObject & button_object,const vec2 & offset,const Data & data){  	button_object.add_component<Sprite>(Asset("asset/ui/buttonSmallBlue.png"),Sprite::Data{ -		.sorting_in_layer = STARTING_SORTING_IN_LAYER+2, +		.sorting_in_layer = STARTING_SORTING_IN_LAYER + 2 + data.sorting_layer_offset,  		.size = SIDE_PANEL_SIZE,  		.position_offset = offset,  		.world_space = data.worldspace,  	});  	button_object.add_component<Sprite>(Asset("asset/ui/buttonSmallBlue.png"),Sprite::Data{  		.flip = {true,false}, -		.sorting_in_layer = STARTING_SORTING_IN_LAYER+2, +		.sorting_in_layer = STARTING_SORTING_IN_LAYER+2 + data.sorting_layer_offset,  		.size = SIDE_PANEL_SIZE,  		.position_offset = {-offset.x,offset.y},  		.world_space = data.worldspace, diff --git a/game/menus/ButtonSubScene.h b/game/menus/ButtonSubScene.h index 6781d19..28daed2 100644 --- a/game/menus/ButtonSubScene.h +++ b/game/menus/ButtonSubScene.h @@ -43,12 +43,14 @@ public:  		const bool worldspace = true;  		const bool color_side = true;  		const std::string & tag = ""; +		const int sorting_layer_offset = 0;  	};  public:  	void create(crepe::Scene & scn,const Data & data);  private:  	void large_btn_overlay(crepe::GameObject & button_object,const Data & data); -	void small_btn_overlay(crepe::GameObject & button_object,const Data & data); +	void back_btn_overlay(crepe::GameObject & button_object,const Data & data); +	void next_btn_overlay(crepe::GameObject & button_object,const Data & data);  	void btn_color_side(crepe::GameObject & button_object,const crepe::vec2 & offset,const Data & data);  	void btn_text(crepe::GameObject & button_object,const Data & data);  	void set_script(crepe::GameObject & button_object,const Data & data); diff --git a/game/menus/FloatingWindowSubScene.cpp b/game/menus/FloatingWindowSubScene.cpp new file mode 100644 index 0000000..16963bb --- /dev/null +++ b/game/menus/FloatingWindowSubScene.cpp @@ -0,0 +1,178 @@ + +#include "FloatingWindowSubScene.h" +#include "MenusConfig.h" +#include "types.h" + +#include <crepe/api/GameObject.h> +#include <crepe/api/Scene.h> +#include <crepe/api/Sprite.h> +#include <crepe/api/Camera.h> + +using namespace crepe; +using namespace std; + +void FloatingWindowSubScene::create(Scene & scn,const Data & data){ +	const vec2 SIZE = {data.width,data.width*0.75f}; +	const vec2 POSITION_CORRECTION = vec2{0,-SIZE.y/2} + data.offset; +	const float THICKNESS_BANNER = 34; +	const float MIDDLE_OFFSET_FACTOR_TICKNESS = 0.83; +	const float MIDDLE_OFFSET_FACTOR_OFFSET = 1.2; +	const float MIDDLE_OFFSET_FACTOR_MIDDLE_WIDTH = 0.86; +	const float MIDDLE_OFFSET_OFFSET_ADDITION = -0.5; +	const float BOTTOM_OFFSET_X = 3; +	const float BOTTOM_OFFSET_Y = -3; + +	GameObject floatingwindow = scn.new_object("FloatingWindow",data.group_tag); + +	// Top_middle +	floatingwindow.add_component<Sprite>( +		Asset("asset/ui/settings_container/top_middle_setting.png"), +		Sprite::Data{ +		.sorting_in_layer = STARTING_SORTING_IN_LAYER+8, +		.size = {SIZE.x,THICKNESS_BANNER}, +		.position_offset = POSITION_CORRECTION + vec2{0,0}, +		.world_space = false, +		}); + +	// Top_Left +	floatingwindow.add_component<Sprite>( +		Asset("asset/ui/settings_container/top_left_setting.png"), +		Sprite::Data{ +		.sorting_in_layer = STARTING_SORTING_IN_LAYER+8, +		.size = {THICKNESS_BANNER,THICKNESS_BANNER}, +		.position_offset = POSITION_CORRECTION + vec2{-SIZE.x/2-THICKNESS_BANNER/2,0}, +		.world_space = false, +		}); + +	// Top_Right +	floatingwindow.add_component<Sprite>( +		Asset("asset/ui/settings_container/top_right_setting.png"), +		Sprite::Data{ +		.sorting_in_layer = STARTING_SORTING_IN_LAYER+8, +		.size = {THICKNESS_BANNER,THICKNESS_BANNER}, +		.position_offset = POSITION_CORRECTION + vec2{SIZE.x/2+THICKNESS_BANNER/2,0}, +		.world_space = false, +		}); + +	// Top_middle_2 +	floatingwindow.add_component<Sprite>( +		Asset("asset/ui/settings_container/top_2_middle_setting.png"), +		Sprite::Data{ +		.sorting_in_layer = STARTING_SORTING_IN_LAYER+8, +		.size = {SIZE.x,THICKNESS_BANNER}, +		.position_offset = POSITION_CORRECTION + vec2{0,THICKNESS_BANNER}, +		.world_space = false, +		}); + +	// Top_Left_2 +	floatingwindow.add_component<Sprite>( +		Asset("asset/ui/settings_container/top_2_left_setting.png"), +		Sprite::Data{ +		.sorting_in_layer = STARTING_SORTING_IN_LAYER+8, +		.size = {THICKNESS_BANNER,THICKNESS_BANNER}, +		.position_offset = POSITION_CORRECTION + vec2{-SIZE.x/2-THICKNESS_BANNER/2,THICKNESS_BANNER}, +		.world_space = false, +		}); + +	// Top_Right_2 +	floatingwindow.add_component<Sprite>( +		Asset("asset/ui/settings_container/top_2_right_setting.png"), +		Sprite::Data{ +		.sorting_in_layer = STARTING_SORTING_IN_LAYER+8, +		.size = {THICKNESS_BANNER,THICKNESS_BANNER}, +		.position_offset = POSITION_CORRECTION + vec2{SIZE.x/2+THICKNESS_BANNER/2,THICKNESS_BANNER}, +		.world_space = false, +		}); + +	// Top_middle_3 +	floatingwindow.add_component<Sprite>( +		Asset("asset/ui/settings_container/top_3_middle_setting.png"), +		Sprite::Data{ +		.sorting_in_layer = STARTING_SORTING_IN_LAYER+8, +		.size = {SIZE.x,THICKNESS_BANNER}, +		.position_offset = POSITION_CORRECTION + vec2{0,THICKNESS_BANNER*2}, +		.world_space = false, +		}); + +	// Top_Left_3 +	floatingwindow.add_component<Sprite>( +		Asset("asset/ui/settings_container/top_3_left_setting.png"), +		Sprite::Data{ +		.sorting_in_layer = STARTING_SORTING_IN_LAYER+8, +		.size = {THICKNESS_BANNER,THICKNESS_BANNER}, +		.position_offset = POSITION_CORRECTION + vec2{-SIZE.x/2-THICKNESS_BANNER/2,THICKNESS_BANNER*2}, +		.world_space = false, +		}); + +	// Top_Right_3 +	floatingwindow.add_component<Sprite>( +		Asset("asset/ui/settings_container/top_3_right_setting.png"), +		Sprite::Data{ +		.sorting_in_layer = STARTING_SORTING_IN_LAYER+8, +		.size = {THICKNESS_BANNER,THICKNESS_BANNER}, +		.position_offset = POSITION_CORRECTION + vec2{SIZE.x/2+THICKNESS_BANNER/2,THICKNESS_BANNER*2}, +		.world_space = false, +		}); + +	// Middle_Mid +	floatingwindow.add_component<Sprite>( +		Asset("asset/ui/settings_container/middle_mid_setting.png"), +		Sprite::Data{ +		.sorting_in_layer = STARTING_SORTING_IN_LAYER+7, +		.size = {SIZE.x*MIDDLE_OFFSET_FACTOR_OFFSET*MIDDLE_OFFSET_FACTOR_MIDDLE_WIDTH+data.width_middle_offset,SIZE.y}, +		.position_offset = POSITION_CORRECTION + vec2{0,THICKNESS_BANNER*3+SIZE.y/2-THICKNESS_BANNER/2}, +		.world_space = false, +		}); + +	// Middle_Left +	floatingwindow.add_component<Sprite>( +		Asset("asset/ui/settings_container/middle_left_setting.png"), +		Sprite::Data{ +		.sorting_in_layer = STARTING_SORTING_IN_LAYER+8, +		.size = {THICKNESS_BANNER*MIDDLE_OFFSET_FACTOR_TICKNESS,SIZE.y}, +		.position_offset = POSITION_CORRECTION + vec2{-SIZE.x/2-THICKNESS_BANNER/2*MIDDLE_OFFSET_FACTOR_OFFSET-MIDDLE_OFFSET_OFFSET_ADDITION,THICKNESS_BANNER*3+SIZE.y/2-THICKNESS_BANNER/2}, +		.world_space = false, +		}); + +	// Middle_Right +	floatingwindow.add_component<Sprite>( +		Asset("asset/ui/settings_container/middle_right_setting.png"), +		Sprite::Data{ +		.sorting_in_layer = STARTING_SORTING_IN_LAYER+8, +		.size = {THICKNESS_BANNER*MIDDLE_OFFSET_FACTOR_TICKNESS,SIZE.y}, +		.position_offset = POSITION_CORRECTION + vec2{SIZE.x/2+THICKNESS_BANNER/2*MIDDLE_OFFSET_FACTOR_OFFSET+MIDDLE_OFFSET_OFFSET_ADDITION,THICKNESS_BANNER*3+SIZE.y/2-THICKNESS_BANNER/2}, +		.world_space = false, +		}); + +	// Bot_Middle +	floatingwindow.add_component<Sprite>( +		Asset("asset/ui/settings_container/bot_middle_setting.png"), +		Sprite::Data{ +		.sorting_in_layer = STARTING_SORTING_IN_LAYER+7, +		.size = {SIZE.x*MIDDLE_OFFSET_FACTOR_OFFSET*MIDDLE_OFFSET_FACTOR_MIDDLE_WIDTH+data.width_middle_offset,THICKNESS_BANNER*MIDDLE_OFFSET_FACTOR_TICKNESS}, +		.position_offset = POSITION_CORRECTION + vec2{0,THICKNESS_BANNER*3+SIZE.y+BOTTOM_OFFSET_Y}, +		.world_space = false, +		}); + +	// Bot_Left +	floatingwindow.add_component<Sprite>( +		Asset("asset/ui/settings_container/bot_left_setting.png"), +		Sprite::Data{ +		.sorting_in_layer = STARTING_SORTING_IN_LAYER+8, +		.size = {THICKNESS_BANNER*MIDDLE_OFFSET_FACTOR_TICKNESS,THICKNESS_BANNER*MIDDLE_OFFSET_FACTOR_TICKNESS}, +		.position_offset = POSITION_CORRECTION + vec2{-SIZE.x/2-THICKNESS_BANNER/2-BOTTOM_OFFSET_X,THICKNESS_BANNER*3+SIZE.y+BOTTOM_OFFSET_Y}, +		.world_space = false, +		}); + +	// Bot_Right +	floatingwindow.add_component<Sprite>( +		Asset("asset/ui/settings_container/bot_right_setting.png"), +		Sprite::Data{ +		.sorting_in_layer = STARTING_SORTING_IN_LAYER+8, +		.size = {THICKNESS_BANNER*MIDDLE_OFFSET_FACTOR_TICKNESS,THICKNESS_BANNER*MIDDLE_OFFSET_FACTOR_TICKNESS}, +		.position_offset = POSITION_CORRECTION + vec2{SIZE.x/2+THICKNESS_BANNER/2+BOTTOM_OFFSET_X,THICKNESS_BANNER*3+SIZE.y+BOTTOM_OFFSET_Y}, +		.world_space = false, +		}); +} + + diff --git a/game/menus/FloatingWindowSubScene.h b/game/menus/FloatingWindowSubScene.h new file mode 100644 index 0000000..a0bd854 --- /dev/null +++ b/game/menus/FloatingWindowSubScene.h @@ -0,0 +1,16 @@ +#pragma once + +#include "types.h" +#include <crepe/api/Scene.h> + +class FloatingWindowSubScene  { +public: +	struct Data{ +		const std::string group_tag = ""; +		float width = 200; +		crepe::vec2 offset = {0,0}; +		float width_middle_offset = 0; +	}; +public: +	void create(crepe::Scene & scn,const Data & data); +}; diff --git a/game/menus/MenusConfig.h b/game/menus/MenusConfig.h index ffcbc34..9e0c99b 100644 --- a/game/menus/MenusConfig.h +++ b/game/menus/MenusConfig.h @@ -2,7 +2,7 @@  #include <crepe/types.h>  //generic menu config -static constexpr unsigned int STARTING_SORTING_IN_LAYER = 7; +static constexpr int STARTING_SORTING_IN_LAYER = 7;  static constexpr const char* CAMERA_NAME = "camera";  //Scene names  static constexpr const char* START_SCENE = "scene1"; diff --git a/game/menus/endgame/EndGameSubScene.cpp b/game/menus/endgame/EndGameSubScene.cpp index 029bf1c..8d785ed 100644 --- a/game/menus/endgame/EndGameSubScene.cpp +++ b/game/menus/endgame/EndGameSubScene.cpp @@ -1,163 +1,62 @@  #include "EndGameSubScene.h" - -#include "../MenusConfig.h" +#include "../FloatingWindowSubScene.h" +#include "../ButtonSubScene.h" +#include <crepe/api/Text.h> +#include <string> +#include <crepe/api/GameObject.h> +#include "types.h"  #include "../../Config.h" -#include "api/GameObject.h" -#include "api/Scene.h" -#include "api/Sprite.h" - -#include <crepe/api/Camera.h>  using namespace crepe;  using namespace std;  void EndGameSubScene::create(Scene & scn){ -	const vec2 SIZE = {200,100}; -	const float THICKNESS_BANNER = 34; -	const float MIDDLE_OFFSET_FACTOR_TICKNESS = 0.83; -	const float MIDDLE_OFFSET_FACTOR_OFFSET = 1.2; -	const float MIDDLE_OFFSET_TICKNESS_ADDITION = -8; -	const float MIDDLE_OFFSET_OFFSET_ADDITION = -0.5; -	const float BOTTOM_OFFSET_X = 3; -	const float BOTTOM_OFFSET_Y = -5; - -	GameObject endgame = scn.new_object("EndGameSubScene"); - -	// Top_middle -	endgame.add_component<Sprite>( -		Asset("asset/ui/settings_container/top_middle_setting.png"), -		Sprite::Data{ -		.sorting_in_layer = STARTING_SORTING_IN_LAYER+8, -		.size = {SIZE.x,THICKNESS_BANNER}, -		.position_offset = {0,0}, -		}); - -	// Top_Left -	endgame.add_component<Sprite>( -		Asset("asset/ui/settings_container/top_left_setting.png"), -		Sprite::Data{ -		.sorting_in_layer = STARTING_SORTING_IN_LAYER+8, -		.size = {THICKNESS_BANNER,THICKNESS_BANNER}, -		.position_offset = {-SIZE.x/2-THICKNESS_BANNER/2,0}, -		}); - -	// Top_Right -	endgame.add_component<Sprite>( -		Asset("asset/ui/settings_container/top_right_setting.png"), -		Sprite::Data{ -		.sorting_in_layer = STARTING_SORTING_IN_LAYER+8, -		.size = {THICKNESS_BANNER,THICKNESS_BANNER}, -		.position_offset = {SIZE.x/2+THICKNESS_BANNER/2,0}, -		}); - -	// Top_middle_2 -	endgame.add_component<Sprite>( -		Asset("asset/ui/settings_container/top_2_middle_setting.png"), -		Sprite::Data{ -		.sorting_in_layer = STARTING_SORTING_IN_LAYER+8, -		.size = {SIZE.x,THICKNESS_BANNER}, -		.position_offset = {0,THICKNESS_BANNER}, -		}); - -	// Top_Left_2 -	endgame.add_component<Sprite>( -		Asset("asset/ui/settings_container/top_2_left_setting.png"), -		Sprite::Data{ -		.sorting_in_layer = STARTING_SORTING_IN_LAYER+8, -		.size = {THICKNESS_BANNER,THICKNESS_BANNER}, -		.position_offset = {-SIZE.x/2-THICKNESS_BANNER/2,THICKNESS_BANNER}, -		}); - -	// Top_Right_2 -	endgame.add_component<Sprite>( -		Asset("asset/ui/settings_container/top_2_right_setting.png"), -		Sprite::Data{ -		.sorting_in_layer = STARTING_SORTING_IN_LAYER+8, -		.size = {THICKNESS_BANNER,THICKNESS_BANNER}, -		.position_offset = {SIZE.x/2+THICKNESS_BANNER/2,THICKNESS_BANNER}, -		}); - -	// Top_middle_3 -	endgame.add_component<Sprite>( -		Asset("asset/ui/settings_container/top_3_middle_setting.png"), -		Sprite::Data{ -		.sorting_in_layer = STARTING_SORTING_IN_LAYER+8, -		.size = {SIZE.x,THICKNESS_BANNER}, -		.position_offset = {0,THICKNESS_BANNER*2}, -		}); - -	// Top_Left_3 -	endgame.add_component<Sprite>( -		Asset("asset/ui/settings_container/top_3_left_setting.png"), -		Sprite::Data{ -		.sorting_in_layer = STARTING_SORTING_IN_LAYER+8, -		.size = {THICKNESS_BANNER,THICKNESS_BANNER}, -		.position_offset = {-SIZE.x/2-THICKNESS_BANNER/2,THICKNESS_BANNER*2}, -		}); - -	// Top_Right_3 -	endgame.add_component<Sprite>( -		Asset("asset/ui/settings_container/top_3_right_setting.png"), -		Sprite::Data{ -		.sorting_in_layer = STARTING_SORTING_IN_LAYER+8, -		.size = {THICKNESS_BANNER,THICKNESS_BANNER}, -		.position_offset = {SIZE.x/2+THICKNESS_BANNER/2,THICKNESS_BANNER*2}, -		}); - -	// Middle_Mid -	endgame.add_component<Sprite>( -		Asset("asset/ui/settings_container/middle_mid_setting.png"), -		Sprite::Data{ -		.sorting_in_layer = STARTING_SORTING_IN_LAYER+7, -		.size = {SIZE.x*MIDDLE_OFFSET_FACTOR_OFFSET+MIDDLE_OFFSET_TICKNESS_ADDITION,SIZE.y}, -		.position_offset = {0,THICKNESS_BANNER*3+SIZE.y/2-THICKNESS_BANNER/2}, -		}); - -	// Middle_Left -	endgame.add_component<Sprite>( -		Asset("asset/ui/settings_container/middle_left_setting.png"), -		Sprite::Data{ -		.sorting_in_layer = STARTING_SORTING_IN_LAYER+8, -		.size = {THICKNESS_BANNER*MIDDLE_OFFSET_FACTOR_TICKNESS,SIZE.y}, -		.position_offset = {-SIZE.x/2-THICKNESS_BANNER/2*MIDDLE_OFFSET_FACTOR_OFFSET-MIDDLE_OFFSET_OFFSET_ADDITION,THICKNESS_BANNER*3+SIZE.y/2-THICKNESS_BANNER/2}, -		}); - -	// Middle_Right -	endgame.add_component<Sprite>( -		Asset("asset/ui/settings_container/middle_right_setting.png"), -		Sprite::Data{ -		.sorting_in_layer = STARTING_SORTING_IN_LAYER+8, -		.size = {THICKNESS_BANNER*MIDDLE_OFFSET_FACTOR_TICKNESS,SIZE.y}, -		.position_offset = {SIZE.x/2+THICKNESS_BANNER/2*MIDDLE_OFFSET_FACTOR_OFFSET+MIDDLE_OFFSET_OFFSET_ADDITION,THICKNESS_BANNER*3+SIZE.y/2-THICKNESS_BANNER/2}, -		}); - -	// Bot_Middle -	endgame.add_component<Sprite>( -		Asset("asset/ui/settings_container/bot_middle_setting.png"), -		Sprite::Data{ -		.sorting_in_layer = STARTING_SORTING_IN_LAYER+7, -		.size = {SIZE.x*MIDDLE_OFFSET_FACTOR_OFFSET+MIDDLE_OFFSET_TICKNESS_ADDITION,THICKNESS_BANNER*MIDDLE_OFFSET_FACTOR_TICKNESS}, -		.position_offset = {0,THICKNESS_BANNER*3+SIZE.y-5}, -		}); -	// Bot_Left -	endgame.add_component<Sprite>( -		Asset("asset/ui/settings_container/bot_left_setting.png"), -		Sprite::Data{ -		.sorting_in_layer = STARTING_SORTING_IN_LAYER+8, -		.size = {THICKNESS_BANNER*MIDDLE_OFFSET_FACTOR_TICKNESS,THICKNESS_BANNER*MIDDLE_OFFSET_FACTOR_TICKNESS}, -		.position_offset = {-SIZE.x/2-THICKNESS_BANNER/2-BOTTOM_OFFSET_X,THICKNESS_BANNER*3+SIZE.y+BOTTOM_OFFSET_Y}, -		}); +	// Window +	FloatingWindowSubScene window; +	window.create(scn, FloatingWindowSubScene::Data{ +		.group_tag = "end_game_window", +		.width = 500, +		.offset = {0,-50}, +		.width_middle_offset = -2, +	}); + +	// Titel +	const string TITEL_STRING = "GAME OVER"; +	GameObject titel = scn.new_object("titel"); +	crepe::vec2 size = {200,(200.0f/TITEL_STRING.size())*2}; +	titel.add_component<Text>(size, FONT,Text::Data{ +		.world_space = false, +		.text_color = Color::WHITE, +	}, vec2{0,-207}+FONTOFFSET, TITEL_STRING); + + +	// Buttons +	vec2 button_position = {190,190}; +	ButtonSubScene button; +	button.create(scn,ButtonSubScene::Data{ +		.text = "NEXT", +		.text_width = 100, +		.position = button_position, +		.script_type = ButtonSubScene::ScriptSelect::MAINMENU, +		.button_type = ButtonSubScene::ButtonSelect::NEXT, +		.scale = 0.6, +		.worldspace = false, +		.sorting_layer_offset = 20, +	}); + +	button.create(scn,ButtonSubScene::Data{ +		.text = "REPLAY", +		.text_width = 150, +		.position = {-button_position.x,button_position.y}, +		.script_type = ButtonSubScene::ScriptSelect::MAINMENU, +		.button_type = ButtonSubScene::ButtonSelect::BACK, +		.scale = 0.6, +		.worldspace = false, +		.sorting_layer_offset = 20, +	}); -	// Bot_Right -	endgame.add_component<Sprite>( -		Asset("asset/ui/settings_container/bot_right_setting.png"), -		Sprite::Data{ -		.sorting_in_layer = STARTING_SORTING_IN_LAYER+8, -		.size = {THICKNESS_BANNER*MIDDLE_OFFSET_FACTOR_TICKNESS,THICKNESS_BANNER*MIDDLE_OFFSET_FACTOR_TICKNESS}, -		.position_offset = {SIZE.x/2+THICKNESS_BANNER/2+BOTTOM_OFFSET_X,THICKNESS_BANNER*3+SIZE.y+BOTTOM_OFFSET_Y}, -		});  } diff --git a/game/menus/endgame/EndGameSubScene.h b/game/menus/endgame/EndGameSubScene.h index 5c727a7..aa60a49 100644 --- a/game/menus/endgame/EndGameSubScene.h +++ b/game/menus/endgame/EndGameSubScene.h @@ -1,12 +1,9 @@  #pragma once -#include "Component.h" -#include <string> -  #include <crepe/api/Scene.h> -#include <vector>  class EndGameSubScene  { +  public: -	void create(crepe::Scene & scn);	 +	void create(crepe::Scene & scn);  };  |