Changeset 11199 for code/branches/presentationFS16/src/modules/hover
- Timestamp:
- May 26, 2016, 3:13:51 PM (9 years ago)
- Location:
- code/branches/presentationFS16/src/modules/hover
- Files:
-
- 8 edited
- 2 copied
Legend:
- Unmodified
- Added
- Removed
-
code/branches/presentationFS16/src/modules/hover/CMakeLists.txt
r11035 r11199 8 8 FlagHUD.cc 9 9 MazeGenerator.cc 10 TFlagsLivesLevelHUD.cc 10 11 ) 11 12 … … 17 18 objects 18 19 overlays 20 pickup 19 21 SOURCE_FILES ${Hover_SRC_FILES} 20 22 ) -
code/branches/presentationFS16/src/modules/hover/Hover.cc
r11071 r11199 24 24 * Co-authors: 25 25 * Cyrill Burgener 26 * Tomer Gidron 26 27 * 27 28 */ … … 33 34 34 35 #include "Hover.h" 35 36 #include "chat/ChatManager.h" 36 37 #include "HoverOrigin.h" 37 38 #include "HoverWall.h" … … 39 40 #include "MazeGenerator.h" 40 41 #include "core/CoreIncludes.h" 42 #include "gamestates/GSLevel.h" 43 #include "HoverShip.h" 44 45 #include "pickup/PickupSpawner.h" 46 #include "pickup/Pickup.h" 41 47 42 48 namespace orxonox … … 51 57 this->numberOfFlags_ = 1; 52 58 this->firstTick_ = true; 59 level = 1; //start at level 1 60 flagsTaken = 0;// took 0 flags in the beginning 61 lives = 3; 62 63 numCells = 0; 64 cellSize = 0; 65 cellHeight = 0; 66 67 bLevelUpgradeHUD = false; 68 69 totFlags = 0; 53 70 54 71 this->setHUDTemplate("HoverHUD"); 55 } 56 57 void Hover::tick(float dt) 58 {59 SUPER(Hover, tick, dt);60 72 73 } 74 75 void Hover::start() 76 { 77 Gametype::start(); 61 78 if(this->firstTick_ && this->origin_) 62 79 { 63 80 this->firstTick_ = false; 64 81 65 int numCells = this->origin_->getNumCells(); 66 int cellSize = this->origin_->getCellSize(); 67 int cellHeight = this->origin_->getCellHeight(); 82 numCells = this->origin_->getNumCells(); 83 cellSize = this->origin_->getCellSize(); 84 cellHeight = this->origin_->getCellHeight(); 85 86 //TODO 87 //create boolean array/vector to assert that no two objects are placed in the same way 88 68 89 69 90 MazeGenerator generator(numCells); … … 81 102 } 82 103 104 105 //Ground 106 for(int i = 0; i<numCells; i++){ 107 for(int j = 0; j<numCells; j++){ 108 StaticEntity* groundCell = new StaticEntity(origin_->getContext()); 109 110 groundCell->addTemplate(origin_->getGroundTemplate()); 111 groundCell->setPosition(get3dCoordinates(i,j,-60)); 112 } 113 114 } 115 116 117 83 118 //Generate inner Walls according to levelcode 84 119 for(int y=0; y<numCells; y++){ 85 120 for(int x=0; x<numCells; x++){ 86 switch(levelcode[ y * numCells + x ]){ 121 switch(levelcode[ y * numCells + x ]) 122 { 87 123 case 1: (new HoverWall(origin_->getContext()))->init(x+1, numCells-y, cellSize, cellHeight, 1); 88 124 break; 89 125 case 3: (new HoverWall(origin_->getContext()))->init(x+1, numCells-y, cellSize, cellHeight, 1); 90 126 case 2: (new HoverWall(origin_->getContext()))->init(x+1, numCells-y, cellSize, cellHeight, 0); 91 default: break; 127 default: 128 break; 92 129 } 93 } 94 } 95 96 //Generate 5 flags randomly 97 for ( int i = 0; i < 5; i++ ) 98 { 99 HoverFlag* flag = new HoverFlag(origin_->getContext()); 100 flag->init(rand()%numCells, rand()%numCells, cellSize); 101 flags_.push_back(flag); 102 } 103 104 }//firsttick end 130 } 131 } 132 133 createFlags(); 134 135 //Generate 3 PickupSpawners randomly (destroy hover pickup) 136 for (int i = 0; i<3; i++) 137 { 138 PickupSpawner* pickupSpawner = new PickupSpawner(origin_->getContext()); 139 140 pickupSpawner->setPosition(get3dCoordinates(rand()%numCells, rand()%numCells, 0.0f)); 141 pickupSpawner->setPickupTemplateName(origin_->getPickupTemplate()); 142 pickupSpawner->setMaxSpawnedItems(3); 143 pickupSpawner->setRespawnTime(30); 144 pickupSpawner->setTriggerDistance(40); 145 // Add pickup spawner to the pickup spawner list 146 pickupSpawners_.push_back(pickupSpawner); 147 } 148 149 //Generate 3 PickupSpawners randomly (speed pickup) 150 for (int i = 0; i<3; i++) 151 { 152 PickupSpawner* pickupSpawner = new PickupSpawner(origin_->getContext()); 153 154 pickupSpawner->setPosition(get3dCoordinates(rand()%numCells, rand()%numCells, 0.0f)); 155 pickupSpawner->setPickupTemplateName(origin_->getPickupTemplateSpeed()); 156 pickupSpawner->setMaxSpawnedItems(3); 157 pickupSpawner->setRespawnTime(30); 158 pickupSpawner->setTriggerDistance(40); 159 // Add pickup spawner to the pickup spawner list 160 pickupSpawners_.push_back(pickupSpawner); 161 } 162 163 //Generate 3 PickupSpawners randomly (shrink pickup) 164 for (int i = 0; i<3; i++) 165 { 166 PickupSpawner* pickupSpawner = new PickupSpawner(origin_->getContext()); 167 168 pickupSpawner->setPosition(get3dCoordinates(rand()%numCells, rand()%numCells, 0.0f)); 169 pickupSpawner->setPickupTemplateName(origin_->getPickupTemplateShrink()); 170 pickupSpawner->setMaxSpawnedItems(3); 171 pickupSpawner->setRespawnTime(30); 172 pickupSpawner->setTriggerDistance(40); 173 // Add pickup spawner to the pickup spawner list 174 pickupSpawners_.push_back(pickupSpawner); 175 } 176 177 //***************************************************************************** 178 179 //Generate destroyable crates randomly on field 180 181 for (int i = 0; i<10; i++){ 182 183 Pawn* crate = new Pawn(origin_->getContext()); 184 185 crate->addTemplate(origin_->getObstacleTemplate()); 186 crate->setPosition(get3dCoordinates(rand()%numCells, rand()%numCells, 43.0f)); 187 188 189 } 190 191 192 193 194 //If no lives are left, end game 195 if(lives <= 0) 196 { 197 GSLevel::startMainMenu(); 198 } 199 200 } 201 } 202 203 204 // generate new Flags 205 void Hover::createFlags() 206 { 207 //TODO 208 //Generate flags randomly using bool array 209 210 //Generate 5 flags randomly on field 211 for ( int i = 0; i < 5; i++ ) 212 { 213 HoverFlag* flag = new HoverFlag(origin_->getContext()); 214 flag->init(rand()%numCells, rand()%numCells, cellSize); 215 flags_.push_back(flag); 216 217 218 219 if(flags_[i]->getPosition() == get3dCoordinates(0,0,-60)) 220 { 221 flags_[i]->destroyLater(); 222 flags_.erase(flags_.begin()+i); 223 } 224 } 225 226 } 227 228 void Hover::tick(float dt) 229 { 230 SUPER(Hover, tick, dt); 231 105 232 106 233 // Check if ship collided with one of the flags 107 for ( unsigned int i = 0; i < flags_.size(); i++ ){ 108 if(flags_[i]->getCollided()){ 234 for ( unsigned int i = 0; i < flags_.size(); i++ ) 235 { 236 if(flags_[i]->getCollided()) 237 { 109 238 flags_[i]->destroyLater(); 110 239 flags_.erase (flags_.begin()+i); 111 } 240 totFlags++; 241 if(flags_.size()<=0){ 242 //ChatManager::message("Level Up!"); 243 244 levelUp(); 245 } 246 } 247 112 248 } 113 249 numberOfFlags_ = flags_.size(); 250 251 if(lives <= 0){ 252 GSLevel::startMainMenu(); 253 } 254 } 255 256 //start new level - call to create new flags 257 void Hover::levelUp() 258 { 259 level++; 260 //increment lives after every 4 levels 261 if(level%4 == 0) 262 { 263 lives++; 264 } 265 createFlags(); 266 toggleShowLevel(); 267 showLevelTimer.setTimer(2.0f, false, createExecutor(createFunctor(&Hover::toggleShowLevel, this))); 268 269 //spawn one additional crate randomly 270 Pawn* crate = new Pawn(origin_->getContext()); 271 crate->addTemplate(origin_->getObstacleTemplate()); 272 crate->setPosition(get3dCoordinates(rand()%numCells, rand()%numCells, 43.0f)); 273 274 } 275 276 Vector3 Hover::get3dCoordinates(int x, int y, float heightOffset) 277 { 278 return Vector3(x*cellSize*1.0f + cellSize/2, heightOffset, y*cellSize*1.0f + cellSize/2); 279 } 280 281 //if killed, subtract number of lives. If lives == 0, end game 282 void Hover::costLife() 283 { 284 lives--; 285 if (lives <= 0) 286 GSLevel::startMainMenu(); 114 287 } 115 288 } -
code/branches/presentationFS16/src/modules/hover/Hover.h
r11071 r11199 24 24 * Co-authors: 25 25 * Cyrill Burgener 26 * Tomer Gidron 26 27 * 27 28 */ … … 37 38 38 39 #include "HoverPrereqs.h" 40 #include "HoverShip.h" 39 41 40 42 #include <vector> … … 42 44 #include "gametypes/Gametype.h" 43 45 #include "HoverOrigin.h" 46 #include "pickup/PickupSpawner.h" 44 47 45 48 namespace orxonox … … 55 58 { this->origin_ = origin; } 56 59 60 void start(); 61 void createFlags(); 62 void levelUp(); 63 void endLevel(); 64 void costLife(); 65 57 66 inline int getNumberOfFlags() const 58 67 { return this->numberOfFlags_; } 59 68 69 virtual Vector3 get3dCoordinates(int x, int y, float heightOffset); 70 71 inline int getTotFlags() const 72 { return this->totFlags; } 73 74 inline int getLives() const 75 { return this->lives; } 76 77 inline int getLevel() const 78 { return this->level; } 79 80 bool bLevelUpgradeHUD; 81 60 82 private: 83 61 84 WeakPtr<HoverOrigin> origin_; 62 85 std::vector<HoverFlag*> flags_; 63 86 int numberOfFlags_; 64 87 bool firstTick_; 88 int level; 89 int lives; 90 int flagsTaken; 91 92 int cellSize; 93 int cellHeight; 94 int numCells; 95 96 int totFlags; 97 98 std::vector<PickupSpawner*> pickupSpawners_; 99 100 void toggleShowLevel(){bLevelUpgradeHUD = !bLevelUpgradeHUD;} 101 102 Timer showLevelTimer; 65 103 }; 66 104 } -
code/branches/presentationFS16/src/modules/hover/HoverFlag.cc
r11099 r11199 87 87 model_ = new Model(this->getContext()); 88 88 model_->setMeshSource("ss_flag_eu.mesh"); 89 model_->setScale3D(Vector3( 5, 5, 5));90 model_->setPosition(Vector3(xCoordinate*cellSize*1.0f + cellSize/2, 10.0f,yCoordinate*cellSize*1.0f + cellSize/2));89 model_->setScale3D(Vector3(30, 30, 30)); 90 model_->setPosition(Vector3(xCoordinate*cellSize*1.0f + cellSize/2,50.0f,yCoordinate*cellSize*1.0f + cellSize/2)); 91 91 92 92 this->attach(model_); 93 93 94 94 cs_ = new BoxCollisionShape(this->getContext()); 95 cs_->setHalfExtents(Vector3( 5, 5, 5));95 cs_->setHalfExtents(Vector3(30, 30, 30)); 96 96 cs_->setPosition(Vector3(xCoordinate*cellSize*1.0f + cellSize/2,0.0f,yCoordinate*cellSize*1.0f + cellSize/2)); 97 97 -
code/branches/presentationFS16/src/modules/hover/HoverOrigin.cc
r11071 r11199 23 23 * Manuel Meier 24 24 * Co-authors: 25 * ...25 * Tomer Gidron 26 26 * 27 27 */ … … 45 45 RegisterObject(HoverOrigin); 46 46 checkGametype(); 47 48 //Initialization of variables (not really needed) 49 50 pickupTemplate_ = ""; 51 pickupRepresentationTemplate_ = ""; 52 53 pickupTemplateSpeed_ = ""; 54 pickupRepresentationTemplateSpeed_ = ""; 55 56 57 pickupTemplateShrink_ = ""; 58 pickupRepresentationTemplateShrink_ = ""; 47 59 } 48 60 … … 54 66 XMLPortParam(HoverOrigin, "cellSize", setCellSize, getCellSize, xmlelement, mode); 55 67 XMLPortParam(HoverOrigin, "cellHeight", setCellHeight, getCellHeight, xmlelement, mode); 68 XMLPortParam(HoverOrigin, "wallThickness", setWallThickness, getWallThickness, xmlelement, mode); 69 XMLPortParam(HoverOrigin, "pickuptemplate", setPickupTemplate, getPickupTemplate, xmlelement, mode); 70 XMLPortParam(HoverOrigin, "pickuprepresentationtemplate", setPickupRepresentationTemplate, getPickupRepresentationTemplate, xmlelement, mode); 71 XMLPortParam(HoverOrigin, "pickuptemplatespeed", setPickupTemplateSpeed, getPickupTemplateSpeed, xmlelement, mode); 72 XMLPortParam(HoverOrigin, "pickuprepresentationtemplatespeed", setPickupRepresentationTemplateSpeed, getPickupRepresentationTemplateSpeed, xmlelement, mode); 73 XMLPortParam(HoverOrigin, "obstacletemplate", setObstacleTemplate, getObstacleTemplate, xmlelement, mode); 74 XMLPortParam(HoverOrigin, "pickuptemplateshrink", setPickupTemplateShrink, getPickupTemplateShrink, xmlelement, mode); 75 XMLPortParam(HoverOrigin, "pickuprepresentationtemplateshrink", setPickupRepresentationTemplateShrink, getPickupRepresentationTemplateShrink, xmlelement, mode); 76 XMLPortParam(HoverOrigin, "groundtemplate", setGroundTemplate, getGroundTemplate, xmlelement, mode); 56 77 } 78 57 79 58 80 void HoverOrigin::checkGametype() -
code/branches/presentationFS16/src/modules/hover/HoverOrigin.h
r11099 r11199 23 23 * Manuel Meier 24 24 * Co-authors: 25 * ...25 * Tomer Gidron 26 26 * 27 27 */ … … 66 66 { return this->cellHeight_; } 67 67 68 inline void setWallTickness(int wallTickness) 69 { this->wallTickness_ = wallTickness; } 70 inline int getWallTickness() const 71 { return this->wallTickness_; } 72 73 //pickup template set and get for destroy hover pickup 74 75 inline void setPickupTemplate(std::string pickupTemplate) 76 { this->pickupTemplate_ = pickupTemplate; } 77 inline std::string getPickupTemplate() const 78 { return this->pickupTemplate_; } 79 80 inline void setPickupRepresentationTemplate(std::string pickupRepresenationaTemplate) 81 { this->pickupRepresentationTemplate_ = pickupRepresenationaTemplate; } 82 inline std::string getPickupRepresentationTemplate() const 83 { return this->pickupRepresentationTemplate_; } 84 85 //pickup template get and set for damage hover pickup 86 87 inline void setPickupTemplateSpeed(std::string pickupTemplateSpeed) 88 { this->pickupTemplateSpeed_ = pickupTemplateSpeed; } 89 inline std::string getPickupTemplateSpeed() const 90 { return this->pickupTemplateSpeed_; } 91 92 inline void setPickupRepresentationTemplateSpeed(std::string pickupRepresenationaTemplateSpeed) 93 { this->pickupRepresentationTemplateSpeed_ = pickupRepresenationaTemplateSpeed; } 94 inline std::string getPickupRepresentationTemplateSpeed() const 95 { return this->pickupRepresentationTemplateSpeed_; } 96 97 98 //pickup template get and set for shrink hover pickup 99 100 inline void setPickupTemplateShrink(std::string pickupTemplateShrink) 101 { this->pickupTemplateShrink_ = pickupTemplateShrink; } 102 inline std::string getPickupTemplateShrink() const 103 { return this->pickupTemplateShrink_; } 104 105 inline void setPickupRepresentationTemplateShrink(std::string pickupRepresenationaTemplateShrink) 106 { this->pickupRepresentationTemplateShrink_ = pickupRepresenationaTemplateShrink; } 107 inline std::string getPickupRepresentationTemplateShrink() const 108 { return this->pickupRepresentationTemplateShrink_; } 109 110 //get and set for obstacle template 111 112 inline void setObstacleTemplate(std::string obstacleTemplate) 113 { this->obstacleTemplate_ = obstacleTemplate; } 114 inline std::string getObstacleTemplate() const 115 { return this->obstacleTemplate_; } 116 117 //get and set for ground template 118 119 inline void setGroundTemplate(std::string groundTemplate) 120 { this->groundTemplate_ = groundTemplate; } 121 inline std::string getGroundTemplate() const 122 { return this->groundTemplate_; } 123 68 124 private: 69 125 void checkGametype(); 126 70 127 71 128 int numCells_; 72 129 int cellSize_; 73 130 int cellHeight_; 131 int wallThickness_; 132 133 // Tempaltes for the destroy hover pickup 134 std::string pickupTemplate_; 135 std::string pickupRepresentationTemplate_; 136 137 // Tempaltes for the damage hover pickup 138 std::string pickupTemplateSpeed_; 139 std::string pickupRepresentationTemplateSpeed_; 140 141 // Tempaltes for the shrink hover pickup 142 std::string pickupTemplateShrink_; 143 std::string pickupRepresentationTemplateShrink_; 144 145 //Template for crate obstacle 146 std::string obstacleTemplate_; 147 148 //Template for ground cell 149 std::string groundTemplate_; 74 150 }; 75 151 } -
code/branches/presentationFS16/src/modules/hover/HoverShip.cc
r11041 r11199 33 33 #include "core/CoreIncludes.h" 34 34 #include "core/XMLPort.h" 35 #include "Hover.h" 36 //#include "NewHumanController.h" 35 37 36 38 #include <BulletCollision/NarrowPhaseCollision/btManifoldPoint.h> … … 112 114 if (bBoost && this->isFloor_) 113 115 { 116 114 117 this->setVelocity( 115 118 this->getVelocity().x, … … 120 123 } 121 124 } 125 126 Hover* HoverShip::getGame() 127 { 128 if (game == nullptr) 129 { 130 for (Hover* hover : ObjectList<Hover>()) 131 game = hover; 132 } 133 return game; 134 } 135 136 void HoverShip::death() 137 { 138 getGame()->costLife(); 139 SpaceShip::death(); 140 } 122 141 } -
code/branches/presentationFS16/src/modules/hover/HoverShip.h
r11071 r11199 34 34 35 35 #include "HoverPrereqs.h" 36 #include "Hover.h" 36 37 37 38 #include "worldentities/pawns/SpaceShip.h" … … 69 70 virtual void boost(bool bBoost) override; 70 71 72 protected: 73 virtual void death() override; 74 71 75 private: 76 Hover* getGame(); 77 WeakPtr<Hover> game; 72 78 float jumpBoost_; 73 79 bool isFloor_;
Note: See TracChangeset
for help on using the changeset viewer.