1// SuperTux
2// Copyright (C) 2006 Matthias Braun <matze@braunis.de>
3//
4// This program is free software: you can redistribute it and/or modify
5// it under the terms of the GNU General Public License as published by
6// the Free Software Foundation, either version 3 of the License, or
7// (at your option) any later version.
8//
9// This program is distributed in the hope that it will be useful,
10// but WITHOUT ANY WARRANTY; without even the implied warranty of
11// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12// GNU General Public License for more details.
13//
14// You should have received a copy of the GNU General Public License
15// along with this program. If not, see <http://www.gnu.org/licenses/>.
16
17#ifndef HEADER_SUPERTUX_SUPERTUX_FLIP_LEVEL_TRANSFORMER_HPP
18#define HEADER_SUPERTUX_SUPERTUX_FLIP_LEVEL_TRANSFORMER_HPP
19
20#include "supertux/level_transformer.hpp"
21#include "video/drawing_context.hpp"
22
23class TileMap;
24class BadGuy;
25class SpawnPoint;
26class MovingObject;
27class Flower;
28class Platform;
29class Block;
30class Path;
31
32/** Vertically or horizontally flip a level */
33class FlipLevelTransformer final : public LevelTransformer
34{
35public:
36 virtual void transform_sector(Sector& sector) override;
37
38private:
39 Flip transform_flip(Flip flip);
40 void transform_path(float height, float obj_height, Path& path);
41 void transform_tilemap(float height, TileMap& tilemap);
42 void transform_moving_object(float height, MovingObject& object);
43 void transform_badguy(float height, BadGuy& badguy);
44 void transform_spawnpoint(float height, SpawnPoint& spawnpoint);
45 void transform_flower(Flower& flower);
46 void transform_platform(float height, Platform& platform);
47 void transform_block(float height, Block& block);
48};
49
50#endif
51
52/* EOF */
53