📄 audio.c
字号:
/*************************************************************************** sound.c - description ------------------- begin : Sun Jul 29 2001 copyright : (C) 2001 by Michael Speck email : kulkanie@gmx.net ***************************************************************************//*************************************************************************** * * * 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; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/#ifdef SOUND#include "ltris.h"#include "audio.h"/*====================================================================If audio device was properly initiated this flag is set.If this flag is not set; no action will be taken for audio.====================================================================*/int audio_ok = 0;/*====================================================================If this flag is not set no sound is played.====================================================================*/int sound_enabled = 1;/*====================================================================Initiate/close audio====================================================================*/int audio_open(){ if ( Mix_OpenAudio( MIX_DEFAULT_FREQUENCY, MIX_DEFAULT_FORMAT, MIX_DEFAULT_CHANNELS, 256 ) < 0 ) { fprintf( stderr, "audio_open: can't open audio device: %s\n", SDL_GetError() ); audio_ok = 0; return 0; } audio_ok = 1; return 1;}void audio_close(){ if ( !audio_ok ) return; Mix_CloseAudio();}/*====================================================================Sound chunk====================================================================*/Sound_Chunk* sound_chunk_load( char *file_name ){ char path[512]; Mix_Chunk *chunk = 0; if ( !audio_ok ) { fprintf( stderr, "sound_chunk_load: cannot load WAV '%s' as audio device isn't initated properly\n", file_name ); return 0; } /* use SRCDIR/sounds as source directory */ sprintf( path, "%s/sounds/%s", SRC_DIR, file_name ); chunk = Mix_LoadWAV( path ); if ( chunk == 0 ) fprintf( stderr, "chunk_load: couldn't load WAV '%s': %s\n", path, SDL_GetError() ); return (Sound_Chunk*)chunk;}void sound_chunk_free( Sound_Chunk *chunk ){ if ( !audio_ok ) return; Mix_FreeChunk( (Mix_Chunk*)chunk );}/*====================================================================Sound stuff====================================================================*//*====================================================================Enable/disable sound====================================================================*/void sound_enable( int enable ){ if ( !audio_ok ) return; sound_enabled = enable; if ( !enable ) Mix_Pause( -1 ); /* stop all sound channels */}/*====================================================================Set general volume of sounds. 0 - 127====================================================================*/void sound_volume( int level ){ if ( !audio_ok ) return; if ( level < 0 ) level = 0; if ( level > 127 ) level = 127; Mix_Volume( -1, level ); /* all sound channels */}/*====================================================================Play a chunk.====================================================================*/void sound_play( Sound_Chunk *chunk ){ if ( !audio_ok ) return; if ( !sound_enabled ) return; /* use first free sound channel and play sound one time */// SDL_PauseAudio(0); Mix_PlayChannel( -1, (Mix_Chunk*)chunk, 0 );// SDL_PauseAudio(1); }/*====================================================================Music stuff====================================================================*//*====================================================================Set general volume of sounds. 0 - 127====================================================================*/void music_volume( int level ){ /* not implemented */}#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -