📄 audio.cpp
字号:
#include "audio.h"
void playSound(int sid)
{
if ((!currentGame.useSound) || (!engine.useAudio))
return;
switch(sid)
{
case SFX_DEATH:
case SFX_CLOCK:
case SFX_FLY:
case SFX_SHIELDUP:
case SFX_PICKUP:
case SFX_CLOAK:
case SFX_PLASMA2:
case SFX_PLASMA3:
Mix_PlayChannel(-1, sound[sid], 0);
break;
case SFX_PLASMA:
case SFX_LASER:
Mix_PlayChannel(0, sound[sid], 0);
break;
case SFX_ENERGYRAY:
case SFX_MISSILE:
Mix_PlayChannel(1, sound[sid], 0);
break;
case SFX_HIT:
Mix_PlayChannel(4, sound[sid], 0);
break;
case SFX_EXPLOSION:
case SFX_DEBRIS:
case SFX_DEBRIS2:
Mix_PlayChannel(3, sound[sid], 0);
break;
}
}
Mix_Chunk *loadSound(char *filename)
{
Mix_Chunk *chunk;
#if USEPACK
unpack(filename, PAK_WAV);
chunk = Mix_LoadWAV_RW(engine.sdlrw, 1);
#else
chunk = Mix_LoadWAV(filename);
#endif
return chunk;
}
void loadMusic(char *filename)
{
if (Mix_PlayingMusic())
Mix_HaltMusic();
if (engine.music != NULL)
Mix_FreeMusic(engine.music);
#if USEPACK
unpack(filename, PAK_MOD);
char musicFilename[PATH_MAX];
strcpy(musicFilename, "");
sprintf(musicFilename, "%smusic.mod", engine.userHomeDirectory);
engine.music = Mix_LoadMUS(musicFilename);
#else
engine.music = Mix_LoadMUS(filename);
#endif
}
void playRandomTrack()
{
if ((!currentGame.useMusic) || (!engine.useAudio))
return;
int tracks = 0;
char track[][30] = {
"music/Frantic.mod", "music/Artificial.mod", "music/Lunatic.mod", "music/ToxicFriend.mod",
"music/DigitalInferno.mod", "music/TempoTrance.mod", "music/IntoTheMachine.mod"
};
switch(currentGame.system)
{
case 0:
tracks = 3;
break;
case 1:
tracks = 5;
break;
case 2:
case 3:
tracks = 7;
break;
}
switch(currentGame.area)
{
case 5:
case 11:
case 18:
case 25:
loadMusic("music/HardTranceDub.mod");
break;
case 26:
loadMusic("music/LoopsAndTings.mod");
break;
default:
loadMusic(track[rand() % tracks]);
}
Mix_PlayMusic(engine.music, -1);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -