added trigger to display (and later count) secret areas
[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   triggerevent = EVENT_TOUCH;
22   show_message = 0;
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 (show_message == 1) {
47       context.draw_center_text(gold_text, message, Vector(0, screen->h/2 - gold_text->get_height()/2), LAYER_GUI);
48       std::cout<<message<<std::endl;
49    }
50 }
51
52 void
53 SecretAreaTrigger::event(Player& , EventType type)
54 {
55   if(type == triggerevent) {
56     show_message = 1;
57   }
58 }