Changeset 2087 for code/trunk/src/orxonox/gamestates/GSDedicated.cc
- Timestamp:
- Nov 1, 2008, 7:04:09 PM (16 years ago)
- Location:
- code/trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
code/trunk
- Property svn:mergeinfo changed
-
code/trunk/src/orxonox/gamestates/GSDedicated.cc
r1790 r2087 30 30 #include "GSDedicated.h" 31 31 32 #include <OgreRoot.h>33 #include <OgreSceneManager.h>34 #include "core/ConsoleCommand.h"35 32 #include "core/CommandLine.h" 36 #include "core/ Loader.h"33 #include "core/Core.h" 37 34 #include "network/Server.h" 38 #include "objects/Tickable.h"39 #include "GraphicsEngine.h"40 #include "Settings.h"41 35 42 36 namespace orxonox … … 44 38 GSDedicated::GSDedicated() 45 39 : GameState<GSRoot>("dedicated") 46 , timeFactor_(0)47 40 , server_(0) 48 , sceneManager_(0)49 , startLevel_(0)50 41 { 51 42 } … … 57 48 void GSDedicated::enter() 58 49 { 59 Settings::_getInstance().bHasServer_ = true;50 Core::setHasServer(true); 60 51 61 // create Ogre SceneManager for the level 62 this->sceneManager_ = Ogre::Root::getSingleton().createSceneManager(Ogre::ST_GENERIC, "LevelSceneManager"); 63 COUT(4) << "Created SceneManager: " << sceneManager_->getName() << std::endl; 52 this->server_ = new network::Server(CommandLine::getValue("port")); 53 COUT(0) << "Loading scene in server mode" << std::endl; 64 54 65 // temporary hack 66 GraphicsEngine::getInstance().setLevelSceneManager(this->sceneManager_); 67 68 // reset game speed to normal 69 timeFactor_ = 1.0f; 70 71 int serverPort = CommandLine::getArgument<int>("port")->getValue(); 72 this->server_ = new network::Server(serverPort); 73 74 // call the loader 75 COUT(0) << "Loading level..." << std::endl; 76 startLevel_ = new Level(Settings::getDataPath() + "levels/sample.oxw"); 77 Loader::open(startLevel_); 55 GSLevel::enter(0); 78 56 79 57 server_->open(); 80 81 // add console commands82 FunctorMember01<GSDedicated, float>* functor = createFunctor(&GSDedicated::setTimeFactor);83 functor->setObject(this);84 CommandExecutor::addConsoleCommandShortcut(createConsoleCommand(functor, "setTimeFactor")).accessLevel(AccessLevel::Offline).defaultValue(0, 1.0);;85 58 } 86 59 87 60 void GSDedicated::leave() 88 61 { 89 // TODO: Remove and destroy console command 90 91 Loader::unload(startLevel_); 92 delete this->startLevel_; 62 GSLevel::leave(); 93 63 94 64 this->server_->close(); 95 65 delete this->server_; 96 66 97 Ogre::Root::getSingleton().destroySceneManager(this->sceneManager_); 98 99 Settings::_getInstance().bHasServer_ = false; 67 Core::setHasServer(false); 100 68 } 101 69 102 70 void GSDedicated::ticked(const Clock& time) 103 71 { 104 // Call the scene objects 105 for (ObjectList<Tickable>::iterator it = ObjectList<Tickable>::begin(); it; ++it) 106 it->tick(time.getDeltaTime() * this->timeFactor_); 107 72 GSLevel::ticked(time); 108 73 server_->tick(time.getDeltaTime()); 109 74 this->tickChild(time); 110 75 } 111 112 /**113 @brief114 Changes the speed of Orxonox115 */116 void GSDedicated::setTimeFactor(float factor)117 {118 this->timeFactor_ = factor;119 }120 76 }
Note: See TracChangeset
for help on using the changeset viewer.