- Timestamp:
- Dec 5, 2018, 11:54:24 AM (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
code/branches/WorldMap_HS18/src/orxonox/controllers/StoryModeController.cc
r12131 r12151 21 21 * 22 22 * Author: 23 * Fabian 'x3n' Landau23 * Joel Lingg 24 24 * Co-authors: 25 25 * ... … … 29 29 #include "StoryModeController.h" 30 30 31 namespace orxonox { 32 RegisterClass(StoryModeController); 31 33 32 #include "core/CoreIncludes.h" 33 #include "worldentities/ControllableEntity.h" 34 #include "graphics/Camera.h" 35 #include "SMCoord.h" 36 #include "core/XMLPort.h" 37 #include "gamestates/GSLevel.h" 38 namespace orxonox 39 { 40 RegisterClass(StoryModeController); 34 StoryModeController::StoryModeController(Context * context): SpaceShip(context) { 41 35 42 StoryModeController::StoryModeController(Context* context) : SpaceShip(context) 43 { 44 RegisterObject(StoryModeController); 45 float time_; 46 selectedPos_ = new SMCoord(0); 47 moveForward_= false; 48 moveBackward_=false; 49 boostPressed_=false; 50 dtime_=50; 36 RegisterObject(StoryModeController); 51 37 52 53 } 54 StoryModeController::~StoryModeController() 55 { 56 delete selectedPos_; 57 selectedPos_ = nullptr; 38 //initiate all variables according to our needs 39 selectedPos_ = new SMCoord(0); 40 moveForward_ = false; 41 moveBackward_ = false; 42 boostPressed_ = false; 43 init_ = true; 44 dtime_ = 50; 45 time_ = dtime_ + 1; 46 updatePosition(); 58 47 59 } 60 //void StoryModeController:: switchCamera(){}; 61 void StoryModeController::updatePosition(){ 62 Vector3 pos = selectedPos_->get3dcoordinate(); 63 setPosition(pos); 64 } 65 void StoryModeController::setLocation(int index){ 66 selectedPos_->set(index); 48 } 49 StoryModeController::~StoryModeController() { 50 delete selectedPos_; 51 selectedPos_ = nullptr; 52 53 } 54 55 //Pre:selectedPos_ needs to be defined 56 // Post: the position of the camera will be updated 57 void StoryModeController::updatePosition() { 58 Vector3 pos = selectedPos_ -> get3dcoordinate(); 59 setPosition(pos); 60 } 61 62 //Pre: @index integer 63 //post: our new position is updated in selectedPos_ 64 void StoryModeController::setLocation(int index) { 65 selectedPos_ -> set(index); 66 } 67 68 //Function which is repeated anz dt. 69 void StoryModeController::tick(float dt) { 70 //Passing arguments to SpaceShip 71 SUPER(StoryModeController, tick, dt); 72 73 Camera * camera = this -> getCamera(); 74 75 if (init_ && camera != nullptr) { 76 camera -> setPosition(0, 0, 200); 77 camera -> setOrientation(Vector3::UNIT_Z, Degree(0)); 78 init_ = false; 67 79 } 68 80 69 void StoryModeController::tick(float dt) 70 { 71 //orxout(internal_error) << "Hi" << endl; 72 SUPER(StoryModeController, tick, dt); 73 time_ +=dt; 74 Camera* camera = this->getCamera(); 75 76 81 //As I dont want to update positions every time (to prevent multiple key presses) time_ is raised untill a sertain dtime_ 82 time_++; 83 if (time_ >= dtime_) { 77 84 78 if(time_>= dtime_*dt){ 79 80 time_=0; 81 82 if(moveForward_ == true){ 83 orxout(internal_error) << "Position update" << endl; 84 moveForward_ = false; 85 selectedPos_->set(selectedPos_->getIndex()+1); 86 updatePosition(); 87 } 85 time_ = 0; 88 86 89 if(moveBackward_ == true){ 90 orxout(internal_error) << "Position update" << endl; 91 moveBackward_ = false; 92 selectedPos_->set(selectedPos_->getIndex()-1); 93 updatePosition(); 94 } 87 if (moveForward_ == true) { 88 moveForward_ = false; 89 selectedPos_ -> set(selectedPos_ -> getIndex() + 1); 90 updatePosition(); 91 } 95 92 96 if(boostPressed_ == true){ 97 boostPressed_ = false; 98 chooseGame(); 99 } 93 if (moveBackward_ == true) { 94 moveBackward_ = false; 95 selectedPos_ -> set(selectedPos_ -> getIndex() - 1); 96 updatePosition(); 97 } 100 98 101 102 if (camera != nullptr) 103 { 99 if (boostPressed_ == true) { 100 boostPressed_ = false; 101 chooseGame(); 102 } 104 103 105 Vector3 epos = selectedPos_->get3dcoordinate(); 106 orxout(internal_error) << "ex: "<< epos.x <<" ey: "<< epos.y << " ez: " << epos.z<< endl; 107 camera->setPosition(-(epos.x),-(epos.y),-(epos.z)+1000); 108 camera->setOrientation(Vector3::UNIT_Z, Degree(0)); 104 //updates the cameraposition 105 if (camera != nullptr) { 109 106 110 } 111 } 112 107 camera -> setPosition(0, 0, 200); 108 camera -> setOrientation(Vector3::UNIT_Z, Degree(0)); 109 110 } 113 111 } 114 112 115 void StoryModeController::moveFrontBack(const Vector2& value) 116 { 117 // orxout(internal_error) << "moveFrontBack" << endl; 113 } 114 115 //Post: The game is choosen acording to the index in selectedPos_. This one must be extended if more games want to be loaded 116 void StoryModeController::chooseGame() { 117 int ind = selectedPos_ -> getIndex(); 118 std::string name = "changeGame "; 119 switch (ind) { 120 case 0: 121 name = name + "gallery.oxw"; 122 break; 123 case 1: 124 name = name + "pong.oxw"; 125 break; 126 case 2: 127 name = name + "towerDefense.oxw"; 128 break; 129 case 3: 130 name = name + "SOB.oxw"; 131 break; 132 133 default: 134 name = name + "MapExample.oxw"; 135 break; 136 } 137 CommandExecutor::execute(name); 138 139 } 140 141 //decides if we move left or right 142 void StoryModeController::moveRightLeft(const Vector2 & value) { 143 if (!moveForward_ && !moveBackward_ && !boostPressed_) { 144 if (value.x > 0) { 145 moveForward_ = false; 146 moveBackward_ = true; 147 } else { 148 moveBackward_ = false; 149 moveForward_ = true; 150 } 118 151 } 119 152 120 void StoryModeController::chooseGame() 121 { 122 int ind = selectedPos_->getIndex(); 123 std::string name = "changeGame "; 124 switch(ind){ 125 case 0: 126 name = name + "pong.oxw"; 127 break; 128 case 1: 129 130 break; 131 case 2: 132 133 break; 134 case 3: 135 136 break; 137 case 4: 138 139 break; 140 case 5: 141 142 break; 143 case 6: 144 145 break; 146 case 7: 147 148 break; 149 case 8: 150 151 break; 152 default: 153 break; 154 } 155 CommandExecutor::execute(name); 156 /*for (GSLevel* level : ObjectList<GSLevel>()) 157 level->changeGame(name);*/ 158 //hideAllMenuSheets(); 153 } 154 155 //decides to choose the game 156 void StoryModeController::boost(bool bBoost) { 157 if (!moveForward_ && !moveBackward_ && !boostPressed_) { 158 boostPressed_ = true; 159 159 } 160 } 160 161 162 //Some functions I didn't use, but can be used to enhance your map. Just orientate at the function above 163 void StoryModeController::rotateYaw(const Vector2 & value) {} 164 void StoryModeController::rotatePitch(const Vector2 & value) {} 165 void StoryModeController::rotateRoll(const Vector2 & value) {} 166 void StoryModeController::moveFrontBack(const Vector2 & value) {} 167 void StoryModeController::fire(unsigned int a) {} 168 void StoryModeController::fired(unsigned int b) {} 161 169 162 void StoryModeController::moveRightLeft(const Vector2& value)163 {164 if(!moveForward_&&!moveBackward_){165 if (value.x>0){166 orxout(internal_error) << "Right" << endl;167 moveForward_ =true;168 moveBackward_ =false;169 } else {170 orxout(internal_error) << "Left" << endl;171 moveBackward_ = true;172 moveForward_ = false;173 }174 }175 176 }177 178 void StoryModeController::rotateYaw(const Vector2& value){179 //orxout(internal_error) << "RightLeft" << endl;180 }181 void StoryModeController::rotatePitch(const Vector2& value){182 //orxout(internal_error) << "RightLeft" << endl;183 }184 void StoryModeController::rotateRoll(const Vector2& value){185 //orxout(internal_error) << "RightLeft" << endl;186 }187 void StoryModeController::fire(unsigned int a){}188 void StoryModeController::fired(unsigned int b){}189 void StoryModeController::boost(bool bBoost){190 orxout(internal_error) << "Boost" << endl;191 boostPressed_ = true;192 }193 170 }
Note: See TracChangeset
for help on using the changeset viewer.