Sector* Sector::_current = 0;
Sector::Sector()
- : gravity(10), player(0), solids(0), background(0), camera(0),
+ : end_sequence_animation_type(NONE_ENDSEQ_ANIM),
+ gravity(10), player(0), solids(0), background(0), camera(0),
currentmusic(LEVEL_MUSIC)
{
song_title = "Mortimers_chipdisko.mod";
_current = 0;
}
+Sector *Sector::create(const std::string& name, size_t width, size_t height)
+{
+ Sector *sector = new Sector;
+ sector->name = name;
+ TileMap *background = new TileMap(LAYER_BACKGROUNDTILES, false, width, height);
+ TileMap *interactive = new TileMap(LAYER_TILES, true, width, height);
+ TileMap *foreground = new TileMap(LAYER_FOREGROUNDTILES, false, width, height);
+ sector->add_object(background);
+ sector->add_object(interactive);
+ sector->add_object(foreground);
+ sector->solids = interactive;
+ sector->camera = new Camera(sector);
+ sector->add_object(sector->camera);
+ sector->update_game_objects();
+ return sector;
+}
+
void
Sector::parse(LispReader& lispreader)
{
} else if(token == "music") {
song_title = lisp_string(data);
load_music();
+ } else if(token == "end-sequence-animation") {
+ std::string end_seq_anim = lisp_string(data);
+ if(end_seq_anim == "fireworks")
+ end_sequence_animation_type = FIREWORKS_ENDSEQ_ANIM;
} else if(token == "camera") {
if(camera) {
std::cerr << "Warning: More than 1 camera defined in sector.\n";
add_object(background);
}
+ std::string end_seq_anim;
+ reader.read_string("end-sequence-animation", end_seq_anim);
+ if(end_seq_anim == "fireworks")
+ end_sequence_animation_type = FIREWORKS_ENDSEQ_ANIM;
+// else
+// end_sequence_animation = NONE_ENDSEQ_ANIM;
+
std::string particlesystem;
reader.read_string("particle_system", particlesystem);
if(particlesystem == "clouds")
{
global_stats.add_points(SCORE_STAT, s);
- add_object(new FloatingScore(pos, s));
+ add_object(new FloatingText(pos, s));
}
void
}
BadGuy*
-Sector::add_bad_guy(float x, float y, BadGuyKind kind)
+Sector::add_bad_guy(float x, float y, BadGuyKind kind, bool activate)
{
BadGuy* badguy = new BadGuy(kind, x, y);
add_object(badguy);
+ if(activate)
+ badguy->activate(LEFT);
return badguy;
}
throw std::runtime_error("wrong bullet type.");
add_object(new_bullet);
- global_stats.add_points(SHOTS_STAT, 1);
SoundManager::get()->play_sound(IDToSound(SND_SHOOT));
return true;
}
bool
-Sector::add_particles(const Vector& epicenter, const Vector& velocity, const Vector& acceleration, int number, Color color, int size, int life_time)
+Sector::add_particles(const Vector& epicenter, int min_angle, int max_angle, const Vector& initial_velocity, const Vector& acceleration, int number, Color color, int size, int life_time, int drawing_layer)
{
- add_object(new Particles(epicenter, velocity, acceleration, number, color, size, life_time));
+ add_object(new Particles(epicenter, min_angle, max_angle, initial_velocity, acceleration, number, color, size, life_time, drawing_layer));
return true;
}
+void
+Sector::add_floating_text(const Vector& pos, const std::string& text)
+{
+ add_object(new FloatingText(pos, text));
+}
+
/* Break a brick: */
bool
Sector::trybreakbrick(const Vector& pos, bool small)
SoundManager::get()->play_sound(IDToSound(SND_DISTRO));
global_stats.add_points(SCORE_STAT, SCORE_DISTRO);
+ global_stats.add_points(COINS_COLLECTED_STAT, 1);
player_status.distros++;
return true;
}
add_bouncy_distro(Vector(posx, posy));
SoundManager::get()->play_sound(IDToSound(SND_DISTRO));
global_stats.add_points(SCORE_STAT, SCORE_DISTRO);
+ global_stats.add_points(COINS_COLLECTED_STAT, 1);
player_status.distros++;
break;
solids->change_at(pos, tile->next_tile);
SoundManager::get()->play_sound(IDToSound(SND_DISTRO));
-
+
if (bounciness == BOUNCE)
{
add_bouncy_distro(Vector(((int)(pos.x + 1) / 32) * 32,
}
global_stats.add_points(SCORE_STAT, SCORE_DISTRO);
+ global_stats.add_points(COINS_COLLECTED_STAT, 1);
player_status.distros++;
}
{
return currentmusic;
}
+
+int
+Sector::get_total_badguys()
+{
+ int total_badguys = 0;
+ for(GameObjects::iterator i = gameobjects_new.begin(); i != gameobjects_new.end(); ++i)
+ {
+ BadGuy* badguy = dynamic_cast<BadGuy*> (*i);
+ if(badguy)
+ total_badguys++;
+ }
+ return total_badguys;
+}