16
0
mirror of https://github.com/MaSzyna-EU07/maszyna.git synced 2026-07-22 11:39:19 +02:00

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

View File

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