Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

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

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

Death

File size: 4.7 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            int lives;
91            int multiplier;
92            bool bEndGame;
93            bool bShowLevel;
94            std::queue<int> tubes;
95            std::queue<MovableEntity*> asteroids;
96            int spawnDistance;
97            int tubeOffsetX;
98        private:
99            void toggleShowLevel(){bShowLevel = !bShowLevel;}
100           
101            const static int nAst = 7;
102            Circle Asteroids[nAst];
103
104            void ClearAsteroids(){
105                for(int i = 0; i<this->nAst; i++){
106                    Asteroids[i].r=0;
107                }
108            }
109
110           
111            bool Collision(Circle &c1, Circle &c2){
112                if(c1.r==0 || c2.r==0)
113                    return false;
114                int x = c1.x - c2.x;
115                int y = c1.y - c2.y;
116                int r = c1.r + c2.r;
117
118                return x*x+y*y<r*r*1.5;
119            }
120
121            int addIfPossible(Circle c){
122                int i;
123                for(i=0; i<this->nAst && this->Asteroids[i].r!=0;i++){
124                    if(Collision(c,this->Asteroids[i])){
125                        return 0;
126                    }
127                }
128                if(i==nAst)
129                    return 2;
130                this->Asteroids[i].x=c.x;
131                this->Asteroids[i].y=c.y;
132                this->Asteroids[i].r=c.r;
133                createAsteroid(c);
134                return 1;
135            }
136           
137           
138
139            FlappyOrxShip* getPlayer();
140            WeakPtr<FlappyOrxCenterPoint> center_;
141            WeakPtr<FlappyOrxShip> player;
142
143            Timer enemySpawnTimer;
144            Timer comboTimer;
145            Timer showLevelTimer;
146            //Context* context;
147            int level;
148            int point;
149            bool b_combo;
150
151            const std::string Asteroid5[6] = {"Asteroid3_1","Asteroid3_2","Asteroid3_3","Asteroid3_4","Asteroid3_5","Asteroid3_6"};
152            const std::string Asteroid10[6] = {"Asteroid6_1","Asteroid6_2","Asteroid6_3","Asteroid6_4","Asteroid6_5","Asteroid6_6"};
153            const std::string Asteroid15[6] = {"Asteroid9_1","Asteroid9_2","Asteroid9_3","Asteroid9_4","Asteroid9_5","Asteroid9_6"};
154            const std::string Asteroid20[6] = {"Asteroid12_1","Asteroid12_2","Asteroid12_3","Asteroid12_4","Asteroid12_5","Asteroid12_6"};
155           
156
157
158
159    };
160}
161
162#endif /* _FlappyOrx_H__ */
Note: See TracBrowser for help on using the repository browser.