diff options
| author | JAROWMR <jarorutjes07@gmail.com> | 2025-01-07 11:20:58 +0100 | 
|---|---|---|
| committer | JAROWMR <jarorutjes07@gmail.com> | 2025-01-07 11:20:58 +0100 | 
| commit | fcae8934916c9f429e58c8e178ab14fcf65a2bbc (patch) | |
| tree | 34cddb9fad2c8639dfed3ffbb3216be9ac5e8b52 /game/menus | |
| parent | 126c402548281f3a97e3a9e0ef60c45147c87fa0 (diff) | |
added end game
Diffstat (limited to 'game/menus')
| -rw-r--r-- | game/menus/IFloatingWindowScript.cpp | 23 | ||||
| -rw-r--r-- | game/menus/IFloatingWindowScript.h | 15 | ||||
| -rw-r--r-- | game/menus/endgame/EndGameSubScene.cpp | 14 | ||||
| -rw-r--r-- | game/menus/endgame/EndGameSubScript.cpp | 51 | ||||
| -rw-r--r-- | game/menus/endgame/EndGameSubScript.h | 16 | ||||
| -rw-r--r-- | game/menus/mainmenu/MainMenuScene.cpp | 3 | 
6 files changed, 116 insertions, 6 deletions
diff --git a/game/menus/IFloatingWindowScript.cpp b/game/menus/IFloatingWindowScript.cpp new file mode 100644 index 0000000..ce84de7 --- /dev/null +++ b/game/menus/IFloatingWindowScript.cpp @@ -0,0 +1,23 @@ +#include "IFloatingWindowScript.h" +#include "api/Sprite.h" +#include "types.h" + +using namespace crepe; + +void IFloatingWindowScript::init(){ + this->disable_all_sprites(); +} + +void IFloatingWindowScript::disable_all_sprites(){ +	RefVector<Sprite> sprites = this->get_components_by_tag<Sprite>(this->tag); +	for(Sprite & sprite : sprites){ +		sprite.active = false; +	} +} + +void IFloatingWindowScript::enable_all_sprites(){ +	RefVector<Sprite> sprites = this->get_components_by_tag<Sprite>(this->tag); +	for(Sprite & sprite : sprites){ +		sprite.active = true; +	} +} diff --git a/game/menus/IFloatingWindowScript.h b/game/menus/IFloatingWindowScript.h new file mode 100644 index 0000000..9775726 --- /dev/null +++ b/game/menus/IFloatingWindowScript.h @@ -0,0 +1,15 @@ +#pragma once + +#include <crepe/api/Script.h> +#include <string> + +class IFloatingWindowScript : public virtual crepe::Script { +public: +	virtual void init(); +	void disable_all_sprites(); +	void enable_all_sprites(); +protected: +	std::string tag = ""; +}; + + diff --git a/game/menus/endgame/EndGameSubScene.cpp b/game/menus/endgame/EndGameSubScene.cpp index 8d785ed..41556af 100644 --- a/game/menus/endgame/EndGameSubScene.cpp +++ b/game/menus/endgame/EndGameSubScene.cpp @@ -5,6 +5,8 @@  #include <crepe/api/Text.h>  #include <string>  #include <crepe/api/GameObject.h> +#include <crepe/api/BehaviorScript.h> +#include "EndGameSubScript.h"  #include "types.h"  #include "../../Config.h" @@ -13,10 +15,14 @@ using namespace std;  void EndGameSubScene::create(Scene & scn){ +	const std::string TAG = "end_game_tag"; +	GameObject script = scn.new_object("script"); +	script.add_component<BehaviorScript>().set_script<EndGameSubScript>(TAG); +  	// Window  	FloatingWindowSubScene window;  	window.create(scn, FloatingWindowSubScene::Data{ -		.group_tag = "end_game_window", +		.group_tag = TAG,  		.width = 500,  		.offset = {0,-50},  		.width_middle_offset = -2, @@ -24,7 +30,7 @@ void EndGameSubScene::create(Scene & scn){  	// Titel  	const string TITEL_STRING = "GAME OVER"; -	GameObject titel = scn.new_object("titel"); +	GameObject titel = scn.new_object("titel",TAG);  	crepe::vec2 size = {200,(200.0f/TITEL_STRING.size())*2};  	titel.add_component<Text>(size, FONT,Text::Data{  		.world_space = false, @@ -43,6 +49,7 @@ void EndGameSubScene::create(Scene & scn){  		.button_type = ButtonSubScene::ButtonSelect::NEXT,  		.scale = 0.6,  		.worldspace = false, +		.tag = TAG,  		.sorting_layer_offset = 20,  	}); @@ -50,10 +57,11 @@ void EndGameSubScene::create(Scene & scn){  		.text = "REPLAY",  		.text_width = 150,  		.position = {-button_position.x,button_position.y}, -		.script_type = ButtonSubScene::ScriptSelect::MAINMENU, +		// .script_type = ButtonSubScene::ScriptSelect::MAINMENU,  		.button_type = ButtonSubScene::ButtonSelect::BACK,  		.scale = 0.6,  		.worldspace = false, +		.tag = TAG,  		.sorting_layer_offset = 20,  	}); diff --git a/game/menus/endgame/EndGameSubScript.cpp b/game/menus/endgame/EndGameSubScript.cpp new file mode 100644 index 0000000..2be6931 --- /dev/null +++ b/game/menus/endgame/EndGameSubScript.cpp @@ -0,0 +1,51 @@ +#include "EndGameSubScript.h" +#include "../IFloatingWindowScript.h" +#include "api/Button.h" +#include "api/Sprite.h" +#include "api/Text.h" +#include "types.h" +#include "../../Events.h" +#include <string> + +using namespace crepe; + +EndGameSubScript::EndGameSubScript(const std::string & tag){ +	this->tag = tag; +} + +void EndGameSubScript::init(){ +	this->disable_all(); +	this->subscribe<EndGameEvent>([this](const EndGameEvent e) { return this->enable_all(); }); +	this->subscribe<EndGameEvent>([this](const EndGameEvent e) { return this->reset_timescale(); }); +} + +bool EndGameSubScript::disable_all(){ +	IFloatingWindowScript::disable_all_sprites(); +	RefVector<Button> buttons = this->get_components_by_tag<Button>(this->tag); +	for(Button & button : buttons){ +		button.active = false; +	} +	RefVector<Text> texts = this->get_components_by_tag<Text>(this->tag); +	for(Text & text : texts){ +		text.active = false; +	} +	return false; +} + +bool EndGameSubScript::enable_all(){ +	IFloatingWindowScript::enable_all_sprites(); +	RefVector<Button> buttons = this->get_components_by_tag<Button>(this->tag); +	for(Button & button : buttons){ +		button.active = true; +	} +	RefVector<Text> texts = this->get_components_by_tag<Text>(this->tag); +	for(Text & text : texts){ +		text.active = true; +	} +	return false; +} + +bool EndGameSubScript::reset_timescale(){ +	this->get_loop_timer().set_time_scale(1); +	return false; +} diff --git a/game/menus/endgame/EndGameSubScript.h b/game/menus/endgame/EndGameSubScript.h new file mode 100644 index 0000000..2ce3ec7 --- /dev/null +++ b/game/menus/endgame/EndGameSubScript.h @@ -0,0 +1,16 @@ +#pragma once + +#include "../IFloatingWindowScript.h" +#include "api/Event.h" +#include <crepe/api/Script.h> + +class EndGameSubScript : public IFloatingWindowScript { +public: +	EndGameSubScript(const std::string & tag); + 	void init() override; +	bool disable_all(); +	bool enable_all(); +	bool reset_timescale(); +}; + + diff --git a/game/menus/mainmenu/MainMenuScene.cpp b/game/menus/mainmenu/MainMenuScene.cpp index a515b45..15cf6d5 100644 --- a/game/menus/mainmenu/MainMenuScene.cpp +++ b/game/menus/mainmenu/MainMenuScene.cpp @@ -98,9 +98,6 @@ void MainMenuScene::load_scene(){  		.color_side = false,  		.tag = MENU_INFO_TAG,  	}); -	 -	EndGameSubScene test; -	test.create(*this);  }  |