Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: code/branches/OrxoBlox_FS19/src/modules/OrxoBlox/OrxoBloxBall.h @ 12210

Last change on this file since 12210 was 12210, checked in by pomselj, 5 years ago

created a folder for our module and started implementing the ball class

File size: 6.1 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 *      Fabian 'x3n' Landau
24 *   Co-authors:
25 *      ...
26 *
27 */
28
29/**
30    @file OrxoBloxBall.h
31    @brief Declaration of the OrxoBloxBall class.
32    @ingroup OrxoBlox
33*/
34
35#ifndef _OrxoBloxBall_H__
36#define _OrxoBloxBall_H__
37
38#include "OrxoBlox/OrxoBloxPrereqs.h"
39
40#include "util/Math.h"
41
42#include "worldentities/MovableEntity.h"
43
44
45namespace orxonox
46{
47
48    /**
49    @brief
50        This class manages the ball for @ref orxonox::OrxoBlox "OrxoBlox".
51
52        It is responsible for both the movement of the ball in the x,y-plane as well as its interaction with the boundaries of the playing field (defined by the @ref orxonox::OrxoBloxCenterpoint "OrxoBloxCenterpoint") and the @ref orxonox::OrxoBloxBlocks "OrxoBloxBlocks". Or more precisely, it makes the ball bounce off then left and right delimiters of the playing field, it makes the ball bounce off the blocks, damages them and also detects when it reaches the lower bound and takes appropriate measures.
53
54    @author
55        Fabian 'x3n' Landau
56
57    @ingroup OrxoBlox
58    */
59    class _OrxoBloxExport OrxoBloxBall : public MovableEntity
60    {
61        public:
62            OrxoBloxBall(Context* context);
63            virtual ~OrxoBloxBall();
64
65            virtual void tick(float dt) override;
66
67            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode) override;
68
69            /**
70            @brief Set the dimensions of the playing field.
71            @param width The width of the playing field.
72            @param height The height of the playing field.
73            */
74            void setFieldDimension(float width, float height)
75                { this->fieldWidth_ = width; this->fieldHeight_ = height; }
76            /**
77            @brief Get the dimensions of the playing field.
78            @param dimension A vector with the width as the first and height as the second                  component.
79            */
80            void setFieldDimension(const Vector2& dimension)
81                { this->setFieldDimension(dimension.x, dimension.y); }
82            /**
83            @brief Get the dimensions of the playing field.
84            @return Returns a vector with the width as the first and height as the second                     component.
85            */
86            Vector2 getFieldDimension() const
87                { return Vector2(this->fieldWidth_, this->fieldHeight_); }
88
89            void setSpeed(float speed); //!< Set the speed of the ball (in x-direction).
90            /**
91            @brief Get the speed of the ball (in x-direction).
92            @return Returns the speed of the ball (in x-direction).
93            */
94            float getSpeed() const
95                { return this->speed_; }
96
97            /**
98            @brief Set the acceleration factor of the ball.
99            @param factor The factor the acceleration of the ball is set to.
100            */
101            void setAccelerationFactor(float factor)
102                { this->accelerationFactor_ = factor; }
103            /**
104            @brief Get the acceleration factor of the ball.
105            @return Returns the acceleration factor of the ball.
106            */
107            float getAccelerationFactor() const
108                { return this->accelerationFactor_; }
109
110            /**
111            @brief Set the length of the blocks.
112            @param batlength The length of the blocks (in x-direction) as percentage of the height                  of the playing field.
113            */
114            void setBlockLength(float blocklength)
115                { this->blocklength_ = blocklength; }
116            /**
117            @brief Get the length of the blocks.
118            @return Returns the length of the blocks as percentage of the height of the playing             field.
119            */
120            float getBlockLength() const
121                { return this->blocklength_; }
122
123            void setBlock(WeakPtr<OrxoBloxBlock>* block); //!< Set the blocks for the ball.
124            void applyBlock(); //!< Get the block over the network.
125
126            static const float MAX_REL_Z_VELOCITY;
127
128            void setDefScoreSound(const std::string& engineSound);
129            const std::string& getDefScoreSound();
130            void setDefBatSound(const std::string& engineSound);
131            const std::string& getDefBatSound();
132            void setDefBoundarySound(const std::string& engineSound);
133            const std::string& getDefBoundarySound();
134
135        private:
136            void registerVariables();
137
138            float fieldWidth_; //!< The width of the playing field.
139            float fieldHeight_; //!< The height of the playing field.
140            float speedX_; //!< The speed (in x-direction) of the ball.
141            float speedY_; //!< The speed (in y-direction) of the ball.
142            float accelerationFactor_; //!< The acceleration factor of the ball.
143            float blocklength_; //!< The length of the bats (in z-direction) as percentage of the           height of the playing field.
144            WeakPtr<OrxoBloxBlock>* block_; //!< An array with the blocks.
145            bool bDeleteBlock_; //!< Bool, to keep track, of whether this->block_ exists or not.
146            unsigned int* blockID_; //!< The object IDs of the blocks, to be able to synchronize                    them over the network.
147            WorldSound* defScoreSound_;
148            WorldSound* defBatSound_;
149            WorldSound* defBoundarySound_;
150    };
151}
152
153#endif /* _OrxoBloxBall_H__ */
Note: See TracBrowser for help on using the repository browser.