1// SuperTux
2// Copyright (C) 2006 Matthias Braun <matze@braunis.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_PARTICLESYSTEM_INTERACTIVE_HPP
18#define HEADER_SUPERTUX_OBJECT_PARTICLESYSTEM_INTERACTIVE_HPP
19
20#include "object/particlesystem.hpp"
21
22class Vector;
23
24/**
25 This is an alternative class for particle systems. It is
26 responsible for storing a set of particles with each having an x-
27 and y-coordinate the number of the layer where it should be drawn
28 and a texture.
29
30 This version of the particle system class doesn't use virtual
31 screen coordinates, but Interactive ones. Particle systems which
32 need Interactive levels coordinates, such as rain, should be
33 implemented here.
34
35 Classes that implement a particle system should subclass from this
36 class, initialize particles in the constructor and move them in the
37 simulate function.
38*/
39class ParticleSystem_Interactive : public ParticleSystem
40{
41public:
42 ParticleSystem_Interactive();
43 ParticleSystem_Interactive(const ReaderMapping& mapping);
44 virtual ~ParticleSystem_Interactive();
45
46 virtual void draw(DrawingContext& context) override;
47 virtual std::string get_display_name() const override {
48 return _("Interactive particle system");
49 }
50
51protected:
52 int collision(Particle* particle, const Vector& movement);
53
54private:
55 ParticleSystem_Interactive(const ParticleSystem_Interactive&) = delete;
56 ParticleSystem_Interactive& operator=(const ParticleSystem_Interactive&) = delete;
57};
58
59#endif
60
61/* EOF */
62