Merge remote-tracking branch 'Milek7/lua' into mover_in_c++

This commit is contained in:
firleju
2017-10-14 07:40:37 +02:00
2 changed files with 38 additions and 24 deletions

View File

@@ -3690,15 +3690,11 @@ void TDynamicObject::RenderSounds()
rsWentylator->stop();
}
}
if (MoverParameters->TrainType == dt_ET40 && rsPrzekladnia)
if (rsPrzekladnia)
{
if (MoverParameters->Vel > 0.1)
{
freq = MoverParameters->Vel;
rsPrzekladnia->pitch(freq);
vol = MoverParameters->Vel;
rsPrzekladnia->loop().position(GetPosition()).gain(vol).play();
}
rsPrzekladnia->pitch(MoverParameters->Vel).gain(MoverParameters->Vel)
.position(GetPosition()).play();
else
rsPrzekladnia->stop();
}
@@ -4663,10 +4659,10 @@ void TDynamicObject::LoadMMediaFile(std::string BaseDir, std::string TypeName,
>> token
>> attenuation;
rsSilnik = sound_man->create_sound(token);
parser.getTokens( 4, false );
if (rsSilnik)
{
rsSilnik->dist(attenuation);
parser.getTokens( 4, false );
parser >> rsSilnik->gain_mul;
if( MoverParameters->EngineType == DieselEngine ) {
@@ -4699,10 +4695,10 @@ void TDynamicObject::LoadMMediaFile(std::string BaseDir, std::string TypeName,
>> token
>> attenuation;
rsWentylator = sound_man->create_sound(token);
parser.getTokens( 4, false );
if (rsWentylator)
{
rsWentylator->dist(attenuation);
parser.getTokens( 4, false );
parser
>> rsWentylator->gain_mul
>> rsWentylator->gain_off
@@ -4713,22 +4709,32 @@ void TDynamicObject::LoadMMediaFile(std::string BaseDir, std::string TypeName,
}
}
else if( ( token == "transmission:" )
&& ( MoverParameters->EngineType == ElectricSeriesMotor ) ) {
else if(token == "transmission:") {
// plik z dzwiekiem, mnozniki i ofsety amp. i czest.
double attenuation;
parser.getTokens( 2, false );
parser
>> token
>> attenuation;
rsPrzekladnia = sound_man->create_sound(token);
std::string name;
float attenuation, gain_mul = 0.029f, gain_off = 0.1f, pitch_mul = 0.005f, pitch_off = 1.0f;
parser.getTokens(1, false);
if (parser.peek() != "{")
{
parser >> name;
parser.getTokens();
parser >> attenuation;
}
else
{
cParser extp(parser.getToken<std::string>(false, "}"));
extp.getTokens(6, false);
extp >> name >> attenuation >> gain_mul >> gain_off >> pitch_mul >> pitch_off;
}
rsPrzekladnia = sound_man->create_sound(name);
if (rsPrzekladnia)
{
rsPrzekladnia->dist(attenuation);
rsPrzekladnia->gain_mul = 0.029;
rsPrzekladnia->gain_off = 0.1;
rsPrzekladnia->pitch_mul = 0.005;
rsPrzekladnia->pitch_off = 1.0;
rsPrzekladnia->gain_mul = gain_mul;
rsPrzekladnia->gain_off = gain_off;
rsPrzekladnia->pitch_mul = pitch_mul;
rsPrzekladnia->pitch_off = pitch_off;
}
}

View File

@@ -71,7 +71,10 @@ sound_manager::~sound_manager()
sound_buffer* sound_manager::find_buffer(std::string name)
{
name.erase(name.rfind('.'));
size_t pos = name.rfind('.');
if (pos != name.npos)
name.erase(pos);
std::replace(name.begin(), name.end(), '\\', '/');
auto search = buffers.find(name);
@@ -86,7 +89,10 @@ std::string sound_manager::find_file(std::string name)
if (FileExists(name))
return name;
name.erase(name.rfind('.'));
size_t pos = name.rfind('.');
if (pos != name.npos)
name.erase(pos);
std::vector<std::string> exts { ".wav", ".WAV", ".flac", ".ogg" };
for (auto const &ext : exts)
if (FileExists(name + ext))
@@ -118,7 +124,9 @@ sound_buffer* sound_manager::get_buffer(std::string const &name)
buf = new sound_buffer(file);
file.erase(file.rfind('.'));
size_t pos = file.rfind('.');
if (pos != file.npos)
file.erase(pos);
buffers.emplace(file, buf);
return buf;