#pragma once
#include <Gorgon/Geometry/Point.h>
#include <Gorgon/Graphics/Animations.h>
using Gorgon::Geometry::Point;
namespace AlienDefaults {
// Default speed
const int speed = 100;
// Default speed up check
const int next_speed_up = 10000;
// Default speed up factor
const float speed_up_factor = 1.25;
// Default creation check
const int next_alien_create = 1000;
// Default max alien count
const float max = 10.f;
// Default max alien up value
const float max_up = 3.f;
// Default max up check
const int next_max_up = 10000;
const int next_laser = 1800;
const int next_laser_update = 20000;
const int laser_speed = 5; // px
}
namespace AlienVariables {
inline int speed = AlienDefaults::speed;
inline int next_speed_up = AlienDefaults::next_speed_up;
inline float speed_up_factor = AlienDefaults::speed_up_factor;
inline int next_check = AlienDefaults::next_alien_create;
inline int next_check_original = AlienDefaults::next_alien_create;
inline float max = AlienDefaults::max;
inline float maximum_up = AlienDefaults::max_up;
inline int next_maximum_up = AlienDefaults::next_max_up;
inline int laser_speed = AlienDefaults::laser_speed;
inline void ResetToDefaults() {
speed = AlienDefaults::speed;
next_speed_up = AlienDefaults::next_speed_up;
speed_up_factor = AlienDefaults::speed_up_factor;
next_check = AlienDefaults::next_alien_create;
next_check_original = AlienDefaults::next_alien_create;
max = AlienDefaults::max;
maximum_up = AlienDefaults::max_up;
next_maximum_up = AlienDefaults::next_max_up;
laser_speed = AlienDefaults::laser_speed;
}
}
class Alien {
public:
Alien(Point location_, Gorgon::Graphics::RectangularAnimation& image_) : location(location_), image(image_), target(location_.X, 640) {}
Gorgon::Graphics::Instance image;
Point location, target;
int next_laser = AlienDefaults::next_laser;
int next_laser_update = AlienDefaults::next_laser_update;
};