16
0
mirror of https://github.com/MaSzyna-EU07/maszyna.git synced 2026-07-18 00:49:19 +02:00
Files
maszyna/FadeSound.cpp
2015-04-03 13:34:06 +00:00

106 lines
2.1 KiB
C++

//---------------------------------------------------------------------------
/*
MaSzyna EU07 locomotive simulator
Copyright (C) 2001-2004 Marcin Wozniak and others
*/
#include "system.hpp"
#include "classes.hpp"
#pragma hdrstop
#include "Timer.h"
#include "FadeSound.h"
__fastcall TFadeSound::TFadeSound()
{
Sound= NULL;
fFade= 0;
dt= 0;
fTime= 0;
}
__fastcall TFadeSound::~TFadeSound()
{
Free();
}
void __fastcall TFadeSound::Free()
{
}
void __fastcall TFadeSound::Init(char *Name, float fNewFade)
{
Sound= TSoundsManager::GetFromName(Name,false);
if (Sound)
Sound->SetVolume(0);
fFade= fNewFade;
fTime= 0;
}
void __fastcall TFadeSound::TurnOn()
{
State= ss_Starting;
Sound->Play(0,0,DSBPLAY_LOOPING);
fTime= fFade;
}
void __fastcall TFadeSound::TurnOff()
{
State= ss_ShuttingDown;
}
void __fastcall 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 __fastcall TFadeSound::Volume(long vol)
{
float glos= 1;
Sound->SetVolume(vol*glos);
}
//---------------------------------------------------------------------------
#pragma package(smart_init)