Changeset 1663 for code/branches/gui/src/orxonox/Orxonox.cc
- Timestamp:
- Aug 20, 2008, 10:30:28 PM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
code/branches/gui/src/orxonox/Orxonox.cc
r1662 r1663 108 108 , bAbort_(false) 109 109 , timefactor_(1.0f) 110 , mode_(GameMode::GM_Unspecified)111 110 , debugRefreshTime_(0.0f) 112 111 , graphicsEngine_(0) … … 119 118 120 119 //assert(singletonRef_s == 0); 121 OrxAssert(singletonRef_s == 0, " asdfasdfasdfasdfblahblah");120 OrxAssert(singletonRef_s == 0, "Cannot instantiate Orxonox class twice"); 122 121 singletonRef_s = this; 123 122 } … … 229 228 setConfigValues(); 230 229 231 const Settings::CommandLineArgument* mode = Settings::getCommandLineArgument("mode"); 232 assert(mode); 233 if (!mode->bHasDefaultValue_) 234 { 235 Settings::setGameMode(mode->value_); 236 this->mode_ = Settings::getGameMode(); 237 } 238 COUT(3) << "Orxonox: Game mode is " << mode_.name << "." << std::endl; 239 240 const Settings::CommandLineArgument* dataPath = Settings::getCommandLineArgument("dataPath"); 241 assert(dataPath); 242 if (!dataPath->bHasDefaultValue_) 243 { 244 if (*dataPath->value_.getString().end() != '/' && *dataPath->value_.getString().end() != '\\') 245 Settings::tsetDataPath(dataPath->value_.getString() + "/"); 246 else 247 Settings::tsetDataPath(dataPath->value_.getString()); 248 } 230 //const Settings::CommandLineArgument* dataPath = Settings::getCommandLineArgument("dataPath"); 231 //assert(dataPath); 232 //if (!dataPath->bHasDefaultValue_) 233 //{ 234 // if (*dataPath->value_.getString().end() != '/' && *dataPath->value_.getString().end() != '\\') 235 // Settings::tsetDataPath(dataPath->value_.getString() + "/"); 236 // else 237 // Settings::tsetDataPath(dataPath->value_.getString()); 238 //} 249 239 250 240 try … … 256 246 graphicsEngine_->setup(); // creates ogre root and other essentials 257 247 258 if ( mode_.showsGraphics)248 if (Settings::showsGraphics()) 259 249 { 260 250 graphicsEngine_->loadRenderer(); // creates the render window … … 286 276 // We probably want to use std::cin to catch input (OIS uses DirectX or X server) 287 277 } 288 289 bool showGUI = true;290 if (mode_.mode != GameMode::Unspecified)291 {292 showGUI = false;293 // a game mode was specified with the command line294 // we therefore load the game and level directly295 296 if (!loadLevel(this->mode_))297 {298 COUT(1) << "Loading with predefined mode failed. Showing main menu." << std::endl;299 showGUI = true;300 mode_ = GameMode::GM_Unspecified;301 }302 }303 304 if (showGUI)305 {306 // show main menu307 GUIManager::getInstance().showGUI("MainMenu", 0);308 GraphicsEngine::getInstance().getViewport()->setCamera(GUIManager::getInstance().getCamera());309 }310 278 } 311 279 catch (std::exception& ex) … … 316 284 } 317 285 318 modeRequest_ = mode_;319 286 // here happens the game 320 287 startRenderLoop(); 321 288 322 if (mode_.mode == GameMode::Client) 323 network::Client::getSingleton()->closeConnection(); 324 325 if (mode_.hasServer) 326 server_g->close(); 327 } 328 329 /*static*/ void Orxonox::loadGame(const std::string& name) 330 { 331 const GameMode& mode = Settings::getGameMode(name); 332 if (mode.mode == GameMode::None) 333 return; 334 335 getInstance().modeRequest_ = mode; 336 } 337 338 bool Orxonox::loadLevel(const GameMode& mode) 339 { 340 bool success = true; 341 342 if (mode.showsGraphics) 343 { 344 // create Ogre SceneManager for the level 345 graphicsEngine_->createNewScene(); 346 347 if (!loadPlayground()) 348 return false; 349 } 350 351 switch (mode.mode) 352 { 353 case GameMode::Server: 354 success &= serverLoad(); 355 break; 356 case GameMode::Client: 357 success &= clientLoad(); 358 break; 359 case GameMode::Dedicated: 360 success &= serverLoad(); 361 break; 362 case GameMode::Standalone: 363 success &= standaloneLoad(); 364 break; 365 default: // never happens 366 assert(false); 367 } 368 369 if (success) 370 { 371 InputManager::getInstance().requestEnterState("game"); 372 this->mode_ = mode; 373 } 374 375 return success; 289 //if (mode_.mode == GameMode::Client) 290 // network::Client::getSingleton()->closeConnection(); 291 292 //if (mode_.hasServer) 293 // server_g->close(); 376 294 } 377 295 … … 408 326 COUT(0) << "Loading level in server mode" << std::endl; 409 327 410 assert(Settings::getCommandLineArgument("port"));411 int serverPort = Settings::getCommandLineArgument("port")->value_;412 // server_g = new network::Server(serverPort_);413 server_g = network::Server::createSingleton(serverPort);328 //assert(Settings::getCommandLineArgument("port")); 329 //int serverPort = Settings::getCommandLineArgument("port")->value_; 330 ////server_g = new network::Server(serverPort_); 331 //server_g = network::Server::createSingleton(serverPort); 414 332 415 333 if (!loadScene()) … … 428 346 COUT(0) << "Loading level in client mode" << std::endl;\ 429 347 430 assert(Settings::getCommandLineArgument("port"));431 assert(Settings::getCommandLineArgument("ip"));432 int serverPort = Settings::getCommandLineArgument("port")->value_;433 std::string serverIP = Settings::getCommandLineArgument("ip")->value_;434 435 if (serverIP.compare("") == 0)436 client_g = network::Client::createSingleton();437 else438 client_g = network::Client::createSingleton(serverIP, serverPort);348 //assert(Settings::getCommandLineArgument("port")); 349 //assert(Settings::getCommandLineArgument("ip")); 350 //int serverPort = Settings::getCommandLineArgument("port")->value_; 351 //std::string serverIP = Settings::getCommandLineArgument("ip")->value_; 352 353 //if (serverIP.compare("") == 0) 354 // client_g = network::Client::createSingleton(); 355 //else 356 // client_g = network::Client::createSingleton(serverIP, serverPort); 439 357 440 358 if(!client_g->establishConnection()) … … 504 422 float dt = (timeBeforeTick - timeBeforeTickOld) / 1000000.0; 505 423 506 // check whether we have to load a game507 if (mode_.mode != modeRequest_.mode && mode_.mode == GameMode::Unspecified)508 {509 this->loadLevel(modeRequest_);510 this->modeRequest_ = GameMode::GM_None;511 }512 513 424 514 425 // tick the core (needs real time for input and tcl thread management) … … 552 463 ogreRoot._fireFrameStarted(evt); 553 464 554 if ( mode_.showsGraphics)465 if (Settings::showsGraphics()) 555 466 { 556 467 // Pump messages in all registered RenderWindows
Note: See TracChangeset
for help on using the changeset viewer.