3 #include "flip_level_transformer.h"
4 #include "object/tilemap.h"
5 #include "badguy/badguy.h"
7 #include "tile_manager.h"
10 FlipLevelTransformer::transform_sector(Sector* sector)
12 float height = sector->solids->get_height()
13 * sector->solids->get_tilemanager()->get_default_height();
15 for(Sector::GameObjects::iterator i = sector->gameobjects.begin();
16 i != sector->gameobjects.end(); ++i) {
17 GameObject* object = *i;
19 TileMap* tilemap = dynamic_cast<TileMap*> (object);
21 transform_tilemap(tilemap);
23 BadGuy* badguy = dynamic_cast<BadGuy*> (object);
25 transform_badguy(height, badguy);
27 MovingObject* mobject = dynamic_cast<MovingObject*> (object);
29 transform_moving_object(height, mobject);
33 for(Sector::SpawnPoints::iterator i = sector->spawnpoints.begin();
34 i != sector->spawnpoints.end(); ++i) {
35 transform_spawnpoint(height, *i);
40 FlipLevelTransformer::transform_tilemap(TileMap* tilemap)
42 for(size_t x = 0; x < tilemap->get_width(); ++x) {
43 for(size_t y = 0; y < tilemap->get_height()/2; ++y) {
45 int y2 = tilemap->get_height()-1-y;
46 const Tile* t1 = tilemap->get_tile(x, y);
47 const Tile* t2 = tilemap->get_tile(x, y2);
48 tilemap->change(x, y, t2->getID());
49 tilemap->change(x, y2, t1->getID());
52 tilemap->set_drawing_effect(VERTICAL_FLIP);
56 FlipLevelTransformer::transform_badguy(float height, BadGuy* badguy)
58 Vector pos = badguy->get_start_position();
59 pos.y = height - pos.y;
60 badguy->set_start_position(pos);
64 FlipLevelTransformer::transform_spawnpoint(float height, SpawnPoint* spawn)
66 Vector pos = spawn->pos;
67 pos.y = height - pos.y;
72 FlipLevelTransformer::transform_moving_object(float height, MovingObject*object)
74 Vector pos = object->get_pos();
75 pos.y = height - pos.y;