85a7697fc34d2a3110f6ae1b815c24d3f5870054
[supertux.git] / src / object / floating_image.hpp
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_OBJECT_FLOATING_IMAGE_HPP
18 #define HEADER_SUPERTUX_OBJECT_FLOATING_IMAGE_HPP
19
20 #include "object/anchor_point.hpp"
21 #include "sprite/sprite_ptr.hpp"
22 #include "supertux/game_object.hpp"
23
24 class Sprite;
25
26 class FloatingImage : public GameObject
27 {
28 public:
29   FloatingImage(const std::string& sprite);
30   virtual ~FloatingImage();
31
32   void set_layer(int layer) {
33     this->layer = layer;
34   }
35
36   int get_layer() const {
37     return layer;
38   }
39
40   void set_pos(const Vector& pos) {
41     this->pos = pos;
42   }
43   const Vector& get_pos() const {
44     return pos;
45   }
46
47   void set_anchor_point(AnchorPoint anchor) {
48     this->anchor = anchor;
49   }
50   AnchorPoint get_anchor_point() const {
51     return anchor;
52   }
53
54   void set_visible(bool visible) {
55     this->visible = visible;
56   }
57   bool get_visible() const {
58     return visible;
59   }
60
61   void set_action(const std::string& action);
62   std::string get_action();
63
64   void fade_in(float fadetime);
65   void fade_out(float fadetime);
66
67   void update(float elapsed_time);
68   void draw(DrawingContext& context);
69
70 private:
71   SpritePtr sprite;
72   int layer;
73   bool visible;
74   AnchorPoint anchor;
75   Vector pos;
76   float fading;
77   float fadetime;
78 };
79
80 #endif
81
82 /* EOF */