Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: code/branches/FlappyOrx_HS17/src/modules/flappyorx/FlappyOrx.h @ 11563

Last change on this file since 11563 was 11563, checked in by pascscha, 6 years ago

death message initiated

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 *      Florian Zinggeler
24 *   Co-authors:
25 *      ...
26 *
27 */
28
29/**
30    @file FlappyOrx.h
31    @brief Gametype.
32    @ingroup FlappyOrx
33*/
34
35#ifndef _FlappyOrx_H__
36#define _FlappyOrx_H__
37
38#include "flappyorx/FlappyOrxPrereqs.h"
39
40#include "gametypes/Deathmatch.h"
41#include "tools/Timer.h"
42
43
44namespace orxonox
45{
46
47    struct Circle{
48        int r;
49        int x;
50        int y;
51        Circle(int new_r, int new_x, int new_y){
52            r=new_r;
53            x=new_x;
54            y=new_y;
55        }
56        Circle(){
57            r=0;
58            x=0;
59            y=0;
60        }
61    };
62
63    class _FlappyOrxExport FlappyOrx : public Deathmatch
64    {
65        public:
66            FlappyOrx(Context* context);
67
68            virtual void start() override;
69            virtual void end() override;
70            virtual void death();
71            virtual void addBots(unsigned int amount) override{} //<! overwrite function in order to bypass the addbots command
72
73            void updatePlayerPos(int x);
74            void createAsteroid(Circle &c);
75            void asteroidField(int x, int y, float slope);
76            void spawnTube();
77           
78            void setCenterpoint(FlappyOrxCenterPoint* center);
79
80            int getLives(){return this->lives;}
81            int getLevel(){return this->level;}
82            int getPoints(){return this->point;}
83            int getMultiplier(){return this->multiplier;}
84
85            void costLife();
86            void levelUp();
87            void addPoints(int numPoints);
88            // checks if multiplier should be reset.
89            void comboControll();
90
91            bool isDead();
92            std::string getDeathMessage();
93
94            int lives;
95            int multiplier;
96            bool bEndGame;
97            bool bShowLevel;
98            std::queue<int> tubes;
99            std::queue<MovableEntity*> asteroids;
100            int spawnDistance;
101            int tubeOffsetX;
102        private:
103            void toggleShowLevel(){bShowLevel = !bShowLevel;}
104           
105            const static int nAst = 7;
106            Circle Asteroids[nAst];
107
108            void ClearAsteroids(){
109                for(int i = 0; i<this->nAst; i++){
110                    Asteroids[i].r=0;
111                }
112            }
113
114           
115            bool Collision(Circle &c1, Circle &c2){
116                if(c1.r==0 || c2.r==0)
117                    return false;
118                int x = c1.x - c2.x;
119                int y = c1.y - c2.y;
120                int r = c1.r + c2.r;
121
122                return x*x+y*y<r*r*1.5;
123            }
124
125            int addIfPossible(Circle c){
126                int i;
127                for(i=0; i<this->nAst && this->Asteroids[i].r!=0;i++){
128                    if(Collision(c,this->Asteroids[i])){
129                        return 0;
130                    }
131                }
132                if(i==nAst)
133                    return 2;
134                this->Asteroids[i].x=c.x;
135                this->Asteroids[i].y=c.y;
136                this->Asteroids[i].r=c.r;
137                createAsteroid(c);
138                return 1;
139            }
140           
141           
142
143            FlappyOrxShip* getPlayer();
144            WeakPtr<FlappyOrxCenterPoint> center_;
145            WeakPtr<FlappyOrxShip> player;
146
147            Timer enemySpawnTimer;
148            Timer comboTimer;
149            Timer showLevelTimer;
150            //Context* context;
151            int level;
152            int point;
153            bool b_combo;
154
155            const std::string Asteroid5[6] = {"Asteroid3_1","Asteroid3_2","Asteroid3_3","Asteroid3_4","Asteroid3_5","Asteroid3_6"};
156            const std::string Asteroid10[6] = {"Asteroid6_1","Asteroid6_2","Asteroid6_3","Asteroid6_4","Asteroid6_5","Asteroid6_6"};
157            const std::string Asteroid15[6] = {"Asteroid9_1","Asteroid9_2","Asteroid9_3","Asteroid9_4","Asteroid9_5","Asteroid9_6"};
158            const std::string Asteroid20[6] = {"Asteroid12_1","Asteroid12_2","Asteroid12_3","Asteroid12_4","Asteroid12_5","Asteroid12_6"};
159           
160
161
162
163    };
164}
165
166#endif /* _FlappyOrx_H__ */
Note: See TracBrowser for help on using the repository browser.