fixed a couple of nolok's minor bugs
[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 #define MESSAGE_TIME 3
8
9 SecretAreaTrigger::SecretAreaTrigger(LispReader& reader)
10 {
11   reader.read_float("x", bbox.p1.x);
12   reader.read_float("y", bbox.p1.y);
13   bbox.set_size(32, 32);
14
15   reader.read_string("message", message);
16 }
17
18 SecretAreaTrigger::SecretAreaTrigger(const Vector& pos)
19 {
20   bbox.set_pos(pos);
21   bbox.set_size(32, 32);
22   message = "You found a secret area!";
23 }
24
25 SecretAreaTrigger::~SecretAreaTrigger()
26 {
27 }
28
29 void
30 SecretAreaTrigger::write(LispWriter& writer)
31 {
32   writer.start_list("secretarea");
33
34   writer.write_float("x", bbox.p1.x);
35   writer.write_float("y", bbox.p1.y);
36   writer.write_float("width", bbox.get_width());
37   writer.write_float("height", bbox.get_height());
38   writer.write_string("message", message);
39
40   writer.end_list("secretarea");
41 }
42
43 void
44 SecretAreaTrigger::draw(DrawingContext& context)
45 {
46    if (message_timer.started()) {
47       Vector pos = Vector(0, screen->h/2 - gold_text->get_height()/2);
48       context.draw_center_text(gold_text, message, pos, LAYER_GUI);
49       //TODO: Prevent text from scrolling with the rest of the level
50    }
51    if (message_timer.check()) {
52       remove_me();
53    }
54 }
55
56 void
57 SecretAreaTrigger::event(Player& , EventType type)
58 {
59   if(type == EVENT_TOUCH) {
60     message_timer.start(MESSAGE_TIME);
61   }
62 }