Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

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

Last change on this file since 11535 was 11533, checked in by merholzl, 7 years ago

point system in place

File size: 4.6 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 addBots(unsigned int amount) override{} //<! overwrite function in order to bypass the addbots command
71
72            void updatePlayerPos(int x);
73            void createAsteroid(Circle &c);
74            void asteroidField(int x, int y, float slope);
75            void spawnTube();
76           
77            void setCenterpoint(FlappyOrxCenterPoint* center);
78
79            int getLives(){return this->lives;}
80            int getLevel(){return this->level;}
81            int getPoints(){return this->point;}
82            int getMultiplier(){return this->multiplier;}
83
84            void costLife();
85            void levelUp();
86            void addPoints(int numPoints);
87            // checks if multiplier should be reset.
88            void comboControll();
89            int lives;
90            int multiplier;
91            bool bEndGame;
92            bool bShowLevel;
93            std::queue<int> tubes;
94            int spawnDistance;
95            int tubeOffsetX;
96        private:
97            void toggleShowLevel(){bShowLevel = !bShowLevel;}
98           
99            const static int nAst = 7;
100            Circle Asteroids[nAst];
101
102            void ClearAsteroids(){
103                for(int i = 0; i<this->nAst; i++){
104                    Asteroids[i].r=0;
105                }
106            }
107
108           
109            bool Collision(Circle &c1, Circle &c2){
110                if(c1.r==0 || c2.r==0)
111                    return false;
112                int x = c1.x - c2.x;
113                int y = c1.y - c2.y;
114                int r = c1.r + c2.r;
115
116                return x*x+y*y<r*r*1.5;
117            }
118
119            int addIfPossible(Circle c){
120                int i;
121                for(i=0; i<this->nAst && this->Asteroids[i].r!=0;i++){
122                    if(Collision(c,this->Asteroids[i])){
123                        return 0;
124                    }
125                }
126                if(i==nAst)
127                    return 2;
128                this->Asteroids[i].x=c.x;
129                this->Asteroids[i].y=c.y;
130                this->Asteroids[i].r=c.r;
131                createAsteroid(c);
132                return 1;
133            }
134           
135           
136
137            FlappyOrxShip* getPlayer();
138            WeakPtr<FlappyOrxCenterPoint> center_;
139            WeakPtr<FlappyOrxShip> player;
140
141            Timer enemySpawnTimer;
142            Timer comboTimer;
143            Timer showLevelTimer;
144            //Context* context;
145            int level;
146            int point;
147            bool b_combo;
148            std::string Asteroid5[6] = {"Asteroid3_1","Asteroid3_2","Asteroid3_3","Asteroid3_4","Asteroid3_5","Asteroid3_6"};
149            std::string Asteroid10[6] = {"Asteroid6_1","Asteroid6_2","Asteroid6_3","Asteroid6_4","Asteroid6_5","Asteroid6_6"};
150            std::string Asteroid15[6] = {"Asteroid9_1","Asteroid9_2","Asteroid9_3","Asteroid9_4","Asteroid9_5","Asteroid9_6"};
151            std::string Asteroid20[6] = {"Asteroid12_1","Asteroid12_2","Asteroid12_3","Asteroid12_4","Asteroid12_5","Asteroid12_6"};
152
153
154
155    };
156}
157
158#endif /* _FlappyOrx_H__ */
Note: See TracBrowser for help on using the repository browser.