void Generator::generateData(const QAudioFormat& format, unsigned char* ptr, qint64 length) { const int channelBytes = format.sampleSize() / 8; if (length <= 0) return; QMutexLocker lock(m_mutex); QVector<qreal> channels; channels.resize(2); // LOG_INFO() << "generating Sounds" << QDateTime::currentDateTime() << length; initializeSounds(); while (length) { generateTone(channels[0], channels[1], m_sampleIndex); //const qreal x = soundFunc(2 * M_PI * frequency * qreal(sampleIndex ) / format.sampleRate()); for (int i=0; i<format.channelCount(); ++i) { if (format.sampleSize() == 8 && format.sampleType() == QAudioFormat::UnSignedInt) { const quint8 value = static_cast<quint8>((1.0 + channels[i]) / 2 * 255); *reinterpret_cast<quint8*>(ptr) = value; } else if (format.sampleSize() == 8 && format.sampleType() == QAudioFormat::SignedInt) { const qint8 value = static_cast<qint8>(channels[i] * 127); *reinterpret_cast<quint8*>(ptr) = value; } else if (format.sampleSize() == 16 && format.sampleType() == QAudioFormat::UnSignedInt) { quint16 value = static_cast<quint16>((1.0 + channels[i]) / 2 * 65535); if (format.byteOrder() == QAudioFormat::LittleEndian) qToLittleEndian<quint16>(value, ptr); else qToBigEndian<quint16>(value, ptr); } else if (format.sampleSize() == 16 && format.sampleType() == QAudioFormat::SignedInt) { qint16 value = static_cast<qint16>(channels[i] * 32767); if (format.byteOrder() == QAudioFormat::LittleEndian) qToLittleEndian<qint16>(value, ptr); else qToBigEndian<qint16>(value, ptr); } ptr += channelBytes; length -= channelBytes; } ++m_sampleIndex; } }
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"; }
int main( int argc, char *argv[] ) { struct highscoreItem *highscore = loadHighscore(); res.width = 1280; res.height = 720; // Load a font if (TTF_Init() != 0) { printf("TTF_Init() Failed: %s\n", TTF_GetError()); SDL_Quit(); exit(1); } fontBig = TTF_OpenFont("resources/fonts/DejaVuSans.ttf", FONT_SIZE_BIG); fontSmall = TTF_OpenFont("resources/fonts/DejaVuSans.ttf", FONT_SIZE_SMALL); TTF_SetFontStyle(fontSmall, TTF_STYLE_BOLD); font = fontBig; if (fontBig == NULL || fontSmall == NULL) { printf("TTF_OpenFont() Failed: %s\n", TTF_GetError()); TTF_Quit(); SDL_Quit(); exit(1); } // Initialisiere SDL if( SDL_Init( SDL_INIT_VIDEO | SDL_INIT_TIMER | SDL_INIT_AUDIO) < 0 ) { fprintf( stderr, "SDL konnte nicht initialisiert werden: %s\n", SDL_GetError() ); return 1; } // Initialisiere SDL_Image IMG_Init(IMG_INIT_PNG); // Timer einrichten SDL_AddTimer (16, generate_userevent, NULL); // Event-System initialisieren SDL_Event event; SDL_WM_SetCaption("Jump and Run", "Jump and Run"); SDL_Surface *icon = IMG_Load("resources/images/icon.png"); if (icon != NULL) SDL_WM_SetIcon(icon, NULL); // Erstelle die Bildschirmfläche SDL_Surface *screen = NULL; screen = SDL_SetVideoMode( res.width, res.height, SCREEN_BPP, SDL_HWSURFACE | SDL_DOUBLEBUF); SDL_ShowCursor(0); initializeSounds(); startMusic(); initializeClouds(); int returnValue = drawMenu(screen, event); while (1) { switch (returnValue) { case MENU: returnValue = drawMenu(screen, event); break; case START_GAME: returnValue = LEVEL_OFFSET; break; case HIGHSCORES: drawHighscore(screen, font, event, highscore); returnValue = MENU; break; default: if (returnValue >= LEVEL_OFFSET && returnValue < LEVEL_OFFSET + MAX_LEVEL) { returnValue = addScore(screen, startGame (screen, event, res, returnValue - LEVEL_OFFSET), event, &highscore); } else if (returnValue <= EXIT_GAME) { printf("Spiel beenden\n"); freeHighscore(highscore); freeAudio(); TTF_CloseFont(fontBig); TTF_CloseFont(fontSmall); TTF_Quit(); SDL_Quit(); exit(returnValue - EXIT_GAME); } else returnValue = MENU; } } return 0; }