#pragma once #include "Entity.hpp" #include #include struct TransformComponent : public Component { float x = 0.0f; float y = 0.0f; void Setup() override {} void Update(float) override {} void Cleanup() override {} }; struct PhysicsComponent : public Component { float vx = 0.0f; float vy = 0.0f; float speedCap = 400.0f; void Setup() override {} void Update(float dt) override { auto transform = entity->GetComponent(); if (!transform) { return; } const float speed = std::sqrt(vx * vx + vy * vy); if (speed > speedCap && speed > 0.0f) { const float scale = speedCap / speed; vx *= scale; vy *= scale; } transform->get().x += vx * dt; transform->get().y += vy * dt; } void Cleanup() override {} }; struct GravityWellComponent : public Component { float mass = 150000.0f; float minDist = 30.0f; bool active = false; void Setup() override {} void Update(float) override {} void Cleanup() override {} }; struct GravityReceiverComponent : public Component { Entity *well = nullptr; bool inVoid = false; void Setup() override {} void Update(float) override {} void Cleanup() override {} }; struct ColliderComponent : public Component { float radius = 8.0f; void Setup() override {} void Update(float) override {} void Cleanup() override {} }; struct ScrollComponent : public Component { float scrollX = 0.0f; float speed = 2.0f; float accel = 0.018f; void Setup() override {} void Update(float dt) override { speed += accel * dt; scrollX += speed * dt * 60.0f; } void Cleanup() override {} }; struct ScrollableComponent : public Component { float worldX = 0.0f; void Setup() override {} void Update(float) override {} void Cleanup() override {} }; struct SpawnComponent : public Component { float cursorWX = 0.0f; void Setup() override {} void Update(float) override {} void Cleanup() override {} }; struct TrailComponent : public Component { void Setup() override {} void Update(float) override {} void Cleanup() override {} }; struct ProjectionComponent : public Component { void Setup() override {} void Update(float) override {} void Cleanup() override {} }; struct MeterComponent : public Component { float value = 60.0f; void Setup() override {} void Update(float) override {} void Cleanup() override {} }; struct HudComponent : public Component { void Setup() override {} void Update(float) override {} void Cleanup() override {} }; struct RenderComponent : public Component { virtual void Draw() {} void Setup() override {} void Update(float) override {} void Cleanup() override {} }; struct NullZoneComponent : public Component { float width = 70.0f; void Setup() override {} void Update(float) override {} void Cleanup() override {} }; struct CollectibleComponent : public Component { bool collected = false; void Setup() override {} void Update(float) override {} void Cleanup() override {} };