diff options
Diffstat (limited to 'src/example')
| -rw-r--r-- | src/example/AITest.cpp | 86 | ||||
| -rw-r--r-- | src/example/CMakeLists.txt | 1 | ||||
| -rw-r--r-- | src/example/game.cpp | 4 | 
3 files changed, 91 insertions, 0 deletions
diff --git a/src/example/AITest.cpp b/src/example/AITest.cpp new file mode 100644 index 0000000..28537ed --- /dev/null +++ b/src/example/AITest.cpp @@ -0,0 +1,86 @@ +#include <crepe/api/AI.h> +#include <crepe/api/BehaviorScript.h> +#include <crepe/api/Camera.h> +#include <crepe/api/Color.h> +#include <crepe/api/GameObject.h> +#include <crepe/api/LoopManager.h> +#include <crepe/api/Rigidbody.h> +#include <crepe/api/Scene.h> +#include <crepe/api/Script.h> +#include <crepe/api/Sprite.h> +#include <crepe/api/Texture.h> +#include <crepe/manager/Mediator.h> +#include <crepe/types.h> + +using namespace crepe; +using namespace std; + +class Script1 : public Script { +	bool shutdown(const ShutDownEvent & event) { +		// Very dirty way of shutting down the game +		throw "ShutDownEvent"; +		return true; +	} + +	bool mousemove(const MouseMoveEvent & event) { +		/*RefVector<AI> aivec = this->get_components<AI>(); +		AI & ai = aivec.front().get(); +		ai.flee_target +			= vec2{static_cast<float>(event.mouse_x), static_cast<float>(event.mouse_y)};*/ +		return true; +	} + +	void init() { +		subscribe<ShutDownEvent>( +			[this](const ShutDownEvent & ev) -> bool { return this->shutdown(ev); }); +		subscribe<MouseMoveEvent>( +			[this](const MouseMoveEvent & ev) -> bool { return this->mousemove(ev); }); +	} +}; + +class Scene1 : public Scene { +public: +	void load_scene() override { +		Mediator & mediator = this->mediator; +		ComponentManager & mgr = mediator.component_manager; + +		GameObject game_object1 = mgr.new_object("", "", vec2{0, 0}, 0, 1); +		GameObject game_object2 = mgr.new_object("", "", vec2{0, 0}, 0, 1); + +		Texture img = Texture("asset/texture/test_ap43.png"); +		game_object1.add_component<Sprite>(img, Sprite::Data{ +													.color = Color::MAGENTA, +													.flip = Sprite::FlipSettings{false, false}, +													.sorting_in_layer = 1, +													.order_in_layer = 1, +													.size = {0, 195}, +												}); +		AI & ai = game_object1.add_component<AI>(3000); +		// ai.arrive_on(); +		// ai.flee_on(); +		ai.path_follow_on(); +		ai.make_circle_path(1000, {0, -1000}, 1.5707, true); +		ai.make_circle_path(1000, {0, 1000}, 4.7124, false); +		game_object1.add_component<Rigidbody>(Rigidbody::Data{ +			.mass = 0.1f, +			.max_linear_velocity = {40, 40}, +		}); +		game_object1.add_component<BehaviorScript>().set_script<Script1>(); + +		game_object2.add_component<Camera>(ivec2{1080, 720}, vec2{5000, 5000}, +										   Camera::Data{ +											   .bg_color = Color::WHITE, +											   .zoom = 1, +										   }); +	} + +	string get_name() const override { return "Scene1"; } +}; + +int main() { +	LoopManager engine; +	engine.add_scene<Scene1>(); +	engine.start(); + +	return 0; +} diff --git a/src/example/CMakeLists.txt b/src/example/CMakeLists.txt index 8ef71bb..149c412 100644 --- a/src/example/CMakeLists.txt +++ b/src/example/CMakeLists.txt @@ -21,3 +21,4 @@ add_example(savemgr)  add_example(rendering_particle)  add_example(game)  add_example(button) +add_example(AITest) diff --git a/src/example/game.cpp b/src/example/game.cpp index 4239c15..2b4e46f 100644 --- a/src/example/game.cpp +++ b/src/example/game.cpp @@ -66,6 +66,10 @@ class MyScript1 : public Script {  				//add collider switch  				break;  			} +			case Keycode::Q: { +				throw "Test"; +				break; +			}  			default:  				break;  		}  |