#pragma once #include #include #include #include #include struct SpawnEnemyEvent : public crepe::Event { float speed = 0; int column = 0; }; class EnemyScript : public crepe::Script { public: EnemyScript(); void init() override; void fixed_update(crepe::duration_t dt) override; void shoot(const crepe::vec2 & position); bool on_collide(const crepe::CollisionEvent & collisionData); void despawn_enemy(); bool spawn_enemy(const SpawnEnemyEvent & e); void create_tank(); void create_soldier(); void set_hit_blink(bool status); private: std::random_device rd; std::default_random_engine engine; bool alive = false; float speed = 50; int health = 2; const float MIN_SPEED = 20; const float MAX_SPEED = 150; const float MAX_DISTANCE = 200; std::chrono::time_point last_fired; std::chrono::time_point last_hit; std::chrono::duration shot_delay = std::chrono::duration(0); std::chrono::duration blink_time = std::chrono::duration(0.1); };