diff --git a/src/interfaces/track.h b/src/interfaces/track.h index be3d9f462..2246c91bb 100644 --- a/src/interfaces/track.h +++ b/src/interfaces/track.h @@ -205,7 +205,7 @@ #define TRK_ATT_PIT_INDICATOR "pit indicator" #define TRK_ATT_MAX_PITS "max pits" #define TRK_ATT_BUILDINGS_START "start buildings" -#define TRK_ATT_BUILDINGS_STOPP "stop buildings" +#define TRK_ATT_BUILDINGS_STOP "stop buildings" #define TRK_ATT_PIT_STYLE "pit style" #define TRK_ATT_ENTRY "entry" #define TRK_ATT_EXIT "exit" diff --git a/src/modules/track/trackv1/track3.cpp b/src/modules/track/trackv1/track3.cpp index bd7fcc5cd..03d0b54d7 100644 --- a/src/modules/track/trackv1/track3.cpp +++ b/src/modules/track/trackv1/track3.cpp @@ -1396,25 +1396,10 @@ ReadTrack3(tTrack *theTrack, void *TrackHandle, tRoadCam **camList, int ext) pitBuildingsStart = pitBuildingsStart->prev; } if (!found) { - pitBuildingsStart = NULL; + pitBuildingsStart = pitStart; } - - } - - segName = GfParmGetStr(TrackHandle, TRK_SECT_MAIN, TRK_ATT_BUILDINGS_STOPP, NULL); - if (segName != 0) { - pitBuildingsEnd = theTrack->seg; - found = 0; - for(i = 0; i < theTrack->nseg; i++) { - if (!strcmp(segName, pitBuildingsEnd->name)) { - found = 1; - break; - } - pitBuildingsEnd = pitBuildingsEnd->prev; - } - if (!found) { - pitBuildingsEnd = NULL; - } + } else { + pitBuildingsStart = pitStart; } segName = GfParmGetStr(TrackHandle, TRK_SECT_MAIN, TRK_ATT_PIT_END, NULL); @@ -1433,6 +1418,24 @@ ReadTrack3(tTrack *theTrack, void *TrackHandle, tRoadCam **camList, int ext) if (!found) { pitEnd = NULL; } + + segName = GfParmGetStr(TrackHandle, TRK_SECT_MAIN, TRK_ATT_BUILDINGS_STOP, NULL); + if (segName != 0) { + pitBuildingsEnd = theTrack->seg; + found = 0; + for(i = 0; i < theTrack->nseg; i++) { + if (!strcmp(segName, pitBuildingsEnd->name)) { + found = 1; + break; + } + pitBuildingsEnd = pitBuildingsEnd->prev; + } + if (!found) { + pitBuildingsEnd = pitEnd; + } + } else { + pitBuildingsEnd = pitEnd; + } } paramVal = GfParmGetStr(TrackHandle, TRK_SECT_MAIN, TRK_ATT_PIT_SIDE, "right"); if (strcmp(paramVal, "right") == 0) { diff --git a/src/modules/track/trackv1/track4.cpp b/src/modules/track/trackv1/track4.cpp index f3684a761..ccdafa3fc 100644 --- a/src/modules/track/trackv1/track4.cpp +++ b/src/modules/track/trackv1/track4.cpp @@ -880,25 +880,6 @@ static bool InitPits(tTrack *theTrack, void *TrackHandle) { } GfOut("PitBuildingStart: %s\n", pitBuildingsStart->name); - //Search for pit buildings end - segName = GfParmGetStrNC(TrackHandle, path2, TRK_ATT_BUILDINGS_STOPP, NULL); - if (segName != 0) { - /* Search backward the last segment with that name */ - pitBuildingsEnd = theTrack->seg; /* last track segment */ - found = false; - for(i = 0; i < theTrack->nseg; i++) { - if (!strcmp(segName, pitBuildingsEnd->name)) { - found = true; - break; - } - pitBuildingsEnd = pitBuildingsEnd->prev; - } - if (!found) { - pitBuildingsEnd = NULL; - } - } - GfOut("PitBuildungsEnd: %s\n", pitBuildingsEnd->name); - //Search for pits end segName = GfParmGetStrNC(TrackHandle, path2, TRK_ATT_END, NULL); if (segName != 0) { @@ -918,6 +899,27 @@ static bool InitPits(tTrack *theTrack, void *TrackHandle) { } GfOut("PitEnd: %s\n", pitEnd->name); + //Search for pit buildings end + segName = GfParmGetStrNC(TrackHandle, path2, TRK_ATT_BUILDINGS_STOP, NULL); + if (segName != 0) { + /* Search backward the last segment with that name */ + pitBuildingsEnd = theTrack->seg; /* last track segment */ + found = false; + for(i = 0; i < theTrack->nseg; i++) { + if (!strcmp(segName, pitBuildingsEnd->name)) { + found = true; + break; + } + pitBuildingsEnd = pitBuildingsEnd->prev; + } + if (!found) { + pitBuildingsEnd = pitEnd; + } + } else { + pitBuildingsEnd = pitEnd; + } + GfOut("PitBuildungsEnd: %s\n", pitBuildingsEnd->name); + //Decide which side the pit is located const char *paramVal = GfParmGetStr(TrackHandle, path2, TRK_ATT_SIDE, "right"); pits->side = (strcmp(paramVal, "right") == 0) ? TR_RGT : TR_LFT; diff --git a/src/modules/track/trackv1/track5.cpp b/src/modules/track/trackv1/track5.cpp index 27be11878..8d0c9a5c9 100644 --- a/src/modules/track/trackv1/track5.cpp +++ b/src/modules/track/trackv1/track5.cpp @@ -904,25 +904,6 @@ static bool InitPits(tTrack *theTrack, void *TrackHandle) { } GfOut("PitBuildingStart: %s\n", pitBuildingsStart->name); - //Search for pit buildings end - segName = GfParmGetStrNC(TrackHandle, path2, TRK_ATT_BUILDINGS_STOPP, NULL); - if (segName != 0) { - /* Search backward the last segment with that name */ - pitBuildingsEnd = theTrack->seg; /* last track segment */ - found = false; - for(i = 0; i < theTrack->nseg; i++) { - if (!strcmp(segName, pitBuildingsEnd->name)) { - found = true; - break; - } - pitBuildingsEnd = pitBuildingsEnd->prev; - } - if (!found) { - pitBuildingsEnd = NULL; - } - } - GfOut("PitBuildungsEnd: %s\n", pitBuildingsEnd->name); - //Search for pits end segName = GfParmGetStrNC(TrackHandle, path2, TRK_ATT_END, NULL); if (segName != 0) @@ -946,9 +927,29 @@ static bool InitPits(tTrack *theTrack, void *TrackHandle) { pitEnd = NULL; } } - GfOut("PitEnd: %s\n", pitEnd->name); + //Search for pit buildings end + segName = GfParmGetStrNC(TrackHandle, path2, TRK_ATT_BUILDINGS_STOP, NULL); + if (segName != 0) { + /* Search backward the last segment with that name */ + pitBuildingsEnd = theTrack->seg; /* last track segment */ + found = false; + for(i = 0; i < theTrack->nseg; i++) { + if (!strcmp(segName, pitBuildingsEnd->name)) { + found = true; + break; + } + pitBuildingsEnd = pitBuildingsEnd->prev; + } + if (!found) { + pitBuildingsEnd = pitEnd; + } + } else { + pitBuildingsEnd = pitEnd; + } + GfOut("PitBuildungsEnd: %s\n", pitBuildingsEnd->name); + //Decide which side the pit is located const char *paramVal = GfParmGetStr(TrackHandle, path2, TRK_ATT_SIDE, "right"); pits->side = (strcmp(paramVal, "right") == 0) ? TR_RGT : TR_LFT;