#pragma once #include "Components.hpp" #include "Entity.hpp" #include std::shared_ptr CreateProbe() { auto e = std::make_shared(); e->template AddComponent(); e->template AddComponent(); e->template AddComponent(); e->template AddComponent(); e->template AddComponent(); e->template AddComponent(); e->template AddComponent(); return e; } std::shared_ptr CreateGravityWell() { auto e = std::make_shared(); e->template AddComponent(); e->template AddComponent(); e->template AddComponent(); return e; } std::shared_ptr CreateStar(float x, float y) { auto e = std::make_shared(); auto &t = e->template AddComponent(); t.x = x; t.y = y; e->template AddComponent(); e->template AddComponent(); e->template AddComponent(); e->template AddComponent(); return e; } std::shared_ptr CreateAsteroid(float x, float y) { auto e = std::make_shared(); auto &t = e->template AddComponent(); t.x = x; t.y = y; e->template AddComponent(); e->template AddComponent(); e->template AddComponent(); return e; } std::shared_ptr CreateNullZone(float x, float width) { auto e = std::make_shared(); auto &t = e->template AddComponent(); t.x = x; (void)width; e->template AddComponent(); e->template AddComponent(); e->template AddComponent(); return e; } std::shared_ptr CreateWorld() { auto e = std::make_shared(); e->template AddComponent(); e->template AddComponent(); return e; } std::shared_ptr CreateHUD() { auto e = std::make_shared(); e->template AddComponent(); e->template AddComponent(); e->template AddComponent(); return e; }