mirror of
https://github.com/MaSzyna-EU07/maszyna.git
synced 2026-07-19 09:59:18 +02:00
Set dp branch as trunk
This commit is contained in:
105
FadeSound.cpp
Normal file
105
FadeSound.cpp
Normal file
@@ -0,0 +1,105 @@
|
||||
//---------------------------------------------------------------------------
|
||||
/*
|
||||
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)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user