From d08146ed5b54d56920bf6fdd8d9076c3b30baf8e Mon Sep 17 00:00:00 2001 From: milek7 Date: Mon, 18 Jan 2021 01:10:46 +0100 Subject: [PATCH] pantograph PhysicalLayout fiz entry --- McZapkie/MOVER.h | 3 ++- McZapkie/Mover.cpp | 11 ++++++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/McZapkie/MOVER.h b/McZapkie/MOVER.h index 0efbd6eb..50c363c2 100644 --- a/McZapkie/MOVER.h +++ b/McZapkie/MOVER.h @@ -463,7 +463,8 @@ struct TCurrentCollector { double InsetV; //minimalne napięcie wymagane do załączenia double MinPress; //minimalne ciśnienie do załączenia WS double MaxPress; //maksymalne ciśnienie za reduktorem - bool FakePower; + bool FakePower; + int PhysicalLayout; //inline TCurrentCollector() { // CollectorsNo = 0; // MinH, MaxH, CSW, MinV, MaxV = 0.0; diff --git a/McZapkie/Mover.cpp b/McZapkie/Mover.cpp index be3a1063..8fae3534 100644 --- a/McZapkie/Mover.cpp +++ b/McZapkie/Mover.cpp @@ -2190,6 +2190,7 @@ void TMoverParameters::PantographsCheck( double const Timestep ) { false ) ) ); // shouldn't ever get this far but, eh } + size_t pant_id = 0; for( auto &pantograph : Pantographs ) { auto &valve { pantograph.valve }; @@ -2205,11 +2206,17 @@ void TMoverParameters::PantographsCheck( double const Timestep ) { || ( manualcontrol && lowvoltagepower && valve.is_enabled ) || ( autostart && lowvoltagepower ) ) ); // shouldn't ever get this far but, eh + auto const pantographexists { (EnginePowerSource.SourceType == TPowerSource::CurrentCollector) + && (EnginePowerSource.CollectorParameters.PhysicalLayout & (1 << pant_id)) }; + pantograph.is_active = ( ( valve.is_active ) && ( PantsValve.is_active ) + && ( pantographexists ) // && ( ) // TODO: add other checks ); + + pant_id++; } } @@ -10926,7 +10933,7 @@ void TMoverParameters::LoadFIZ_PowerParamsDecode( TPowerParameters &Powerparamet auto &collectorparameters = Powerparameters.CollectorParameters; - collectorparameters = TCurrentCollector { 0, 0, 0, 0, 0, 0, false, 0, 0, 0, false }; + collectorparameters = TCurrentCollector { 0, 0, 0, 0, 0, 0, false, 0, 0, 0, false, 0 }; extract_value( collectorparameters.CollectorsNo, "CollectorsNo", Line, "" ); extract_value( collectorparameters.MinH, "MinH", Line, "" ); @@ -10946,6 +10953,8 @@ void TMoverParameters::LoadFIZ_PowerParamsDecode( TPowerParameters &Powerparamet // collectorparameters.MaxPress = 5.0 + 0.001 * ( Random( 50 ) - Random( 50 ) ); extract_value( collectorparameters.MaxPress, "MaxPress", Line, "5.0" ); extract_value( collectorparameters.FakePower, "FakePower", Line, "" ); + if (extract_value( collectorparameters.PhysicalLayout, "PhysicalLayout", Line, "3" )) + collectorparameters.CollectorsNo = std::min(collectorparameters.PhysicalLayout, 2); break; } case TPowerSource::PowerCable: {