Changeset 10281 for code/trunk/src/orxonox/gamestates
- Timestamp:
- Feb 24, 2015, 10:54:24 PM (10 years ago)
- Location:
- code/trunk/src/orxonox/gamestates
- Files:
-
- 1 added
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
code/trunk/src/orxonox/gamestates/GSLevel.cc
r8858 r10281 29 29 30 30 #include "GSLevel.h" 31 #include "GSLevelMemento.h" 31 32 32 33 #include <OgreCompositorManager.h> … … 37 38 #include "core/input/KeyBinderManager.h" 38 39 #include "core/Core.h" 40 #include "core/CoreIncludes.h" 39 41 #include "core/Game.h" 40 42 #include "core/GameMode.h" … … 54 56 static const std::string __CC_startMainMenu_name = "startMainMenu"; 55 57 static const std::string __CC_changeGame_name = "changeGame"; 58 static const std::string __CC_reloadLevel_name = "reloadLevel"; 56 59 57 60 SetConsoleCommand(__CC_startMainMenu_name, &GSLevel::startMainMenu).deactivate(); 58 61 SetConsoleCommand(__CC_changeGame_name, &GSLevel::changeGame).defaultValues("").deactivate(); 62 SetConsoleCommand(__CC_reloadLevel_name, &GSLevel::reloadLevel).deactivate(); 59 63 60 64 GSLevel::GSLevel(const GameStateInfo& info) … … 108 112 109 113 if (GameMode::isStandalone()) 114 { 110 115 ModifyConsoleCommand(__CC_changeGame_name).activate(); 116 ModifyConsoleCommand(__CC_reloadLevel_name).setObject(this).activate(); 117 } 111 118 } 112 119 … … 140 147 141 148 if (GameMode::isStandalone()) 149 { 142 150 ModifyConsoleCommand(__CC_changeGame_name).deactivate(); 151 ModifyConsoleCommand(__CC_reloadLevel_name).setObject(NULL).deactivate(); 152 } 143 153 } 144 154 … … 185 195 else 186 196 orxout(internal_info) << " Try harder!" << endl; 197 } 198 199 void GSLevel::reloadLevel() 200 { 201 // export all states 202 std::vector<GSLevelMementoState*> states; 203 for (ObjectList<GSLevelMemento>::iterator it = ObjectList<GSLevelMemento>::begin(); it != ObjectList<GSLevelMemento>::end(); ++it) 204 { 205 GSLevelMementoState* state = it->exportMementoState(); 206 if (state) 207 states.push_back(state); 208 } 209 210 // reload level (or better: reload the whole gamestate) 211 this->deactivate(); 212 this->activate(); 213 214 // import all states 215 for (ObjectList<GSLevelMemento>::iterator it = ObjectList<GSLevelMemento>::begin(); it != ObjectList<GSLevelMemento>::end(); ++it) 216 it->importMementoState(states); 217 218 // delete states 219 for (size_t i = 0; i < states.size(); ++i) 220 delete states[i]; 187 221 } 188 222 … … 214 248 Game::getInstance().requestStates("standalone, level"); 215 249 } 250 251 252 253 /////////////////////////////////////////////////////////////////////////// 254 255 RegisterAbstractClass(GSLevelMemento).inheritsFrom(Class(OrxonoxInterface)); 256 257 GSLevelMemento::GSLevelMemento() 258 { 259 RegisterObject(GSLevelMemento); 260 } 216 261 } -
code/trunk/src/orxonox/gamestates/GSLevel.h
r9667 r10281 51 51 static void changeGame(const std::string& level); //!< Terminates the current game and starts a new game. 52 52 53 void reloadLevel(); 54 53 55 protected: 54 56 void loadLevel();
Note: See TracChangeset
for help on using the changeset viewer.