Changeset - r2928:5af49ea19262
[Not reviewed]
master
0 2 0
bjarni - 19 years ago 2006-01-29 23:04:51
bjarni@openttd.org
(svn r3484) -fix: fixed issue in last commit where loading savegame versions 18 and 19 didn't init the multiheaded engine pointers
2 files changed with 2 insertions and 38 deletions:
0 comments (0 inline, 0 general)
openttd.c
Show inline comments
 
@@ -1150,9 +1150,8 @@ bool AfterLoadGame(void)
 
	 * subtype to the new format */
 
	if (CheckSavegameVersionOldStyle(17, 1)) ConvertOldMultiheadToNew();
 

	
 
	/* Connect front and rear engines of multiheaded trains
 
		since this info were no longer saved in savegame version 20 */
 
	if (!CheckSavegameVersion(20)) ConnectMultiheadedTrains();
 
	/* Connect front and rear engines of multiheaded trains */
 
	ConnectMultiheadedTrains();
 

	
 
	// Update current year
 
	SetDate(_date);
train_cmd.c
Show inline comments
 
@@ -3618,41 +3618,6 @@ void ConvertOldMultiheadToNew(void)
 
					default: NOT_REACHED(); break;
 
				}
 
				END_ENUM_WAGONS(u)
 
					u = v;
 
				BEGIN_ENUM_WAGONS(u)
 
					const RailVehicleInfo *rvi = RailVehInfo(u->engine_type);
 

	
 
				if (u->u.rail.other_multiheaded_part != NULL) continue;
 

	
 
				if (rvi->flags & RVI_MULTIHEAD) {
 
					if (!IsTrainEngine(u)) {
 
						/* we got a rear car without a front car. We will convert it to a front one */
 
						SetTrainEngine(u);
 
						u->spritenum--;
 
					}
 

	
 
					{
 
						Vehicle *w;
 

	
 
						for(w = u->next; w != NULL && (w->engine_type != u->engine_type || w->u.rail.other_multiheaded_part != NULL); w = GetNextVehicle(w));
 
						if (w != NULL) {
 
							/* we found a car to partner with this engine. Now we will make sure it face the right way */
 
							if (IsTrainEngine(w)) {
 
								ClearTrainEngine(w);
 
								w->spritenum++;
 
							}
 
						}
 

	
 
						if (w != NULL) {
 
							w->u.rail.other_multiheaded_part = u;
 
							u->u.rail.other_multiheaded_part = w;
 
						} else {
 
							/* we got a front car and no rear cars. We will fake this one for forget that it should have been multiheaded */
 
							ClearMultiheaded(u);
 
						}
 
					}
 
				}
 
				END_ENUM_WAGONS(u)
 
			}
 
		}
 
	}
0 comments (0 inline, 0 general)