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#ifndef HEADER_SUPERTUX_OBJECT_ENDSEQUENCE_HPP
18#define HEADER_SUPERTUX_OBJECT_ENDSEQUENCE_HPP
19
20#include "control/codecontroller.hpp"
21#include "supertux/game_object.hpp"
22
23class EndSequence : public GameObject
24{
25public:
26 EndSequence();
27 virtual ~EndSequence();
28
29 virtual void update(float dt_sec) override;
30 virtual void draw(DrawingContext& context) override;
31
32 void start(); /**< play EndSequence */
33 void stop_tux(); /**< called when Tux has reached his final position */
34 void stop(); /**< stop playing EndSequence, mark it as done playing */
35 bool is_tux_stopped() const; /**< returns true if Tux has reached his final position */
36 bool is_done() const; /**< returns true if EndSequence has finished playing */
37 virtual bool is_saveable() const override {
38 return false;
39 }
40
41protected:
42 virtual void starting(); /**< called when EndSequence starts */
43 virtual void running(float dt_sec); /**< called while the EndSequence is running */
44 virtual void stopping(); /**< called when EndSequence stops */
45
46protected:
47 bool isrunning; /**< true while EndSequence plays */
48 bool isdone; /**< true if EndSequence has finished playing */
49 bool tux_may_walk; /**< true while tux is allowed to walk */
50 std::unique_ptr<CodeController> end_sequence_controller;
51
52private:
53 EndSequence(const EndSequence&) = delete;
54 EndSequence& operator=(const EndSequence&) = delete;
55};
56
57#endif
58
59/* EOF */
60