16
0
mirror of https://github.com/MaSzyna-EU07/maszyna.git synced 2026-07-23 06:19:18 +02:00

vehicle configuration file parsing enhancement

This commit is contained in:
tmj-fstate
2020-05-05 20:36:28 +02:00
parent 6112198610
commit 9c3fbf489d
2 changed files with 27 additions and 24 deletions

View File

@@ -9049,7 +9049,7 @@ bool TMoverParameters::LoadFIZ(std::string chkpath)
startWWLIST = false; startWWLIST = false;
startLIGHTSLIST = false; startLIGHTSLIST = false;
startCOMPRESSORLIST = false; startCOMPRESSORLIST = false;
std::string file = chkpath + TypeName + ".fiz"; std::string file = TypeName + ".fiz";
WriteLog("LOAD FIZ FROM " + file); WriteLog("LOAD FIZ FROM " + file);
/* /*
@@ -9060,7 +9060,7 @@ bool TMoverParameters::LoadFIZ(std::string chkpath)
return false; return false;
} }
*/ */
cParser fizparser( file, cParser::buffer_FILE ); cParser fizparser( file, cParser::buffer_FILE, chkpath );
if( false == fizparser.ok() ) { if( false == fizparser.ok() ) {
WriteLog( "E8 - FIZ FILE NOT EXIST." ); WriteLog( "E8 - FIZ FILE NOT EXIST." );
return false; return false;

View File

@@ -499,9 +499,11 @@ bool TTrain::Init(TDynamicObject *NewDynamicObject, bool e3d)
{ {
Global.CurrentMaxTextureSize = Global.iMaxCabTextureSize; Global.CurrentMaxTextureSize = Global.iMaxCabTextureSize;
auto const filename{ DynamicObject->asBaseDir + DynamicObject->MoverParameters->TypeName + ".mmd" }; auto const filename { mvOccupied->TypeName + ".mmd" };
LoadMMediaFile( filename ); LoadMMediaFile( filename );
InitializeCab( mvOccupied->CabOccupied, filename ); InitializeCab(
mvOccupied->CabOccupied,
filename );
Global.CurrentMaxTextureSize = Global.iMaxTextureSize; Global.CurrentMaxTextureSize = Global.iMaxTextureSize;
@@ -5836,18 +5838,18 @@ void TTrain::UpdateCab() {
&& ( DynamicObject->Mechanik->AIControllFlag ) ) { && ( DynamicObject->Mechanik->AIControllFlag ) ) {
if( iCabn != ( // numer kabiny (-1: kabina B) if( iCabn != ( // numer kabiny (-1: kabina B)
DynamicObject->MoverParameters->CabOccupied == -1 ? mvOccupied->CabOccupied == -1 ?
2 : 2 :
DynamicObject->MoverParameters->CabOccupied ) ) { mvOccupied->CabOccupied ) ) {
InitializeCab( InitializeCab(
DynamicObject->MoverParameters->CabOccupied, mvOccupied->CabOccupied,
DynamicObject->asBaseDir + DynamicObject->MoverParameters->TypeName + ".mmd" ); mvOccupied->TypeName + ".mmd" );
} }
} }
iCabn = ( DynamicObject->MoverParameters->CabOccupied == -1 ? iCabn = ( mvOccupied->CabOccupied == -1 ?
2 : 2 :
DynamicObject->MoverParameters->CabOccupied ); mvOccupied->CabOccupied );
} }
bool TTrain::Update( double const Deltatime ) bool TTrain::Update( double const Deltatime )
@@ -7421,26 +7423,23 @@ bool TTrain::CabChange(int iDirection)
|| ( true == DynamicObject->Mechanik->AIControllFlag ) ) { || ( true == DynamicObject->Mechanik->AIControllFlag ) ) {
// jeśli prowadzi AI albo jest w innym członie // jeśli prowadzi AI albo jest w innym członie
// jak AI prowadzi, to nie można mu mieszać // jak AI prowadzi, to nie można mu mieszać
if (std::abs(DynamicObject->MoverParameters->CabOccupied + iDirection) > 1) if (std::abs(mvOccupied->CabOccupied + iDirection) > 1)
return false; // ewentualna zmiana pojazdu return false; // ewentualna zmiana pojazdu
DynamicObject->MoverParameters->CabOccupied = mvOccupied->CabOccupied += iDirection;
DynamicObject->MoverParameters->CabOccupied + iDirection;
} }
else else
{ // jeśli pojazd prowadzony ręcznie albo wcale (wagon) { // jeśli pojazd prowadzony ręcznie albo wcale (wagon)
DynamicObject->MoverParameters->CabDeactivisation(); mvOccupied->CabDeactivisation();
if( DynamicObject->MoverParameters->ChangeCab( iDirection ) ) { if( mvOccupied->ChangeCab( iDirection ) ) {
if( InitializeCab( if( InitializeCab( mvOccupied->CabOccupied, mvOccupied->TypeName + ".mmd" ) ) {
DynamicObject->MoverParameters->CabOccupied,
DynamicObject->asBaseDir + DynamicObject->MoverParameters->TypeName + ".mmd" ) ) {
// zmiana kabiny w ramach tego samego pojazdu // zmiana kabiny w ramach tego samego pojazdu
DynamicObject->MoverParameters->CabActivisation(); // załączenie rozrządu (wirtualne kabiny) mvOccupied->CabActivisation(); // załączenie rozrządu (wirtualne kabiny)
DynamicObject->Mechanik->DirectionChange(); DynamicObject->Mechanik->DirectionChange();
return true; // udało się zmienić kabinę return true; // udało się zmienić kabinę
} }
} }
// aktywizacja poprzedniej, bo jeszcze nie wiadomo, czy jakiś pojazd jest // aktywizacja poprzedniej, bo jeszcze nie wiadomo, czy jakiś pojazd jest
DynamicObject->MoverParameters->CabActivisation(); mvOccupied->CabActivisation();
} }
return false; // ewentualna zmiana pojazdu return false; // ewentualna zmiana pojazdu
} }
@@ -7449,7 +7448,7 @@ bool TTrain::CabChange(int iDirection)
// wczytywanie pliku z danymi multimedialnymi (dzwieki, kontrolki, kabiny) // wczytywanie pliku z danymi multimedialnymi (dzwieki, kontrolki, kabiny)
bool TTrain::LoadMMediaFile(std::string const &asFileName) bool TTrain::LoadMMediaFile(std::string const &asFileName)
{ {
cParser parser(asFileName, cParser::buffer_FILE); cParser parser( asFileName, cParser::buffer_FILE, DynamicObject->asBaseDir );
// NOTE: yaml-style comments are disabled until conflict in use of # is resolved // NOTE: yaml-style comments are disabled until conflict in use of # is resolved
// parser.addCommentStyle( "#", "\n" ); // parser.addCommentStyle( "#", "\n" );
@@ -7653,7 +7652,7 @@ bool TTrain::InitializeCab(int NewCabNo, std::string const &asFileName)
std::string cabstr("cab" + std::to_string(cabindex) + "definition:"); std::string cabstr("cab" + std::to_string(cabindex) + "definition:");
cParser parser(asFileName, cParser::buffer_FILE); cParser parser( asFileName, cParser::buffer_FILE, DynamicObject->asBaseDir );
// NOTE: yaml-style comments are disabled until conflict in use of # is resolved // NOTE: yaml-style comments are disabled until conflict in use of # is resolved
// parser.addCommentStyle( "#", "\n" ); // parser.addCommentStyle( "#", "\n" );
std::string token; std::string token;
@@ -7891,7 +7890,11 @@ bool TTrain::InitializeCab(int NewCabNo, std::string const &asFileName)
*/ */
} }
// btLampkaUnknown.Init("unknown",mdKabina,false); // btLampkaUnknown.Init("unknown",mdKabina,false);
} while (token != ""); } while ( ( token != "" )
// TODO: enable full per-cab deserialization when/if .mmd files get proper per-cab switch configuration
// && ( token != "cab1definition:" )
// && ( token != "cab2definition:" )
&& ( token != "cab0definition:" ) );
} }
else else
{ {
@@ -8129,7 +8132,7 @@ TTrain::MoveToVehicle(TDynamicObject *target) {
InitializeCab( InitializeCab(
Occupied()->CabActive, Occupied()->CabActive,
Dynamic()->asBaseDir + Occupied()->TypeName + ".mmd" ); Occupied()->TypeName + ".mmd" );
Dynamic()->ABuSetModelShake( {} ); // zerowanie przesunięcia przed powrotem? Dynamic()->ABuSetModelShake( {} ); // zerowanie przesunięcia przed powrotem?