author | unc0rr |
Thu, 16 Feb 2012 20:32:47 +0400 | |
changeset 6690 | 46b3f4776538 |
parent 6616 | f77bb02b669f |
child 6700 | e04da46ee43c |
permissions | -rw-r--r-- |
/* * Hedgewars, a free turn based strategy game * Copyright (c) 2007-2011 Andrey Korotaev <unC0Rr@gmail.com> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 2 of the License * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA */ /** * @file * @brief SDLInteraction class definition */ #ifndef HEDGEWARS_SDLINTERACTION_H #define HEDGEWARS_SDLINTERACTION_H #include <QMap> #include <QStringList> #include "SDL_mixer.h" /** * @brief Class for interacting with SDL (used for music and keys) * * @see <a href="http://en.wikipedia.org/wiki/Singleton_pattern">singleton pattern</a> */ class SDLInteraction { private: /** * @brief Class constructor of the <i>singleton</i>. * * Not to be used from outside the class, * use the static {@link HWDataManager::instance()} instead. * * @see <a href="http://en.wikipedia.org/wiki/Singleton_pattern">singleton pattern</a> */ SDLInteraction(); /// Initializes SDL for sound output if needed. void SDLAudioInit(); bool m_audioInitialized; ///< true if audio is initialized already Mix_Music * m_music; ///< pointer to the music channel of the mixer QString m_musicTrack; ///< path to the music track; bool m_isPlayingMusic; ///< true if music was started but not stopped again. QMap<QString,Mix_Chunk*> * m_soundMap; ///< maps sound file paths to channels int lastchannel; ///< channel of the last music played public: /** * @brief Returns reference to the <i>singleton</i> instance of this class. * * @see <a href="http://en.wikipedia.org/wiki/Singleton_pattern">singleton pattern</a> * * @return reference to the instance. */ static SDLInteraction & instance(); /// Class Destructor. ~SDLInteraction(); /** * @brief Returns available (screen) resolutions. * * @return list of resolutions in the format WIDTHxHEIGHT. */ QStringList getResolutions() const; /// Adds all available joystick controlls to the list of SDL keys. void addGameControllerKeys() const; /** * @brief Plays a sound file. * * @param soundFile path of the sound file. */ void playSoundFile(const QString & soundFile); /** * @brief Sets the music track to be played (or not). * * @param musicFile path of the music file. */ void setMusicTrack(const QString & musicFile); /// Starts the background music if not already playing. void startMusic(); /// Fades out and stops the background music (if playing). void stopMusic(); }; #endif //HEDGEWARS_SDLINTERACTION_H