mirror of
https://github.com/MaSzyna-EU07/maszyna.git
synced 2026-03-22 15:05:03 +01:00
ai departure logic tweak, minor bug fixes
This commit is contained in:
@@ -1029,8 +1029,11 @@ TCommandType TController::TableUpdate(double &fVelDes, double &fDist, double &fN
|
||||
|
||||
if (TrainParams.StationIndex < TrainParams.StationCount) {
|
||||
// jeśli są dalsze stacje, czekamy do godziny odjazdu
|
||||
if (TrainParams.IsTimeToGo(simulation::Time.data().wHour, simulation::Time.data().wMinute + simulation::Time.data().wSecond*0.0167 )) {
|
||||
if ( ( true == IsCargoTrain )
|
||||
|| ( true == TrainParams.IsMaintenance() )
|
||||
|| ( TrainParams.IsTimeToGo( simulation::Time.data().wHour, simulation::Time.data().wMinute + simulation::Time.data().wSecond*0.0167 ) ) ) {
|
||||
// z dalszą akcją czekamy do godziny odjazdu
|
||||
// cargo trains and passenger trains at maintenance stop don't need to wait
|
||||
IsAtPassengerStop = false;
|
||||
// przy jakim dystansie (stanie licznika) ma przesunąć na następny postój
|
||||
fLastStopExpDist = mvOccupied->DistCounter + 0.050 + 0.001 * fLength;
|
||||
|
||||
@@ -8363,6 +8363,8 @@ void TTrain::set_cab_controls( int const Cab ) {
|
||||
1.f :
|
||||
0.f );
|
||||
}
|
||||
// radio
|
||||
ggRadioVolumeSelector.PutValue( Global.RadioVolume );
|
||||
|
||||
// we reset all indicators, as they're set during the update pass
|
||||
// TODO: when cleaning up break setting indicator state into a separate function, so we can reuse it
|
||||
|
||||
@@ -138,6 +138,8 @@ driverkeyboard_input::default_bindings() {
|
||||
{ user_command::radiostopsend, GLFW_KEY_PAUSE | keymodifier::shift | keymodifier::control },
|
||||
{ user_command::radiostoptest, GLFW_KEY_R | keymodifier::shift | keymodifier::control },
|
||||
{ user_command::radiocall3send, GLFW_KEY_BACKSPACE },
|
||||
// radiovolumeincrease,
|
||||
// radiovolumedecrease,
|
||||
{ user_command::cabchangeforward, GLFW_KEY_HOME },
|
||||
{ user_command::cabchangebackward, GLFW_KEY_END },
|
||||
// viewturn,
|
||||
|
||||
@@ -50,6 +50,13 @@ bool TTrainParameters::IsStop() const
|
||||
return true; // na ostatnim się zatrzymać zawsze
|
||||
}
|
||||
|
||||
bool TTrainParameters::IsMaintenance() const {
|
||||
if( ( StationIndex < StationCount ) )
|
||||
return TimeTable[ StationIndex ].is_maintenance;
|
||||
else
|
||||
return false;
|
||||
}
|
||||
|
||||
bool TTrainParameters::UpdateMTable( scenario_time const &Time, std::string const &NewName ) {
|
||||
|
||||
return UpdateMTable( Time.data().wHour, Time.data().wMinute + Time.data().wSecond * 0.0167, NewName );
|
||||
@@ -399,6 +406,7 @@ bool TTrainParameters::LoadTTfile(std::string scnpath, int iPlus, double vmax)
|
||||
|| ( s == "2" )
|
||||
|| fin.bad() ) ) {
|
||||
record->StationWare += s;
|
||||
record->is_maintenance = ( s.find( "pt" ) != std::string::npos );
|
||||
fin >> s;
|
||||
}
|
||||
record->TrackNo = atoi(s.c_str());
|
||||
|
||||
29
mtable.h
29
mtable.h
@@ -24,27 +24,19 @@ static char const *hrsd = ".";
|
||||
|
||||
struct TMTableLine
|
||||
{
|
||||
float km; // kilometraz linii
|
||||
float vmax; // predkosc rozkladowa przed przystankiem
|
||||
float km{ 0.f }; // kilometraz linii
|
||||
float vmax{ -1.f }; // predkosc rozkladowa przed przystankiem
|
||||
// StationName:string[32]; //nazwa stacji ('_' zamiast spacji)
|
||||
// StationWare:string[32]; //typ i wyposazenie stacji, oddz. przecinkami}
|
||||
std::string StationName; // nazwa stacji ('_' zamiast spacji)
|
||||
std::string StationName{ "nowhere" }; // nazwa stacji ('_' zamiast spacji)
|
||||
std::string StationWare; // typ i wyposazenie stacji, oddz. przecinkami}
|
||||
int TrackNo; // ilosc torow szlakowych
|
||||
int Ah;
|
||||
float Am; // godz. i min. przyjazdu, -1 gdy bez postoju
|
||||
int Dh;
|
||||
float Dm; // godz. i min. odjazdu
|
||||
float tm; // czas jazdy do tej stacji w min. (z kolumny)
|
||||
TMTableLine()
|
||||
{
|
||||
km = 0;
|
||||
vmax = -1;
|
||||
StationName = "nowhere", StationWare = "";
|
||||
TrackNo = 1;
|
||||
Ah = Am = Dh = Dm = -1;
|
||||
tm = 0;
|
||||
}
|
||||
int TrackNo{ 1 }; // ilosc torow szlakowych
|
||||
int Ah{ -1 };
|
||||
float Am{ -1.f }; // godz. i min. przyjazdu, -1 gdy bez postoju
|
||||
int Dh{ -1 };
|
||||
float Dm{ -1.f }; // godz. i min. odjazdu
|
||||
float tm{ 0.f }; // czas jazdy do tej stacji w min. (z kolumny)
|
||||
bool is_maintenance{ false };
|
||||
};
|
||||
|
||||
typedef TMTableLine TMTable[MaxTTableSize + 1];
|
||||
@@ -73,6 +65,7 @@ class TTrainParameters
|
||||
double WatchMTable(double DistCounter);
|
||||
std::string NextStop() const;
|
||||
bool IsStop() const;
|
||||
bool IsMaintenance() const;
|
||||
bool IsTimeToGo(double hh, double mm);
|
||||
bool UpdateMTable(double hh, double mm, std::string const &NewName);
|
||||
bool UpdateMTable( scenario_time const &Time, std::string const &NewName );
|
||||
|
||||
Reference in New Issue
Block a user