Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

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

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

svn commit -m

File size: 6.3 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#include <vector>
43
44namespace orxonox
45{
46    struct Circle{
47        int r;
48        int x;
49        int y;
50        Circle(int new_r, int new_x, int new_y){
51            r=new_r;
52            x=new_x;
53            y=new_y;
54        }
55        Circle(){
56            r=0;
57            x=0;
58            y=0;
59        }
60    };
61
62    class _FlappyOrxExport FlappyOrx : public Deathmatch
63    {
64        public:
65            FlappyOrx(Context* context);
66
67            virtual void start() override;
68            virtual void end() override;
69            virtual void death();
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
90            bool isDead();
91            void setDead(bool value);
92           
93            int lives;
94            int multiplier;
95            bool bEndGame;
96            bool bShowLevel;
97            bool bIsDead;
98            bool firstGame;
99            std::string sDeathMessage;
100            std::queue<int> tubes;
101            std::queue<MovableEntity*> asteroids;
102            int spawnDistance;
103            int tubeOffsetX;
104
105        private:
106            void toggleShowLevel(){bShowLevel = !bShowLevel;}
107           
108            const static int nAst = 7;
109            Circle Asteroids[nAst];
110
111            void ClearAsteroids(){
112                for(int i = 0; i<this->nAst; i++){
113                    Asteroids[i].r=0;
114                }
115            }
116
117           
118            bool Collision(Circle &c1, Circle &c2){
119                if(c1.r==0 || c2.r==0)
120                    return false;
121                int x = c1.x - c2.x;
122                int y = c1.y - c2.y;
123                int r = c1.r + c2.r;
124
125                return x*x+y*y<r*r*1.5;
126            }
127
128            int addIfPossible(Circle c){
129                int i;
130                for(i=0; i<this->nAst && this->Asteroids[i].r!=0;i++){
131                    if(Collision(c,this->Asteroids[i])){
132                        return 0;
133                    }
134                }
135                if(i==nAst)
136                    return 2;
137                this->Asteroids[i].x=c.x;
138                this->Asteroids[i].y=c.y;
139                this->Asteroids[i].r=c.r;
140                createAsteroid(c);
141                return 1;
142            }
143           
144           
145
146            FlappyOrxShip* getPlayer();
147            WeakPtr<FlappyOrxCenterPoint> center_;
148            WeakPtr<FlappyOrxShip> player;
149
150            Timer enemySpawnTimer;
151            Timer comboTimer;
152            Timer showLevelTimer;
153            //Context* context;
154            int level;
155            int point;
156            bool b_combo;
157
158            const int NUM_ASTEROIDS = 5;
159
160
161           const std::string Asteroid5[5] = {"Asteroid3_1","Asteroid3_2","Asteroid3_3","Asteroid3_4","Asteroid3_5"};
162           const std::string Asteroid10[5] = {"Asteroid6_1","Asteroid6_2","Asteroid6_3","Asteroid6_4","Asteroid6_5"};
163           const std::string Asteroid15[5] = {"Asteroid9_1","Asteroid9_2","Asteroid9_3","Asteroid9_4","Asteroid9_5"};
164           const std::string Asteroid20[5] = {"Asteroid12_1","Asteroid12_2","Asteroid12_3","Asteroid12_4","Asteroid12_5"};
165           
166            std::vector<std::string> DeathMessage10 = {
167                "You should really try that again",
168                "You can do better, can you?",
169                "Hey maybe you get a participation award, that's good isn't it?",
170                "Congratulations, you get a medal, a wooden one",
171                "That was flappin bad!",
172                "Getting closer to something",
173                "Well, that was a waste of time"};
174            std::vector<std::string> DeathMessage30 = {
175                "Getting better!",
176                "Training has paid off, huh?",
177                "Good average!",
178                "That was somehow enjoyable to watch",
179                "Flappin average",
180                "That wasn't crap, not bad"};
181            std::vector<std::string> DeathMessage50 = {
182                "Flappin great",
183                "Good job!",
184                "Okay, we give you a shiny medal, not a golden one, tough",
185                "Maybe you should do that professionally",
186                "That was really good,!",
187                "We are proud of you"};
188            std::vector<std::string> DeathMessageover50 = {
189                "You're flappin amazing",
190                "Fucking great job",
191                "Wow, we're really impressed",
192                "We will honor you!",
193                "Please do that again!",
194                "Take that golden medal! You've earned it"};
195           
196
197
198
199    };
200}
201
202#endif /* _FlappyOrx_H__ */
Note: See TracBrowser for help on using the repository browser.