Orxonox  0.0.5 Codename: Arcturus
MultiStateEngine.h
Go to the documentation of this file.
1 /*
2  * ORXONOX - the hottest 3D action shooter ever to exist
3  * > www.orxonox.net <
4  *
5  *
6  * License notice:
7  *
8  * This program is free software; you can redistribute it and/or
9  * modify it under the terms of the GNU General Public License
10  * as published by the Free Software Foundation; either version 2
11  * of the License, or (at your option) any later version.
12  *
13  * This program is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16  * GNU General Public License for more details.
17  *
18  * You should have received a copy of the GNU General Public License
19  * along with this program; if not, write to the Free Software
20  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
21  *
22  * Author:
23  * Fabian 'x3n' Landau
24  * Reto Grieder
25  * Co-authors:
26  * ...
27  *
28  */
29 
30 #ifndef _MultiStateEngine_H__
31 #define _MultiStateEngine_H__
32 
33 #include "OrxonoxPrereqs.h"
34 
35 #include <vector>
36 #include "Engine.h"
37 
38 namespace orxonox
39 {
41  {
42  public:
43  struct EngineState
44  {
45  static constexpr int Idle = 1;
46  static constexpr int Normal = 2;
47  static constexpr int Brake = 4;
48  static constexpr int Boost = 8;
49  };
50 
51  MultiStateEngine(Context* context);
52  virtual ~MultiStateEngine();
53 
54  virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode) override;
55 
56  virtual void run(float dt) override;
57 
58  virtual void addToSpaceShip(SpaceShip* ship) override;
59 
60  void addEffectContainer(EffectContainer* effect);
61  EffectContainer* getEffectContainer(unsigned int index) const;
62 
63  void setDefEngSndNormal(const std::string& engineSound);
64  const std::string& getDefEngSndNormal();
65  void setDefEngSndBoost(const std::string& engineSound);
66  const std::string& getDefEngSndBoost();
67 
68  private:
69  void registerVariables();
70 
71  int state_;
72  int oldState_;
74  std::vector<EffectContainer*> effectContainers_;
77  };
78 }
79 
80 #endif /* _MultiStateEngine_H__ */
int oldState_
Definition: MultiStateEngine.h:72
Definition: Synchronisable.h:65
LuaState * lua_
Definition: MultiStateEngine.h:73
Definition: MultiStateEngine.h:43
The WorldSound class is to be used for sounds with position and orientation.
Definition: WorldSound.h:44
::std::string string
Definition: gtest-port.h:756
Representation of an interface to lua.
Definition: LuaState.h:74
WorldSound * defEngineSndNormal_
Definition: MultiStateEngine.h:75
Definition: MultiStateEngine.h:40
xmlelement
Definition: Super.h:519
The SpaceShip is the principal entity through which the player interacts with the game...
Definition: SpaceShip.h:90
Die Wagnis Klasse hat die folgenden Aufgaben:
Definition: ApplicationPaths.cc:66
Mode
Definition: CorePrereqs.h:102
Shared library macros, enums, constants and forward declarations for the orxonox library ...
Definition: Context.h:45
int state_
Definition: MultiStateEngine.h:71
#define _OrxonoxExport
Definition: OrxonoxPrereqs.h:60
std::vector< EffectContainer * > effectContainers_
Definition: MultiStateEngine.h:74
The Engine class provides propulsion to the SpaceShip.
Definition: Engine.h:55
WorldSound * defEngineSndBoost_
Definition: MultiStateEngine.h:76
Definition: EffectContainer.h:39