mirror of
https://github.com/MaSzyna-EU07/maszyna.git
synced 2026-07-18 00:49:19 +02:00
106 lines
2.1 KiB
C++
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)
|
|
|
|
|