#include "math/aatriangle.h"
#include "object/coin.h"
#include "object/block.h"
+#include "object/invisible_block.h"
#include "object/platform.h"
#include "trigger/door.h"
#include "object/bullet.h"
#include "badguy/mriceblock.h"
#include "badguy/mrbomb.h"
#include "trigger/sequence_trigger.h"
+#include "trigger/secretarea_trigger.h"
Sector* Sector::_current = 0;
return 0;
}
solids = tilemap;
+ fix_old_tiles();
}
return tilemap;
} else if(name == "particles-snow") {
return partsys;
} else if(name == "door") {
return new Door(reader);
+ } else if(name == "secretarea") {
+ return new SecretAreaTrigger(reader);
} else if(name == "platform") {
return new Platform(reader);
} else if(name == "jumpy" || name == "money") {
return new FlyingPlatform(reader);
#endif
- std::cerr << "Unknown object type '" << name << "'.\n";
- return 0;
+ std::cerr << "Unknown object type '" << name << "'.\n";
+ return 0;
}
void
solids = tilemap;
add_object(tilemap);
- // hack for now...
- for(size_t x=0; x < solids->get_width(); ++x) {
- for(size_t y=0; y < solids->get_height(); ++y) {
- const Tile* tile = solids->get_tile(x, y);
-
- if(tile->attributes & Tile::COIN) {
- Coin* coin = new Coin(Vector(x*32, y*32));
- add_object(coin);
- solids->change(x, y, 0);
- } else if(tile->attributes & Tile::FULLBOX) {
- BonusBlock* block = new BonusBlock(Vector(x*32, y*32), tile->data);
- add_object(block);
- solids->change(x, y, 0);
- } else if(tile->attributes & Tile::BRICK) {
- Brick* brick = new Brick(Vector(x*32, y*32), tile->data);
- add_object(brick);
- solids->change(x, y, 0);
- } else if(tile->attributes & Tile::GOAL) {
- SequenceTrigger* trigger = new SequenceTrigger(Vector(x*32, y*32),
- "endsequence");
- add_object(trigger);
- solids->change(x, y, 0);
- }
- }
- }
+ fix_old_tiles();
}
if(reader.read_int_vector("background-tm", tiles)) {
}
void
+Sector::fix_old_tiles()
+{
+ // hack for now...
+ for(size_t x=0; x < solids->get_width(); ++x) {
+ for(size_t y=0; y < solids->get_height(); ++y) {
+ const Tile* tile = solids->get_tile(x, y);
+ Vector pos(x*32, y*32);
+
+ if(tile->id == 112) {
+ add_object(new InvisibleBlock(pos));
+ solids->change(x, y, 0);
+ } else if(tile->attributes & Tile::COIN) {
+ add_object(new Coin(pos));
+ solids->change(x, y, 0);
+ } else if(tile->attributes & Tile::FULLBOX) {
+ add_object(new BonusBlock(pos, tile->data));
+ solids->change(x, y, 0);
+ } else if(tile->attributes & Tile::BRICK) {
+ add_object(new Brick(pos, tile->data));
+ solids->change(x, y, 0);
+ } else if(tile->attributes & Tile::GOAL) {
+ add_object(new SequenceTrigger(pos, "endsequence"));
+ solids->change(x, y, 0);
+ }
+ }
+ }
+}
+
+void
Sector::write(LispWriter& writer)
{
writer.write_string("name", name);
return true;
}
-bool
-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, 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)
{