Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: code/branches/presentationFS15/src/modules/weapons/projectiles/RocketOld.h @ 10487

Last change on this file since 10487 was 10485, checked in by maxima, 10 years ago

ParticleEffects branch merged to presentation. New level PresentationFS15. New SpaceShip spaceshipFS15 with both RocketFire and RocketFireOld

File size: 4.8 KB
Line 
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 *      Oliver Scheuss
24 *   Co-authors:
25 *      simonmie
26 *
27 */
28
29/**
30    @file RocketOld.h
31    @brief Definition of the RocketOld class.
32*/
33
34#ifndef _RocketOld_H__
35#define _RocketOld_H__
36
37#include "weapons/WeaponsPrereqs.h"
38
39#include "tools/Timer.h"
40
41#include "interfaces/RadarViewable.h"
42#include "worldentities/ControllableEntity.h"
43
44#include "BasicProjectile.h"
45
46namespace orxonox
47{
48    class ConeCollisionShape;
49
50    /**
51    @brief
52        RocketOld that can be steered by the player.
53
54    @author
55        Oli Scheuss
56    @ingroup WeaponsProjectiles
57    */
58    class _WeaponsExport RocketOld : public ControllableEntity, public BasicProjectile, public RadarViewable
59    {
60        public:
61            RocketOld(Context* context);
62            virtual ~RocketOld();
63
64            virtual void tick(float dt); //!< Defines which actions the RocketOld has to take in each tick.
65
66            virtual bool collidesAgainst(WorldEntity* otherObject, const btCollisionShape* cs, btManifoldPoint& contactPoint);
67            virtual void destroyObject(void);
68            void destructionEffect();
69
70            virtual void moveFrontBack(const Vector2& value) {}
71            virtual void moveRightLeft(const Vector2& value) {}
72            virtual void moveUpDown(const Vector2& value) {}
73
74            virtual void rotateYaw(const Vector2& value);
75            virtual void rotatePitch(const Vector2& value);
76            virtual void rotateRoll(const Vector2& value);
77
78            /**
79            @brief Moves the RocketOld in the Front/Back-direction by the specifed amount.
80            @param value  The amount by which the RocketOld is to be moved.
81            */
82            inline void moveFrontBack(float value)
83                { this->moveFrontBack(Vector2(value, 0)); }
84            /**
85            @brief Moves the RocketOld in the Right/Left-direction by the specifed amount.
86            @param value  The amount by which the RocketOld is to be moved.
87            */
88            inline void moveRightLeft(float value)
89                { this->moveRightLeft(Vector2(value, 0)); }
90            /**
91            @brief Moves the RocketOld in the Up/Down-direction by the specifed amount.
92            @param value  The amount by which the RocketOld is to be moved.
93            */
94            inline void moveUpDown(float value)
95                { this->moveUpDown(Vector2(value, 0)); }
96
97            /**
98            @brief Rotates the RocketOld around the y-axis by the specifed amount.
99            @param value  The amount by which the RocketOld is to be rotated.
100            */
101            inline void rotateYaw(float value)
102                { this->rotateYaw(Vector2(value, 0)); }
103            /**
104            @brief Rotates the RocketOld around the x-axis by the specifed amount.
105            @param value  The amount by which the RocketOld is to be rotated.
106            */
107            inline void rotatePitch(float value)
108                { this->rotatePitch(Vector2(value, 0)); }
109            /**
110            @brief Rotates the RocketOld around the z-axis by the specifed amount.
111            @param value  The amount by which the RocketOld is to be rotated.
112            */
113            inline void rotateRoll(float value)
114                { this->rotateRoll(Vector2(value, 0)); }
115
116            virtual void setShooter(Pawn* shooter);
117
118            virtual void fired(unsigned int firemode);
119
120        private:
121            Vector3 localAngularVelocity_; //!< Variable to temporarily store accumulated steering command input.
122
123            WeakPtr<PlayerInfo> player_; //!< The player that controls the RocketOld.
124            //WeakPtr<Pawn> pawn_; //!< The pawn that controls the RocketOld. TODO
125            Timer destroyTimer_; //!< Timer to destroy the projectile after its lifetime has run out.
126            float lifetime_; //!< The time the projectile exists.
127
128            WorldSound* defSndWpnEngine_; //!< Engine sound.
129            WorldSound* defSndWpnLaunch_; //!< Launch sound.
130    };
131
132}
133
134#endif /* _RocketOld_H__ */
Note: See TracBrowser for help on using the repository browser.