static int serve(const char *sharedFolderPath, uint32_t maxCacheMegabytes, char *bindAddress, char *listenPort) { if(sharedFolderPath == NULL || bindAddress == NULL || listenPort == NULL){ //TODO NOTE sanity check maxCachebytesize here? logEvent("Error", "Failed to initialize server"); return 0; } if( !initializeNetworking(bindAddress, listenPort) ){ logEvent("Error", "Failed to initialize server"); return 0; } if( !initializeSharedFiles(sharedFolderPath, maxCacheMegabytes) ){ logEvent("Error", "Failed to initialize server"); return 0; } if( !listenForConnections() ){ logEvent("Error", "Failed to serve server"); return 0; } //Note that this function will never return on success return 1; }
void GameCore::startOgre() { reader=new ConfigReader(gameConfigFile); if(reader->readFile()) { writer=new ConfigWriter(gameConfigFile); writer->importConfigReader(reader); reader->pushConfigFile("GameSettings"); std::string pluginsConfig = reader->getFieldValueAsString("ConfigFiles", "plugins-configfile"); std::string resourcesConfig = reader->getFieldValueAsString("ConfigFiles", "resources-configfile"); std::string ogreConfig = reader->getFieldValueAsString("ConfigFiles", "ogre-config"); std::string ogreLogFile = reader->getFieldValueAsString("LogFiles", "ogre-logfile"); std::string gameLogFile = reader->getFieldValueAsString("LogFiles", "game-logfile"); serverTcpPort= reader->getFieldValueAsInteger("NetworkSettings", "tcp-port"); ttftpPort = reader->getFieldValueAsInteger("NetworkSettings", "ttftp-client-port"); nickname=reader->getFieldValueAsString("MultiplayerSettings","nickname"); wallHeight = reader->getFieldValueAsDouble("MapSettings", "wall-height"); mapPath = reader->getFieldValueAsString("MapSettings", "map-lookup-directory"); shadowsEnabled = reader->getFieldValueAsBool("GraphicsSettings", "shadows"); menuBackgroundMusic = reader->getFieldValueAsString("GameSounds", "menu-background"); gameBackgroundMusic = reader->getFieldValueAsString("GameSounds", "game-background"); lmgFireSound = reader->getFieldValueAsString("GameSounds", "lmg-fire"); bgSoundVolume=reader->getFieldValueAsDouble("GameSounds","bg-sound-volume"); bgSoundVolume=(bgSoundVolume<-1?.1:bgSoundVolume); (reader->getFieldValueAsString("MultiplayerSettings","player-color")=="blue"?color=0:color=1); maxDecals=reader->getFieldValueAsInteger("GraphicsSettings","max-decals"); if(maxDecals==-1) maxDecals=30; sensivity=((reader->getFieldValueAsDouble("MultiplayerSettings","mouse-sensivity")<=0?5:reader->getFieldValueAsDouble("MultiplayerSettings","mouse-sensivity"))); moveAnimationSpeed = reader->getFieldValueAsDouble("AnimationSpeeds", "move-speed"); fireAnimationSpeed = reader->getFieldValueAsDouble("AnimationSpeeds", "fire-speed"); moveSpeed=125; buildMap = true; singlePlayerMode = reader->getFieldValueAsBool("Debug", "singleplayer"); if (buildMap) mapFileName = reader->getFieldValueAsString("MapSettings", "map-file-name"); if (mapPath == "NULL") mapPath = "Map/"; else mapPath = mapPath.find("/") == std::string::npos ? mapPath.substr(mapPath.find("/")) : mapPath; gameStarted = teamDM = gameLoaded=false; initializeLogger(gameLogFile); logger->addLine("game config file " + gameConfigFile + " loaded to memory & logger initialized"); LogManager* logManager=new LogManager(); logManager->createLog(ogreLogFile,true,false,false); root = OGRE_NEW Root(pluginsConfig,ogreConfig, ""); ConfigFile configFile; configFile.load(resourcesConfig); //[start]taken from ogre framework Ogre::ConfigFile::SectionIterator seci = configFile.getSectionIterator(); Ogre::String secName, typeName, archName; while (seci.hasMoreElements()) { secName = seci.peekNextKey(); Ogre::ConfigFile::SettingsMultiMap *settings = seci.getNext(); Ogre::ConfigFile::SettingsMultiMap::iterator i; for (i = settings->begin(); i != settings->end(); ++i) { typeName = i->first; archName = i->second; Ogre::ResourceGroupManager::getSingleton().addResourceLocation( archName, typeName, secName); } } //[END] logger->addLine("ogre configuration has been read"); root->showConfigDialog(); renderWindow=root->initialise(true,"Team-Two"); logger->addLine("window created"); sceneManager=root->createSceneManager(ST_EXTERIOR_FAR,"core"); localPlayer=NULL; mapMode=false; mainCamera=sceneManager->createCamera("MainCam"); mainCamera->setNearClipDistance(1);mainCamera->setLodBias(2); mainCamera->setFarClipDistance(100000000); mainCamera->setAspectRatio(renderWindow->getWidth()/(float)renderWindow->getHeight()); menuSceneManager=root->createSceneManager(ST_GENERIC,"menu"); menuCamera=menuSceneManager->createCamera("MenuCam"); menuCamera->setNearClipDistance(1); menuMode=true; viewPort=renderWindow->addViewport(mainCamera); dynamics=NULL; if(shadowsEnabled) sceneManager->setShadowTechnique(Ogre::SHADOWTYPE_STENCIL_ADDITIVE); else sceneManager->setShadowTechnique(Ogre::SHADOWTYPE_NONE); ResourceGroupManager::getSingletonPtr()->initialiseAllResourceGroups(); logger->addLine("GameCore: scanning map files"); lookupMapFiles(mapPath); logger->addLine("GameCore: --ok"); logger->addLine("GameCore: initializing event listeners"); initializeEventListeners(); logger->addLine("GameCore: --ok"); logger->addLine("GameCore: initializing CEGUI"); initializeCEGUI(); logger->addLine("GameCore: --ok"); logger->addLine("GameCore: initializing menu"); initializeMenu(); menuController->showLoading(); root->renderOneFrame(); #if WINDOWS_PLATFORM //Sleep(5000); #else sleep(5); #endif logger->addLine("GameCore: --ok"); logger->addLine("GameCore: initializing ingamemenu"); initializeInGameGUI(); logger->addLine("GameCore: --ok"); logger->addLine("GameCore: initializing networking"); initializeNetworking(); logger->addLine("GameCore: --ok"); //=================================================DEBUG if (singlePlayerMode) { initializePhysics(); logger->addLine("Physics initialized"); initializeScene(); logger->addLine("Scene initialized"); if (buildMap) initializeMap(mapPath + mapFileName); logger->addLine("Map initialized"); _initializeSinglePlayer(); initializeItems(); initializeTeleporters(); } //================================================= logger->addLine("GameCore: initializing sounds"); initializeSounds(); logger->addLine("GameCore: --ok"); root->addFrameListener(this); logger->addLine("GameLoop starting..."); menuController->hideLoading(); gameLoop(); } else std::cout<<"configuration file not found!...\n"; }