Merged changes from branches/supertux-milestone2-grumbel/ to trunk/supertux/
[supertux.git] / src / object / endsequence.cpp
1 //  SuperTux - End Sequence
2 //  Copyright (C) 2007 Christoph Sommer <christoph.sommer@2006.expires.deltadevelopment.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 #include "object/endsequence.hpp"
18
19 #include "object/player.hpp"
20 #include "supertux/sector.hpp"
21
22 EndSequence::EndSequence()
23   : isrunning(false), isdone(false), tux_may_walk(true)
24 {
25   end_sequence_controller = 0;
26 }
27
28 EndSequence::~EndSequence()
29 {
30   delete end_sequence_controller;
31 }
32
33 void
34 EndSequence::update(float elapsed_time)
35 {
36   if (!isrunning) return;
37   running(elapsed_time);
38 }
39
40 void
41 EndSequence::draw(DrawingContext& /*context*/)
42 {
43 }
44
45 void
46 EndSequence::start()
47 {
48   if (isrunning) return;
49   isrunning = true;
50   isdone = false;
51
52   Player& tux = *Sector::current()->player;
53   end_sequence_controller = new CodeController();
54   tux.set_controller(end_sequence_controller);
55   tux.set_speedlimit(230); //MAX_WALK_XM
56
57   starting();
58 }
59
60 void
61 EndSequence::stop_tux()
62 {
63   tux_may_walk = false;
64 }
65
66 void
67 EndSequence::stop()
68 {
69   if (!isrunning) return;
70   isrunning = false;
71   isdone = true;
72   stopping();
73 }
74
75 bool
76 EndSequence::is_tux_stopped()
77 {
78   return !tux_may_walk;
79 }
80
81 bool
82 EndSequence::is_done()
83 {
84   return isdone;
85 }
86
87 void
88 EndSequence::starting()
89 {
90 }
91
92 void
93 EndSequence::running(float /*elapsed_time*/)
94 {
95 }
96
97 void
98 EndSequence::stopping()
99 {
100 }
101
102 /* EOF */