diff options
| author | Loek Le Blansch <loek@pipeframe.xyz> | 2025-01-08 12:03:28 +0100 | 
|---|---|---|
| committer | Loek Le Blansch <loek@pipeframe.xyz> | 2025-01-08 12:03:28 +0100 | 
| commit | c9c9702edc58ff8f40b13dc6b86b216421f79e9b (patch) | |
| tree | 3f3e710735105cbbd63ebd4f320c88fbc0ecfa0c /game/background | |
| parent | 8055d401fc7c553a7036336b4b2fb2fca99a5986 (diff) | |
| parent | b1e2df1e75e7fc8ea4c30b7deaa54a7acf02d951 (diff) | |
Merge branch 'max/game2' of github.com:lonkaars/crepe
Diffstat (limited to 'game/background')
| -rw-r--r-- | game/background/AquariumScript.cpp | 26 | ||||
| -rw-r--r-- | game/background/AquariumScript.h | 12 | ||||
| -rw-r--r-- | game/background/AquariumSubScene.cpp | 19 | ||||
| -rw-r--r-- | game/background/BackgroundSubScene.cpp | 16 | ||||
| -rw-r--r-- | game/background/ForestParallaxScript.cpp | 26 | ||||
| -rw-r--r-- | game/background/ForestParallaxScript.h | 6 | ||||
| -rw-r--r-- | game/background/ForestSubScene.cpp | 12 | ||||
| -rw-r--r-- | game/background/HallwayScript.cpp | 70 | ||||
| -rw-r--r-- | game/background/HallwayScript.h | 13 | ||||
| -rw-r--r-- | game/background/HallwaySubScene.cpp | 16 | 
10 files changed, 186 insertions, 30 deletions
| diff --git a/game/background/AquariumScript.cpp b/game/background/AquariumScript.cpp new file mode 100644 index 0000000..e698e3a --- /dev/null +++ b/game/background/AquariumScript.cpp @@ -0,0 +1,26 @@ +#include "AquariumScript.h" + +#include "../Config.h" + +#include <crepe/api/Animator.h> +#include <crepe/api/Sprite.h> +#include <crepe/api/Transform.h> +#include <crepe/types.h> + +using namespace crepe; +using namespace std; + +void AquariumScript::fixed_update(crepe::duration_t dt) { +	Transform & trans_cam = this->get_components_by_name<Transform>("camera").front(); + +	float cam_left_x = trans_cam.position.x - VIEWPORT_X / 2; + +	if (cam_left_x > this->start_x + this->lenght) { +		//Move whole background 12000 to the right +		RefVector<Transform> trans = this->get_components_by_tag<Transform>("background_aqua"); +		for (Transform & tran : trans) { +			tran.position.x += 12000; +		} +		this->start_x += 12000; +	} +} diff --git a/game/background/AquariumScript.h b/game/background/AquariumScript.h new file mode 100644 index 0000000..b068628 --- /dev/null +++ b/game/background/AquariumScript.h @@ -0,0 +1,12 @@ +#pragma once + +#include <crepe/api/Script.h> + +class AquariumScript : public crepe::Script { +public: +	void fixed_update(crepe::duration_t dt); + +private: +	float start_x = 10200; +	const float lenght = 3000; +}; diff --git a/game/background/AquariumSubScene.cpp b/game/background/AquariumSubScene.cpp index 8d5202a..99466e3 100644 --- a/game/background/AquariumSubScene.cpp +++ b/game/background/AquariumSubScene.cpp @@ -15,7 +15,7 @@ float AquariumSubScene::create(Scene & scn, float begin_x) {  	this->add_background(scn, begin_x);  	GameObject aquarium_begin -		= scn.new_object("aquarium_begin", "background", vec2(begin_x, 0)); +		= scn.new_object("aquarium_begin", "background_aqua", vec2(begin_x, 0));  	Asset aquarium_begin_asset {"asset/background/aquarium/glassTubeFG_1_TVOS.png"};  	aquarium_begin.add_component<Sprite>(  		aquarium_begin_asset, @@ -28,7 +28,7 @@ float AquariumSubScene::create(Scene & scn, float begin_x) {  	begin_x += 600;  	GameObject aquarium_middle_1 -		= scn.new_object("aquarium_middle", "background", vec2(begin_x, 0)); +		= scn.new_object("aquarium_middle", "background_aqua", vec2(begin_x, 0));  	Asset aquarium_middle_1_asset {"asset/background/aquarium/glassTubeFG_3_TVOS.png"};  	aquarium_middle_1.add_component<Sprite>(  		aquarium_middle_1_asset, @@ -43,7 +43,7 @@ float AquariumSubScene::create(Scene & scn, float begin_x) {  	this->add_background(scn, begin_x - 200);  	GameObject aquarium_middle_2 -		= scn.new_object("aquarium_middle", "background", vec2(begin_x, 0)); +		= scn.new_object("aquarium_middle", "background_aqua", vec2(begin_x, 0));  	Asset aquarium_middle_2_asset {"asset/background/aquarium/glassTubeFG_3_TVOS.png"};  	aquarium_middle_2.add_component<Sprite>(  		aquarium_middle_2_asset, @@ -56,7 +56,7 @@ float AquariumSubScene::create(Scene & scn, float begin_x) {  	begin_x += 400;  	GameObject aquarium_middle_3 -		= scn.new_object("aquarium_middle", "background", vec2(begin_x, 0)); +		= scn.new_object("aquarium_middle", "background_aqua", vec2(begin_x, 0));  	Asset aquarium_middle_3_asset {"asset/background/aquarium/glassTubeFG_3_TVOS.png"};  	aquarium_middle_3.add_component<Sprite>(  		aquarium_middle_3_asset, @@ -71,7 +71,7 @@ float AquariumSubScene::create(Scene & scn, float begin_x) {  	this->add_background(scn, begin_x - 200);  	GameObject aquarium_middle_4 -		= scn.new_object("aquarium_middle", "background", vec2(begin_x, 0)); +		= scn.new_object("aquarium_middle", "background_aqua", vec2(begin_x, 0));  	Asset aquarium_middle_4_asset {"asset/background/aquarium/glassTubeFG_3_TVOS.png"};  	aquarium_middle_4.add_component<Sprite>(  		aquarium_middle_4_asset, @@ -85,7 +85,8 @@ float AquariumSubScene::create(Scene & scn, float begin_x) {  	this->add_background(scn, begin_x); -	GameObject aquarium_end = scn.new_object("aquarium_end", "background", vec2(begin_x, 0)); +	GameObject aquarium_end +		= scn.new_object("aquarium_end", "background_aqua", vec2(begin_x, 0));  	Asset aquarium_end_asset {"asset/background/aquarium/glassTubeFG_2_TVOS.png"};  	aquarium_end.add_component<Sprite>(  		aquarium_end_asset, @@ -101,7 +102,7 @@ float AquariumSubScene::create(Scene & scn, float begin_x) {  }  void AquariumSubScene::add_background(Scene & scn, float begin_x) { -	GameObject bg_1 = scn.new_object("aquarium_bg_1", "aquarium_background", vec2(begin_x, 0)); +	GameObject bg_1 = scn.new_object("aquarium_bg_1", "background_aqua", vec2(begin_x, 0));  	Asset bg_1_1_asset {"asset/background/aquarium/AquariumBG1_1_TVOS.png"};  	bg_1.add_component<Sprite>(  		bg_1_1_asset, @@ -122,7 +123,7 @@ void AquariumSubScene::add_background(Scene & scn, float begin_x) {  			.position_offset = vec2(200, 100),  		}  	); -	GameObject bg_2 = scn.new_object("aquarium_bg_2", "aquarium_background", vec2(begin_x, 0)); +	GameObject bg_2 = scn.new_object("aquarium_bg_2", "background_aqua", vec2(begin_x, 0));  	Asset bg_2_1_asset {"asset/background/aquarium/AquariumBG2_1_TVOS.png"};  	bg_2.add_component<Sprite>(  		bg_2_1_asset, @@ -143,7 +144,7 @@ void AquariumSubScene::add_background(Scene & scn, float begin_x) {  			.position_offset = vec2(-200, -50),  		}  	); -	GameObject bg_3 = scn.new_object("aquarium_bg_3", "aquarium_background", vec2(begin_x, 0)); +	GameObject bg_3 = scn.new_object("aquarium_bg_3", "background_aqua", vec2(begin_x, 0));  	Asset bg_3_1_asset {"asset/background/aquarium/AquariumBG3_1_TVOS.png"};  	bg_3.add_component<Sprite>(  		bg_3_1_asset, diff --git a/game/background/BackgroundSubScene.cpp b/game/background/BackgroundSubScene.cpp index 6fdc598..4bbd977 100644 --- a/game/background/BackgroundSubScene.cpp +++ b/game/background/BackgroundSubScene.cpp @@ -1,10 +1,14 @@  #include "BackgroundSubScene.h" +#include "AquariumScript.h"  #include "AquariumSubScene.h"  #include "ForestSubScene.h" +#include "HallwayScript.h"  #include "HallwaySubScene.h"  #include "StartSubScene.h" +#include <crepe/api/BehaviorScript.h>  #include <crepe/api/Color.h> +#include <crepe/api/Scene.h>  using namespace crepe;  using namespace std; @@ -23,15 +27,11 @@ BackgroundSubScene::BackgroundSubScene(Scene & scn) {  	begin_x = forest.create(scn, begin_x, "1"); -	begin_x = hallway.create(scn, begin_x, 2, Color::MAGENTA); +	begin_x += 3000;  	begin_x = aquarium.create(scn, begin_x); -	begin_x = hallway.create(scn, begin_x, 3, Color::CYAN); - -	begin_x = forest.create(scn, begin_x, "2"); - -	begin_x = hallway.create(scn, begin_x, 4, Color::GREEN); - -	begin_x = aquarium.create(scn, begin_x); +	GameObject scripts = scn.new_object("scrips_background", "background"); +	scripts.add_component<BehaviorScript>().set_script<HallwayScript>(); +	scripts.add_component<BehaviorScript>().set_script<AquariumScript>();  } diff --git a/game/background/ForestParallaxScript.cpp b/game/background/ForestParallaxScript.cpp index c72f85d..7470da2 100644 --- a/game/background/ForestParallaxScript.cpp +++ b/game/background/ForestParallaxScript.cpp @@ -1,5 +1,7 @@  #include "ForestParallaxScript.h" +#include "../Config.h" +  using namespace crepe;  using namespace std; @@ -26,4 +28,28 @@ void ForestParallaxScript::fixed_update(crepe::duration_t dt) {  			t.position.x = begin_x - 400;  		}  	} + +	//Move whole background 12000 to the right +	Transform & trans_cam = this->get_components_by_name<Transform>("camera").front(); + +	float cam_left_x = trans_cam.position.x - VIEWPORT_X / 2; + +	if (cam_left_x > this->start_x + this->lenght) { +		//Move whole background 12000 to the right +		RefVector<Transform> trans +			= this->get_components_by_tag<Transform>("background_forest"); +		for (Transform & tran : trans) { +			tran.position.x += 12000; +		} +		this->start_x += 12000; + +		RefVector<Transform> trans_back +			= this->get_components_by_tag<Transform>("forest_background"); +		for (Transform & tran : trans_back) { +			tran.position.x += 12000; +		} + +		begin_x += 12000; +		end_x += 12000; +	}  } diff --git a/game/background/ForestParallaxScript.h b/game/background/ForestParallaxScript.h index a65a684..d45fdd9 100644 --- a/game/background/ForestParallaxScript.h +++ b/game/background/ForestParallaxScript.h @@ -9,7 +9,9 @@ public:  	void fixed_update(crepe::duration_t dt);  private: -	const float begin_x; -	const float end_x; +	float begin_x; +	float end_x;  	const std::string name; +	float start_x = 4200; +	const float lenght = 3000;  }; diff --git a/game/background/ForestSubScene.cpp b/game/background/ForestSubScene.cpp index a807a36..83e48dd 100644 --- a/game/background/ForestSubScene.cpp +++ b/game/background/ForestSubScene.cpp @@ -15,14 +15,14 @@ using namespace crepe;  using namespace std;  float ForestSubScene::create(Scene & scn, float begin_x, std::string unique_bg_name) { -	GameObject script = scn.new_object("forest_script", "background"); +	GameObject script = scn.new_object("forest_script", "background_forest");  	script.add_component<BehaviorScript>().set_script<ForestParallaxScript>(  		begin_x - 400, begin_x + 3000 + 400, unique_bg_name  	);  	this->add_background(scn, begin_x, unique_bg_name); -	GameObject begin = scn.new_object("forest_begin", "background", vec2(begin_x, 0)); +	GameObject begin = scn.new_object("forest_begin", "background_forest", vec2(begin_x, 0));  	Asset begin_asset {"asset/background/forest/forestFG_1_TVOS.png"};  	begin.add_component<Sprite>(  		begin_asset, @@ -36,7 +36,8 @@ float ForestSubScene::create(Scene & scn, float begin_x, std::string unique_bg_n  	this->add_background(scn, begin_x, unique_bg_name); -	GameObject middle_1 = scn.new_object("forest_middle", "background", vec2(begin_x, 0)); +	GameObject middle_1 +		= scn.new_object("forest_middle", "background_forest", vec2(begin_x, 0));  	Asset middle_1_asset {"asset/background/forest/forestFG_3_TVOS.png"};  	middle_1.add_component<Sprite>(  		middle_1_asset, @@ -50,7 +51,8 @@ float ForestSubScene::create(Scene & scn, float begin_x, std::string unique_bg_n  	this->add_background(scn, begin_x, unique_bg_name); -	GameObject middle_2 = scn.new_object("forest_middle", "background", vec2(begin_x, 0)); +	GameObject middle_2 +		= scn.new_object("forest_middle", "background_forest", vec2(begin_x, 0));  	Asset middle_2_asset {"asset/background/forest/forestFG_3_TVOS.png"};  	middle_2.add_component<Sprite>(  		middle_2_asset, @@ -64,7 +66,7 @@ float ForestSubScene::create(Scene & scn, float begin_x, std::string unique_bg_n  	this->add_background(scn, begin_x, unique_bg_name); -	GameObject end = scn.new_object("forest_end", "background", vec2(begin_x, 0)); +	GameObject end = scn.new_object("forest_end", "background_forest", vec2(begin_x, 0));  	Asset end_asset {"asset/background/forest/forestFG_2_TVOS.png"};  	end.add_component<Sprite>(  		end_asset, diff --git a/game/background/HallwayScript.cpp b/game/background/HallwayScript.cpp new file mode 100644 index 0000000..a5bb94c --- /dev/null +++ b/game/background/HallwayScript.cpp @@ -0,0 +1,70 @@ +#include "HallwayScript.h" + +#include "../Config.h" + +#include <crepe/api/Animator.h> +#include <crepe/api/Sprite.h> +#include <crepe/api/Transform.h> +#include <crepe/types.h> + +using namespace crepe; +using namespace std; + +void HallwayScript::fixed_update(crepe::duration_t dt) { +	Transform & trans_cam = this->get_components_by_name<Transform>("camera").front(); + +	float cam_left_x = trans_cam.position.x - VIEWPORT_X / 2; + +	if (cam_left_x > this->start_x + this->lenght) { +		//Move whole background 6000 to the right +		RefVector<Transform> trans = this->get_components_by_tag<Transform>("background_hall"); +		for (Transform & tran : trans) { +			tran.position.x += 6000; +		} +		this->start_x += 6000; + +		//Change sector number +		Animator & anim = this->get_components_by_name<Animator>("hallway_begin").front(); +		int column = (current_sector - 1) / 4; +		int row = (current_sector - 1) % 4; +		anim.set_anim(column); +		for (int i = 0; i < row; i++) { +			anim.next_anim(); +		} +		RefVector<Sprite> sprites = this->get_components_by_name<Sprite>("hallway_begin"); +		switch (current_sector % 7) { +			case 0: +				sprites[1].get().data.color = Color::YELLOW; +				sprites[2].get().data.color = Color::YELLOW; +				break; +			case 1: +				sprites[1].get().data.color = Color::MAGENTA; +				sprites[2].get().data.color = Color::MAGENTA; +				break; +			case 2: +				sprites[1].get().data.color = Color::CYAN; +				sprites[2].get().data.color = Color::CYAN; +				break; +			case 3: +				sprites[1].get().data.color = Color::GREEN; +				sprites[2].get().data.color = Color::GREEN; +				break; +			case 4: +				sprites[1].get().data.color = Color::RED; +				sprites[2].get().data.color = Color::RED; +				break; +			case 5: +				sprites[1].get().data.color = Color::BLUE; +				sprites[2].get().data.color = Color::BLUE; +				break; +			case 6: +				sprites[1].get().data.color = Color::WHITE; +				sprites[2].get().data.color = Color::WHITE; +				break; +		} +		current_sector++; +		if (current_sector > 16) { +			current_sector = 1; +		} +	} +} diff --git a/game/background/HallwayScript.h b/game/background/HallwayScript.h new file mode 100644 index 0000000..04b2933 --- /dev/null +++ b/game/background/HallwayScript.h @@ -0,0 +1,13 @@ +#pragma once + +#include <crepe/api/Script.h> + +class HallwayScript : public crepe::Script { +public: +	void fixed_update(crepe::duration_t dt); + +private: +	float start_x = 1200; +	const float lenght = 3000; +	int current_sector = 2; +}; diff --git a/game/background/HallwaySubScene.cpp b/game/background/HallwaySubScene.cpp index 4d96c94..31af2d5 100644 --- a/game/background/HallwaySubScene.cpp +++ b/game/background/HallwaySubScene.cpp @@ -14,7 +14,7 @@ using namespace std;  float HallwaySubScene::create(  	Scene & scn, float begin_x, unsigned int sector_num, Color sector_color  ) { -	GameObject begin = scn.new_object("hallway_begin", "background", vec2(begin_x, 0)); +	GameObject begin = scn.new_object("hallway_begin", "background_hall", vec2(begin_x, 0));  	Asset begin_asset {"asset/background/hallway/hallway1FG_1_TVOS.png"};  	begin.add_component<Sprite>(  		begin_asset, @@ -30,7 +30,8 @@ float HallwaySubScene::create(  	this->add_lamp(begin, vec2(330, -120), 11);  	this->add_lamp(begin, vec2(430, -120), 9); -	GameObject middle_1 = scn.new_object("hallway_middle", "background", vec2(begin_x, 0)); +	GameObject middle_1 +		= scn.new_object("hallway_middle", "background_hall", vec2(begin_x, 0));  	Asset middle_asset {"asset/background/hallway/hallway1FG_2_TVOS.png"};  	middle_1.add_component<Sprite>(  		middle_asset, @@ -42,7 +43,8 @@ float HallwaySubScene::create(  	);  	begin_x += 600; -	GameObject middle_2 = scn.new_object("hallway_middle", "background", vec2(begin_x, 0)); +	GameObject middle_2 +		= scn.new_object("hallway_middle", "background_hall", vec2(begin_x, 0));  	Asset middle_asset_2 {"asset/background/hallway/hallway1FG_2_TVOS.png"};  	middle_2.add_component<Sprite>(  		middle_asset_2, @@ -54,7 +56,8 @@ float HallwaySubScene::create(  	);  	begin_x += 200; -	GameObject middle_3 = scn.new_object("hallway_middle", "background", vec2(begin_x, 0)); +	GameObject middle_3 +		= scn.new_object("hallway_middle", "background_hall", vec2(begin_x, 0));  	Asset middle_asset_3 {"asset/background/hallway/hallway1FG_2_TVOS.png"};  	middle_3.add_component<Sprite>(  		middle_asset_3, @@ -68,7 +71,8 @@ float HallwaySubScene::create(  	this->add_lamp(middle_3, vec2(0, -120)); -	GameObject middle_4 = scn.new_object("hallway_middle", "background", vec2(begin_x, 0)); +	GameObject middle_4 +		= scn.new_object("hallway_middle", "background_hall", vec2(begin_x, 0));  	Asset middle_asset_4 {"asset/background/hallway/hallway1FG_2_TVOS.png"};  	middle_4.add_component<Sprite>(  		middle_asset_4, @@ -80,7 +84,7 @@ float HallwaySubScene::create(  	);  	begin_x += 600; -	GameObject end = scn.new_object("hallway_end", "background", vec2(begin_x, 0)); +	GameObject end = scn.new_object("hallway_end", "background_hall", vec2(begin_x, 0));  	Asset end_asset {"asset/background/hallway/hallway1FG_1_TVOS.png"};  	end.add_component<Sprite>(  		end_asset, |