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