class Upgrade;
class Bullet;
class SmokeCloud;
+class Particles;
class BadGuy;
class Tile;
Vector pos;
};
+enum {
+ NONE_ENDSEQ_ANIM,
+ FIREWORKS_ENDSEQ_ANIM
+ };
+
/** This class holds a sector (a part of a level) and all the game objects
* (badguys, player, background, tilemap, ...)
*/
/// activates this sector (change music, intialize player class, ...)
void activate(const std::string& spawnpoint = "main");
+ /// get best spawn point
+ Vector get_best_spawn_point(Vector pos);
void action(float elapsed_time);
void update_game_objects();
void add_upgrade(const Vector& pos, Direction dir, UpgradeKind kind);
bool add_bullet(const Vector& pos, float xm, Direction dir);
bool add_smoke_cloud(const Vector& pos);
+ bool add_particles(const Vector& epicenter, const Vector& velocity, const Vector& acceleration, int number, Color color, int size, int life_time);
+ void add_floating_text(const Vector& pos, const std::string& text);
/** Try to grab the coin at the given coordinates */
void trygrabdistro(const Vector& pos, int bounciness);
player to play the same level in a different way :) */
void do_vertical_flip();
+ /** Get end sequence animation */
+ int end_sequence_animation()
+ { return end_sequence_animation_type; }
+
/** @evil@ */
static Sector* current()
{ return _current; }
+ /** Get total number of some stuff */
+ int get_total_badguys();
+
private:
void load_music();
MusicRef level_song;
MusicRef level_song_fast;
+ int end_sequence_animation_type;
+
public:
std::string song_title;
float gravity;
std::vector<Upgrade*> upgrades;
std::vector<Bullet*> bullets;
std::vector<SmokeCloud*> smoke_clouds;
+ std::vector<Particles*> particles;
public: // ugly
typedef std::vector<InteractiveObject*> InteractiveObjects;
int distro_counter;
bool counting_distros;
- int currentmusic;
+ int currentmusic;
};
#endif