Improved collision detection by taking movement into account. Fixed long standing...
[supertux.git] / src / trigger / secretarea_trigger.cpp
1 #include <config.h>
2
3 #include "secretarea_trigger.h"
4 #include "utils/lispwriter.h"
5 #include "gameloop.h"
6
7 SecretAreaTrigger::SecretAreaTrigger(LispReader& reader)
8 {
9   reader.read_float("x", bbox.p1.x);
10   reader.read_float("y", bbox.p1.y);
11   bbox.set_size(32, 32);
12
13   reader.read_string("message", message);
14 }
15
16 SecretAreaTrigger::SecretAreaTrigger(const Vector& pos)
17 {
18   bbox.set_pos(pos);
19   bbox.set_size(32, 32);
20   message = "You found a secret area!";
21 }
22
23 SecretAreaTrigger::~SecretAreaTrigger()
24 {
25 }
26
27 void
28 SecretAreaTrigger::write(LispWriter& writer)
29 {
30   writer.start_list("secretarea");
31
32   writer.write_float("x", bbox.p1.x);
33   writer.write_float("y", bbox.p1.y);
34   writer.write_float("width", bbox.get_width());
35   writer.write_float("height", bbox.get_height());
36   writer.write_string("message", message);
37
38   writer.end_list("secretarea");
39 }
40
41 void
42 SecretAreaTrigger::draw(DrawingContext& context)
43 {
44    if (message_timer.started()) {
45       Vector pos = Vector(0, screen->h/2 - gold_text->get_height()/2);
46       context.draw_center_text(gold_text, message, pos, LAYER_GUI);
47       //TODO: Prevent text from scrolling with the rest of the level
48    }
49    if (message_timer.check()) {
50       remove_me();
51    }
52 }
53
54 void
55 SecretAreaTrigger::event(Player& , EventType type)
56 {
57   if(type == EVENT_TOUCH) {
58     message_timer.start(MESSAGE_TIME);
59   }
60 }