Changeset 2023 for code/branches/objecthierarchy/src/orxonox/gamestates
- Timestamp:
- Oct 27, 2008, 10:56:51 PM (16 years ago)
- Location:
- code/branches/objecthierarchy/src/orxonox/gamestates
- Files:
-
- 14 edited
Legend:
- Unmodified
- Added
- Removed
-
code/branches/objecthierarchy/src/orxonox/gamestates/GSClient.cc
r2004 r2023 40 40 41 41 GSClient::GSClient() 42 : G SLevel("client")42 : GameState<GSGraphics>("client") 43 43 , client_(0) 44 44 { … … 53 53 Core::setIsClient(true); 54 54 55 GSLevel::enter();56 57 55 this->client_ = new network::Client(CommandLine::getValue("ip").getString(), CommandLine::getValue("port")); 58 56 … … 60 58 ThrowException(InitialisationFailed, "Could not establish connection with server."); 61 59 60 GSLevel::enter(this->getParent()->getViewport()); 61 62 62 client_->tick(0); 63 64 // level is loaded: we can start capturing the input65 InputManager::getInstance().requestEnterState("game");66 63 } 67 64 68 65 void GSClient::leave() 69 66 { 70 InputManager::getInstance().requestLeaveState("game"); 71 72 // TODO: How do we unload the level in client mode? 67 GSLevel::leave(); 73 68 74 69 client_->closeConnection(); … … 76 71 // destroy client 77 72 delete this->client_; 78 79 GSLevel::leave();80 73 81 74 Core::setIsClient(false); -
code/branches/objecthierarchy/src/orxonox/gamestates/GSClient.h
r1755 r2023 33 33 #include "network/NetworkPrereqs.h" 34 34 #include "GSLevel.h" 35 #include "GSGraphics.h" 35 36 36 37 namespace orxonox 37 38 { 38 class _OrxonoxExport GSClient : public G SLevel39 class _OrxonoxExport GSClient : public GameState<GSGraphics>, public GSLevel 39 40 { 40 41 public: -
code/branches/objecthierarchy/src/orxonox/gamestates/GSDedicated.cc
r2010 r2023 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"37 #include "core/XMLFile.h"38 33 #include "core/Core.h" 39 34 #include "network/Server.h" 40 #include "objects/Tickable.h"41 #include "Settings.h"42 #include "GraphicsEngine.h"43 35 44 36 namespace orxonox … … 46 38 GSDedicated::GSDedicated() 47 39 : GameState<GSRoot>("dedicated") 48 , timeFactor_(0)49 40 , server_(0) 50 , sceneManager_(0)51 , startFile_(0)52 41 { 53 42 } … … 61 50 Core::setHasServer(true); 62 51 63 // create Ogre SceneManager for the level 64 this->sceneManager_ = Ogre::Root::getSingleton().createSceneManager(Ogre::ST_GENERIC, "LevelSceneManager"); 65 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; 66 54 67 // temporary hack 68 GraphicsEngine::getInstance().setLevelSceneManager(this->sceneManager_); 69 70 // reset game speed to normal 71 timeFactor_ = 1.0f; 72 73 this->server_ = new network::Server(CommandLine::getValue("port")); 74 75 // call the loader 76 COUT(0) << "Loading level..." << std::endl; 77 startFile_ = new XMLFile(Settings::getDataPath() + "levels/sample.oxw"); 78 Loader::open(startFile_); 55 GSLevel::enter(0); 79 56 80 57 server_->open(); 81 82 // add console commands83 FunctorMember01<GSDedicated, float>* functor = createFunctor(&GSDedicated::setTimeFactor);84 functor->setObject(this);85 CommandExecutor::addConsoleCommandShortcut(createConsoleCommand(functor, "setTimeFactor")).accessLevel(AccessLevel::Offline).defaultValue(0, 1.0);;86 58 } 87 59 88 60 void GSDedicated::leave() 89 61 { 90 // TODO: Remove and destroy console command 91 92 Loader::unload(startFile_); 93 delete this->startFile_; 62 GSLevel::leave(); 94 63 95 64 this->server_->close(); 96 65 delete this->server_; 97 98 Ogre::Root::getSingleton().destroySceneManager(this->sceneManager_);99 66 100 67 Core::setHasServer(false); … … 103 70 void GSDedicated::ticked(const Clock& time) 104 71 { 105 // Call the scene objects 106 for (ObjectList<Tickable>::iterator it = ObjectList<Tickable>::begin(); it; ++it) 107 it->tick(time.getDeltaTime() * this->timeFactor_); 108 72 GSLevel::ticked(time); 109 73 server_->tick(time.getDeltaTime()); 110 74 this->tickChild(time); 111 75 } 112 113 /**114 @brief115 Changes the speed of Orxonox116 */117 void GSDedicated::setTimeFactor(float factor)118 {119 this->timeFactor_ = factor;120 }121 76 } -
code/branches/objecthierarchy/src/orxonox/gamestates/GSDedicated.h
r2010 r2023 32 32 #include "OrxonoxPrereqs.h" 33 33 #include "network/NetworkPrereqs.h" 34 #include "GSLevel.h" 34 35 #include "GSRoot.h" 35 36 36 37 namespace orxonox 37 38 { 38 class _OrxonoxExport GSDedicated : public GameState<GSRoot> 39 class _OrxonoxExport GSDedicated : public GameState<GSRoot>, public GSLevel 39 40 { 40 41 public: 41 42 GSDedicated(); 42 43 ~GSDedicated(); 43 44 void setTimeFactor(float factor);45 float getTimeFactor() { return this->timeFactor_; }46 44 47 45 private: … … 50 48 void ticked(const Clock& time); 51 49 52 void loadLevel();53 void unloadLevel();54 55 float timeFactor_; //!< A factor to change the gamespeed56 50 network::Server* server_; 57 Ogre::SceneManager* sceneManager_;58 XMLFile* startFile_; //!< current hard coded default level59 51 }; 60 52 } -
code/branches/objecthierarchy/src/orxonox/gamestates/GSGUI.cc
r1755 r2023 31 31 32 32 #include <OgreViewport.h> 33 #include "GraphicsEngine.h"34 33 #include "core/input/InputManager.h" 35 34 #include "core/input/SimpleInputState.h" -
code/branches/objecthierarchy/src/orxonox/gamestates/GSGraphics.cc
r2013 r2023 116 116 117 117 // HACK: temporary: 118 graphicsEngine_->renderWindow_ = this->renderWindow_;119 graphicsEngine_->root_ = this->ogreRoot_;120 graphicsEngine_->viewport_ = this->viewport_;118 //graphicsEngine_->renderWindow_ = this->renderWindow_; 119 //graphicsEngine_->root_ = this->ogreRoot_; 120 //graphicsEngine_->viewport_ = this->viewport_; 121 121 122 122 … … 134 134 // Load the InGameConsole 135 135 console_ = new InGameConsole(); 136 console_->initialise( );136 console_->initialise(this->renderWindow_->getWidth(), this->renderWindow_->getHeight()); 137 137 138 138 // load the CEGUI interface -
code/branches/objecthierarchy/src/orxonox/gamestates/GSIOConsole.cc
r2013 r2023 36 36 37 37 #include "core/ConsoleCommand.h" 38 #include "GraphicsEngine.h"39 38 40 39 namespace orxonox -
code/branches/objecthierarchy/src/orxonox/gamestates/GSLevel.cc
r2010 r2023 30 30 #include "GSLevel.h" 31 31 32 #include <OgreSceneManager.h>33 #include <OgreRoot.h>34 32 #include "core/input/InputManager.h" 35 33 #include "core/input/SimpleInputState.h" … … 41 39 #include "core/ConfigValueIncludes.h" 42 40 #include "core/CoreIncludes.h" 41 #include "core/Core.h" 43 42 //#include "objects/Backlight.h" 43 #include "objects/CameraHandler.h" 44 44 #include "objects/Tickable.h" 45 45 #include "objects/Radar.h" 46 46 //#include "tools/ParticleInterface.h" 47 #include " GraphicsEngine.h"47 #include "LevelManager.h" 48 48 #include "Settings.h" 49 49 50 50 namespace orxonox 51 51 { 52 GSLevel::GSLevel(const std::string& name) 53 : GameState<GSGraphics>(name) 54 , timeFactor_(1.0f) 55 , sceneManager_(0) 52 GSLevel::GSLevel() 53 // : GameState<GSGraphics>(name) 54 : timeFactor_(1.0f) 56 55 , keyBinder_(0) 57 56 , inputState_(0) 58 57 , radar_(0) 59 58 , startFile_(0) 59 , cameraHandler_(0) 60 , levelManager_(0) 60 61 { 61 62 RegisterObject(GSLevel); … … 72 73 } 73 74 74 void GSLevel::enter() 75 { 76 inputState_ = InputManager::getInstance().createInputState<SimpleInputState>("game", 20); 77 keyBinder_ = new KeyBinder(); 78 keyBinder_->loadBindings("keybindings.ini"); 79 inputState_->setHandler(keyBinder_); 80 81 // create Ogre SceneManager for the level 82 this->sceneManager_ = Ogre::Root::getSingleton().createSceneManager(Ogre::ST_GENERIC, "LevelSceneManager"); 83 COUT(4) << "Created SceneManager: " << sceneManager_->getName() << std::endl; 84 85 this->sceneManager_->setShadowTechnique(Ogre::SHADOWTYPE_STENCIL_ADDITIVE); 86 87 // temporary hack 88 GraphicsEngine::getInstance().setLevelSceneManager(this->sceneManager_); 89 90 // Start the Radar 91 this->radar_ = new Radar(); 92 93 // reset game speed to normal 94 timeFactor_ = 1.0f; 95 96 // TODO: insert slomo console command with 97 // .accessLevel(AccessLevel::Offline).defaultValue(0, 1.0).axisParamIndex(0).isAxisRelative(false); 98 99 // keybind console command 100 FunctorMember<GSLevel>* functor1 = createFunctor(&GSLevel::keybind); 101 functor1->setObject(this); 102 CommandExecutor::addConsoleCommandShortcut(createConsoleCommand(functor1, "keybind")); 103 FunctorMember<GSLevel>* functor2 = createFunctor(&GSLevel::tkeybind); 104 functor2->setObject(this); 105 CommandExecutor::addConsoleCommandShortcut(createConsoleCommand(functor2, "tkeybind")); 106 // set our console command as callback for the key detector 107 InputManager::getInstance().setKeyDetectorCallback(std::string("keybind ") + keyDetectorCallbackCode_); 75 void GSLevel::enter(Ogre::Viewport* viewport) 76 { 77 if (Core::showsGraphics()) 78 { 79 inputState_ = InputManager::getInstance().createInputState<SimpleInputState>("game", 20); 80 keyBinder_ = new KeyBinder(); 81 keyBinder_->loadBindings("keybindings.ini"); 82 inputState_->setHandler(keyBinder_); 83 84 // create the global CameraHandler 85 assert(viewport); 86 this->cameraHandler_ = new CameraHandler(viewport); 87 88 // Start the Radar 89 this->radar_ = new Radar(); 90 } 91 92 if (Core::isMaster()) 93 { 94 // create the global LevelManager 95 this->levelManager_ = new LevelManager(); 96 97 // reset game speed to normal 98 timeFactor_ = 1.0f; 99 100 this->loadLevel(); 101 } 102 103 if (Core::showsGraphics()) 104 { 105 // TODO: insert slomo console command with 106 // .accessLevel(AccessLevel::Offline).defaultValue(0, 1.0).axisParamIndex(0).isAxisRelative(false); 107 108 // keybind console command 109 FunctorMember<GSLevel>* functor1 = createFunctor(&GSLevel::keybind); 110 functor1->setObject(this); 111 CommandExecutor::addConsoleCommandShortcut(createConsoleCommand(functor1, "keybind")); 112 FunctorMember<GSLevel>* functor2 = createFunctor(&GSLevel::tkeybind); 113 functor2->setObject(this); 114 CommandExecutor::addConsoleCommandShortcut(createConsoleCommand(functor2, "tkeybind")); 115 // set our console command as callback for the key detector 116 InputManager::getInstance().setKeyDetectorCallback(std::string("keybind ") + keyDetectorCallbackCode_); 117 118 // level is loaded: we can start capturing the input 119 InputManager::getInstance().requestEnterState("game"); 120 } 121 122 if (Core::isMaster()) 123 { 124 // time factor console command 125 FunctorMember<GSLevel>* functor = createFunctor(&GSLevel::setTimeFactor); 126 functor->setObject(this); 127 CommandExecutor::addConsoleCommandShortcut(createConsoleCommand(functor, "setTimeFactor")).accessLevel(AccessLevel::Offline).defaultValue(0, 1.0);; 128 } 108 129 } 109 130 … … 116 137 //Loader::close(); 117 138 118 delete this->radar_; 119 120 Ogre::Root::getSingleton().destroySceneManager(this->sceneManager_); 121 122 inputState_->setHandler(0); 123 InputManager::getInstance().requestDestroyState("game"); 124 delete this->keyBinder_; 139 if (Core::showsGraphics()) 140 InputManager::getInstance().requestLeaveState("game"); 141 142 if (Core::isMaster()) 143 this->unloadLevel(); 144 145 if (this->radar_) 146 delete this->radar_; 147 148 if (this->cameraHandler_) 149 delete this->cameraHandler_; 150 151 if (this->levelManager_) 152 delete this->levelManager_; 153 154 if (Core::showsGraphics()) 155 { 156 inputState_->setHandler(0); 157 InputManager::getInstance().requestDestroyState("game"); 158 if (this->keyBinder_) 159 delete this->keyBinder_; 160 } 125 161 } 126 162 … … 185 221 void GSLevel::keybindInternal(const std::string& command, bool bTemporary) 186 222 { 187 static std::string bindingString = "";188 static bool bTemporarySaved = false;189 static bool bound = true;190 // note: We use a long name to make 'sure' that the user doesn't use it accidentally.191 // Howerver there will be no real issue if it happens anyway.192 if (command.find(keyDetectorCallbackCode_) != 0)193 {194 if ( bound)223 if (Core::showsGraphics()) 224 { 225 static std::string bindingString = ""; 226 static bool bTemporarySaved = false; 227 static bool bound = true; 228 // note: We use a long name to make 'sure' that the user doesn't use it accidentally. 229 // Howerver there will be no real issue if it happens anyway. 230 if (command.find(keyDetectorCallbackCode_) != 0) 195 231 { 196 COUT(0) << "Press any button/key or move a mouse/joystick axis" << std::endl; 197 InputManager::getInstance().requestEnterState("detector"); 198 bindingString = command; 199 bTemporarySaved = bTemporary; 200 bound = false; 232 if (bound) 233 { 234 COUT(0) << "Press any button/key or move a mouse/joystick axis" << std::endl; 235 InputManager::getInstance().requestEnterState("detector"); 236 bindingString = command; 237 bTemporarySaved = bTemporary; 238 bound = false; 239 } 240 //else: We're still in a keybind command. ignore this call. 201 241 } 202 //else: We're still in a keybind command. ignore this call. 203 } 204 else 205 { 206 if (!bound) 242 else 207 243 { 208 // user has pressed the key 209 std::string name = command.substr(this->keyDetectorCallbackCode_.size()); 210 COUT(0) << "Binding string \"" << bindingString << "\" on key '" << name << "'" << std::endl; 211 this->keyBinder_->setBinding(bindingString, name, bTemporarySaved); 212 InputManager::getInstance().requestLeaveState("detector"); 213 bound = true; 244 if (!bound) 245 { 246 // user has pressed the key 247 std::string name = command.substr(this->keyDetectorCallbackCode_.size()); 248 COUT(0) << "Binding string \"" << bindingString << "\" on key '" << name << "'" << std::endl; 249 this->keyBinder_->setBinding(bindingString, name, bTemporarySaved); 250 InputManager::getInstance().requestLeaveState("detector"); 251 bound = true; 252 } 253 // else: A key was pressed within the same tick, ignore it. 214 254 } 215 // else: A key was pressed within the same tick, ignore it.216 255 } 217 256 } -
code/branches/objecthierarchy/src/orxonox/gamestates/GSLevel.h
r2010 r2023 37 37 namespace orxonox 38 38 { 39 class _OrxonoxExport GSLevel : public GameState<GSGraphics>, public OrxonoxClass39 class _OrxonoxExport GSLevel : public OrxonoxClass //,public GameState<GSGraphics> 40 40 { 41 41 friend class ClassIdentifier<GSLevel>; 42 42 public: 43 GSLevel( const std::string& name);44 virtual~GSLevel();43 GSLevel(); 44 ~GSLevel(); 45 45 46 46 // this has to be public because proteced triggers a bug in msvc … … 50 50 51 51 protected: 52 v irtual void enter();53 v irtual void leave();54 v irtual void ticked(const Clock& time);52 void enter(Ogre::Viewport* viewport); 53 void leave(); 54 void ticked(const Clock& time); 55 55 56 56 void loadLevel(); 57 57 void unloadLevel(); 58 58 59 float timeFactor_; //!< A factor t o change the gamespeed59 float timeFactor_; //!< A factor that sets the gamespeed. 1 is normal. 60 60 61 61 // console commands … … 64 64 void keybindInternal(const std::string& command, bool bTemporary); 65 65 66 Ogre::SceneManager* sceneManager_;67 66 KeyBinder* keyBinder_; //!< tool that loads and manages the input bindings 68 67 SimpleInputState* inputState_; 69 68 Radar* radar_; //!< represents the Radar (not the HUD part) 70 69 XMLFile* startFile_; //!< current hard coded default level 70 CameraHandler* cameraHandler_; 71 LevelManager* levelManager_; 71 72 72 73 // config values -
code/branches/objecthierarchy/src/orxonox/gamestates/GSRoot.cc
r2003 r2023 41 41 #include "core/TclThreadManager.h" 42 42 #include "tools/Timer.h" 43 #include "GraphicsEngine.h"44 43 #include "Settings.h" 45 44 -
code/branches/objecthierarchy/src/orxonox/gamestates/GSServer.cc
r2003 r2023 30 30 #include "GSServer.h" 31 31 32 #include "core/ConsoleCommand.h"33 #include "core/input/InputManager.h"34 32 #include "core/CommandLine.h" 35 33 #include "core/Core.h" … … 41 39 42 40 GSServer::GSServer() 43 : G SLevel("server")41 : GameState<GSGraphics>("server") 44 42 , server_(0) 45 43 { … … 54 52 Core::setHasServer(true); 55 53 56 GSLevel::enter();57 58 54 this->server_ = new network::Server(CommandLine::getValue("port")); 59 55 COUT(0) << "Loading scene in server mode" << std::endl; 60 56 61 this->loadLevel();57 GSLevel::enter(this->getParent()->getViewport()); 62 58 63 59 server_->open(); 64 65 // add console commands66 FunctorMember<GSLevel>* functor = createFunctor(&GSLevel::setTimeFactor);67 functor->setObject(this);68 CommandExecutor::addConsoleCommandShortcut(createConsoleCommand(functor, "setTimeFactor")).accessLevel(AccessLevel::Offline).defaultValue(0, 1.0);;69 70 // level is loaded: we can start capturing the input71 InputManager::getInstance().requestEnterState("game");72 60 } 73 61 74 62 void GSServer::leave() 75 63 { 76 InputManager::getInstance().requestLeaveState("game"); 77 78 // TODO: Remove and destroy console command 79 80 this->unloadLevel(); 64 GSLevel::leave(); 81 65 82 66 this->server_->close(); 83 67 delete this->server_; 84 85 GSLevel::leave();86 68 87 69 Core::setHasServer(false); -
code/branches/objecthierarchy/src/orxonox/gamestates/GSServer.h
r1755 r2023 33 33 #include "network/NetworkPrereqs.h" 34 34 #include "GSLevel.h" 35 #include "GSGraphics.h" 35 36 36 37 namespace orxonox 37 38 { 38 class _OrxonoxExport GSServer : public G SLevel39 class _OrxonoxExport GSServer : public GameState<GSGraphics>, public GSLevel 39 40 { 40 41 public: 41 42 GSServer(); 42 43 ~GSServer(); 43 44 44 45 45 private: -
code/branches/objecthierarchy/src/orxonox/gamestates/GSStandalone.cc
r1989 r2023 30 30 #include "GSStandalone.h" 31 31 32 #include "core/input/InputManager.h"33 #include "core/ConsoleCommand.h"34 32 #include "core/Core.h" 35 33 … … 37 35 { 38 36 GSStandalone::GSStandalone() 39 : G SLevel("standalone")37 : GameState<GSGraphics>("standalone") 40 38 { 41 39 } … … 47 45 void GSStandalone::enter() 48 46 { 49 GSLevel::enter();47 Core::setIsStandalone(true); 50 48 51 Core::setIsStandalone(true); 52 this->loadLevel(); 53 54 // add console commands 55 FunctorMember<GSLevel>* functor = createFunctor(&GSLevel::setTimeFactor); 56 functor->setObject(this); 57 CommandExecutor::addConsoleCommandShortcut(createConsoleCommand(functor, "setTimeFactor")).accessLevel(AccessLevel::Offline).defaultValue(0, 1.0);; 58 59 // level is loaded: we can start capturing the input 60 InputManager::getInstance().requestEnterState("game"); 49 GSLevel::enter(this->getParent()->getViewport()); 61 50 } 62 51 63 52 void GSStandalone::leave() 64 53 { 65 InputManager::getInstance().requestLeaveState("game");66 67 // TODO: Remove and destroy console command68 69 this->unloadLevel();70 71 54 GSLevel::leave(); 72 55 -
code/branches/objecthierarchy/src/orxonox/gamestates/GSStandalone.h
r1755 r2023 32 32 #include "OrxonoxPrereqs.h" 33 33 #include "GSLevel.h" 34 #include "GSGraphics.h" 34 35 35 36 namespace orxonox 36 37 { 37 class _OrxonoxExport GSStandalone : public G SLevel38 class _OrxonoxExport GSStandalone : public GameState<GSGraphics>, public GSLevel 38 39 { 39 40 public:
Note: See TracChangeset
for help on using the changeset viewer.