/** ** Ask the sound server to play a sound for a missile. ** ** @param missile Sound initiator, missile exploding ** @param sound Sound to be generated */ void PlayMissileSound(const Missile &missile, CSound *sound) { if (!sound) { return; } int stereo = ((missile.position.x + (missile.Type->G ? missile.Type->G->Width / 2 : 0) + UI.SelectedViewport->MapPos.x * PixelTileSize.x) * 256 / ((UI.SelectedViewport->MapWidth - 1) * PixelTileSize.x)) - 128; clamp(&stereo, -128, 127); Origin source = {NULL, 0}; //Wyrmgus start // unsigned char volume = CalculateVolume(false, ViewPointDistanceToMissile(missile), sound->Range); unsigned char volume = CalculateVolume(false, ViewPointDistanceToMissile(missile), sound->Range) * sound->VolumePercent / 100; //Wyrmgus end if (volume == 0) { return; } int channel = PlaySample(ChooseSample(sound, false, source)); if (channel == -1) { return; } SetChannelVolume(channel, volume); SetChannelStereo(channel, stereo); }
/** ** Ask to the sound server to play a sound attached to a unit. The ** sound server may discard the sound if needed (e.g., when the same ** unit is already speaking). ** ** @param unit Sound initiator, unit speaking ** @param voice Type of sound wanted (Ready,Die,Yes,...) */ void PlayUnitSound(const CUnit &unit, UnitVoiceGroup voice) { CSound *sound = ChooseUnitVoiceSound(unit, voice); if (!sound) { return; } bool selection = (voice == VoiceSelected || voice == VoiceBuilding); Origin source = {&unit, unsigned(UnitNumber(unit))}; //Wyrmgus start // if (UnitSoundIsPlaying(&source)) { if (UnitSoundIsPlaying(&source) && voice != VoiceHit && voice != VoiceMiss && voice != VoiceStep) { //Wyrmgus end return; } int channel = PlaySample(ChooseSample(sound, selection, source), &source); if (channel == -1) { return; } //Wyrmgus start // SetChannelVolume(channel, CalculateVolume(false, ViewPointDistanceToUnit(unit), sound->Range)); SetChannelVolume(channel, CalculateVolume(false, ViewPointDistanceToUnit(unit), sound->Range) * sound->VolumePercent / 100); //Wyrmgus end SetChannelStereo(channel, CalculateStereo(unit)); //Wyrmgus start SetChannelVoiceGroup(channel, voice); //Wyrmgus end }
/** ** Play a game sound ** ** @param sound Sound to play ** @param volume Volume level to play the sound */ void PlayGameSound(CSound *sound, unsigned char volume) { Origin source = {NULL, 0}; int channel = PlaySample(ChooseSample(sound, false, source)); if (channel == -1) { return; } SetChannelVolume(channel, CalculateVolume(true, volume, sound->Range)); }
/** ** Ask to the sound server to play a sound attached to a unit. The ** sound server may discard the sound if needed (e.g., when the same ** unit is already speaking). ** ** @param unit Sound initiator, unit speaking ** @param sound Sound to be generated */ void PlayUnitSound(const CUnit *unit, CSound *sound) { Origin source = {unit, unit->Slot}; int channel = PlaySample(ChooseSample(sound, false, source)); if (channel == -1) { return; } SetChannelVolume(channel, CalculateVolume(false, ViewPointDistanceToUnit(unit), sound->Range)); SetChannelStereo(channel, CalculateStereo(unit)); }
/** ** Ask the sound server to play a sound for a missile. ** ** @param missile Sound initiator, missile exploding ** @param sound Sound to be generated */ void PlayMissileSound(const Missile &missile, CSound *sound) { int stereo = ((missile.position.x + missile.Type->G->Width / 2 - UI.SelectedViewport->MapPos.x * PixelTileSize.x) * 256 / ((UI.SelectedViewport->MapWidth - 1) * PixelTileSize.x)) - 128; clamp(&stereo, -128, 127); Origin source = {NULL, 0}; int channel = PlaySample(ChooseSample(sound, false, source)); if (channel == -1) { return; } SetChannelVolume(channel, CalculateVolume(false, ViewPointDistanceToMissile(missile), sound->Range)); SetChannelStereo(channel, stereo); }
/** ** Play a game sound ** ** @param sound Sound to play ** @param volume Volume level to play the sound */ void PlayGameSound(CSound *sound, unsigned char volume, bool always) { Origin source = {NULL, 0}; CSample *sample = ChooseSample(sound, false, source); if (!always && SampleIsPlaying(sample)) { return; } int channel = PlaySample(sample); if (channel == -1) { return; } SetChannelVolume(channel, CalculateVolume(true, volume, sound->Range)); }
/** ** Ask to the sound server to play a sound attached to a unit. The ** sound server may discard the sound if needed (e.g., when the same ** unit is already speaking). ** ** @param unit Sound initiator, unit speaking ** @param voice Type of sound wanted (Ready,Die,Yes,...) */ void PlayUnitSound(const CUnit *unit, UnitVoiceGroup voice) { CSound *sound = ChooseUnitVoiceSound(unit, voice); if (!sound) { return; } bool selection = (voice == VoiceSelected || voice == VoiceBuilding); Origin source = {unit, unit->Slot}; int channel = PlaySample(ChooseSample(sound, selection, source)); if (channel == -1) { return; } SetChannelVolume(channel, CalculateVolume(false, ViewPointDistanceToUnit(unit), sound->Range)); SetChannelStereo(channel, CalculateStereo(unit)); }
/** ** Ask to the sound server to play a sound attached to a unit. The ** sound server may discard the sound if needed (e.g., when the same ** unit is already speaking). ** ** @param unit Sound initiator, unit speaking ** @param sound Sound to be generated */ void PlayUnitSound(const CUnit &unit, CSound *sound) { if (!sound) { return; } Origin source = {&unit, unsigned(UnitNumber(unit))}; //Wyrmgus start // unsigned char volume = CalculateVolume(false, ViewPointDistanceToUnit(unit), sound->Range); unsigned char volume = CalculateVolume(false, ViewPointDistanceToUnit(unit), sound->Range) * sound->VolumePercent / 100; //Wyrmgus end if (volume == 0) { return; } int channel = PlaySample(ChooseSample(sound, false, source)); if (channel == -1) { return; } SetChannelVolume(channel, volume); SetChannelStereo(channel, CalculateStereo(unit)); }
/** ** Play a game sound ** ** @param sound Sound to play ** @param volume Volume level to play the sound */ void PlayGameSound(CSound *sound, unsigned char volume, bool always) { if (!sound) { return; } Origin source = {NULL, 0}; CSample *sample = ChooseSample(sound, false, source); if (!always && SampleIsPlaying(sample)) { return; } int channel = PlaySample(sample); if (channel == -1) { return; } //Wyrmgus start // SetChannelVolume(channel, CalculateVolume(true, volume, sound->Range)); SetChannelVolume(channel, CalculateVolume(true, volume, sound->Range) * sound->VolumePercent / 100); //Wyrmgus end }
/** ** Ask the sound server to play a sound for a missile. ** ** @param missile Sound initiator, missile exploding ** @param sound Sound to be generated */ void PlayMissileSound(const Missile *missile, CSound *sound) { int stereo; stereo = ((missile->X + missile->Type->G->Width / 2 - UI.SelectedViewport->MapX * TileSizeX) * 256 / ((UI.SelectedViewport->MapWidth - 1) * TileSizeX)) - 128; if (stereo < -128) { stereo = -128; } else if (stereo > 127) { stereo = 127; } Origin source = {NULL, 0}; int channel = PlaySample(ChooseSample(sound, false, source)); if (channel == -1) { return; } SetChannelVolume(channel, CalculateVolume(false, ViewPointDistanceToMissile(missile), sound->Range)); SetChannelStereo(channel, stereo); }