mirror of
https://github.com/MaSzyna-EU07/maszyna.git
synced 2026-03-22 15:05:03 +01:00
93 lines
2.0 KiB
C++
93 lines
2.0 KiB
C++
/*
|
|
This Source Code Form is subject to the
|
|
terms of the Mozilla Public License, v.
|
|
2.0. If a copy of the MPL was not
|
|
distributed with this file, You can
|
|
obtain one at
|
|
http://mozilla.org/MPL/2.0/.
|
|
*/
|
|
/*
|
|
MaSzyna EU07 locomotive simulator
|
|
Copyright (C) 2001-2004 Marcin Wozniak and others
|
|
|
|
*/
|
|
|
|
#include "stdafx.h"
|
|
#include "FadeSound.h"
|
|
#include "Timer.h"
|
|
|
|
TFadeSound::~TFadeSound()
|
|
{
|
|
Free();
|
|
}
|
|
|
|
void TFadeSound::Free()
|
|
{
|
|
}
|
|
|
|
void TFadeSound::Init(std::string const &Name, float fNewFade)
|
|
{
|
|
Sound = TSoundsManager::GetFromName(Name, false);
|
|
if (Sound)
|
|
Sound->SetVolume(0);
|
|
fFade = fNewFade;
|
|
fTime = 0;
|
|
}
|
|
|
|
void TFadeSound::TurnOn()
|
|
{
|
|
State = ss_Starting;
|
|
Sound->Play(0, 0, DSBPLAY_LOOPING);
|
|
fTime = fFade;
|
|
}
|
|
|
|
void TFadeSound::TurnOff()
|
|
{
|
|
State = ss_ShuttingDown;
|
|
}
|
|
|
|
void TFadeSound::Update()
|
|
{
|
|
|
|
if (State == ss_Starting)
|
|
{
|
|
fTime += Timer::GetDeltaTime();
|
|
// SoundStart->SetVolume(-1000*(4-fTime)/4);
|
|
if (fTime >= fFade)
|
|
{
|
|
fTime = fFade;
|
|
State = ss_Commencing;
|
|
Sound->SetVolume(-2000 * (fFade - fTime) / fFade);
|
|
Sound->SetFrequency(44100 - 500 + 500 * (fTime) / fFade);
|
|
}
|
|
else if (Timer::GetSoundTimer())
|
|
{
|
|
Sound->SetVolume(-2000 * (fFade - fTime) / fFade);
|
|
Sound->SetFrequency(44100 - 500 + 500 * (fTime) / fFade);
|
|
}
|
|
}
|
|
else if (State == ss_ShuttingDown)
|
|
{
|
|
fTime -= Timer::GetDeltaTime();
|
|
|
|
if (fTime <= 0)
|
|
{
|
|
State = ss_Off;
|
|
fTime = 0;
|
|
Sound->Stop();
|
|
}
|
|
if (Timer::GetSoundTimer())
|
|
{ // DSBVOLUME_MIN
|
|
Sound->SetVolume(-2000 * (fFade - fTime) / fFade);
|
|
Sound->SetFrequency(44100 - 500 + 500 * fTime / fFade);
|
|
}
|
|
}
|
|
}
|
|
void TFadeSound::Volume(long vol)
|
|
{
|
|
float glos = 1;
|
|
Sound->SetVolume(vol * glos);
|
|
}
|
|
|
|
//---------------------------------------------------------------------------
|