home *** CD-ROM | disk | FTP | other *** search
/ Maximum CD 2009 February / maximum-cd-2009-02.iso / DiscContents / SMC_1.6_win32.exe / src / audio / sound_manager.cpp < prev    next >
Encoding:
C/C++ Source or Header  |  2008-08-25  |  2.2 KB  |  107 lines

  1. /***************************************************************************
  2.  * sound_manager.cpp  -  Sound Handler/Manager
  3.  *
  4.  * Copyright (C) 2006 - 2008 Florian Richter
  5.  ***************************************************************************/
  6. /*
  7.    This program is free software; you can redistribute it and/or modify
  8.    it under the terms of the GNU General Public License as published by
  9.    the Free Software Foundation; either version 3 of the License, or
  10.    (at your option) any later version.
  11.    
  12.    You should have received a copy of the GNU General Public License
  13.    along with this program.  If not, see <http://www.gnu.org/licenses/>.
  14. */
  15.  
  16. #include "../audio/sound_manager.h"
  17.  
  18. /* *** *** *** *** *** *** *** *** Sound *** *** *** *** *** *** *** *** *** */
  19.  
  20. cSound :: cSound( void )
  21. {
  22.     m_chunk = NULL;
  23. }
  24.  
  25. cSound :: ~cSound( void )
  26. {
  27.     Free();
  28. }
  29.  
  30. bool cSound :: Load( string filename )
  31. {
  32.     Free();
  33.     
  34.     m_chunk = Mix_LoadWAV( filename.c_str() );
  35.  
  36.     if( m_chunk )
  37.     {
  38.         m_filename = filename;
  39.         return 1;
  40.     }
  41.     
  42.     return 0;
  43. }
  44.  
  45. void cSound :: Free( void )
  46. {
  47.     if( m_chunk )
  48.     {
  49.         Mix_FreeChunk( m_chunk );
  50.         m_chunk = NULL;
  51.     }
  52.     
  53.     m_filename.clear();
  54. }
  55.  
  56.  
  57. /* *** *** *** *** *** *** cSound_Manager *** *** *** *** *** *** *** *** *** *** *** */
  58.  
  59. cSound_Manager :: cSound_Manager( void )
  60. : cObject_Manager<cSound>()
  61. {
  62.     load_count = 0;
  63. }
  64.  
  65. cSound_Manager :: ~cSound_Manager( void )
  66. {
  67.     Delete_All();
  68. }
  69.  
  70. cSound *cSound_Manager :: Get_Pointer( string path )
  71. {
  72.     for( SoundList::iterator itr = objects.begin(), itr_end = objects.end(); itr != itr_end; ++itr )
  73.     {
  74.         cSound *obj = (*itr);
  75.  
  76.         if( obj->m_filename.compare( path ) == 0 )
  77.         {
  78.             // return first found
  79.             return obj;
  80.         }
  81.     }
  82.  
  83.     // not found
  84.     return NULL;
  85. }
  86.  
  87. void cSound_Manager :: Add( cSound *sound )
  88. {
  89.     load_count++;
  90.     cObject_Manager<cSound>::Add( sound );
  91. }
  92.  
  93. void cSound_Manager :: Delete_Sounds( void )
  94. {
  95.     for( SoundList::iterator itr = objects.begin(), itr_end = objects.end(); itr != itr_end; ++itr )
  96.     {
  97.         cSound *obj = (*itr);
  98.  
  99.         delete obj;
  100.         obj = NULL;
  101.     }
  102. }
  103.  
  104. /* *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** */
  105.  
  106. cSound_Manager *pSound_Manager = NULL;
  107.