|
12 | 12 | using TrainManager.BrakeSystems; |
13 | 13 | using TrainManager.Car; |
14 | 14 | using TrainManager.Cargo; |
| 15 | +using TrainManager.Handles; |
15 | 16 | using TrainManager.Power; |
16 | 17 | using TrainManager.Trains; |
17 | 18 |
|
@@ -394,61 +395,32 @@ private void ParseCarNode(XmlNode Node, string fileName, int Car, ref TrainBase |
394 | 395 | } |
395 | 396 | break; |
396 | 397 | case "accelerationcurves": |
| 398 | + /* |
| 399 | + * NOTE: This was initially implemented here. |
| 400 | + * It has moved to being a child-node of the power node |
| 401 | + * Retain this for the minute in case someone has actually used the thing (although the format is an ongoing WIP).... |
| 402 | + */ |
397 | 403 | CopyAccelerationCurves = false; |
| 404 | + Train.Cars[Car].Specs.AccelerationCurves = ParseAccelerationNode(c, fileName); |
| 405 | + break; |
| 406 | + case "power": |
398 | 407 | if (c.ChildNodes.OfType<XmlElement>().Any()) |
399 | 408 | { |
400 | | - List<AccelerationCurve> accelerationCurves = new List<AccelerationCurve>(); |
401 | 409 | foreach (XmlNode cc in c.ChildNodes) |
402 | 410 | { |
403 | 411 | switch (cc.Name.ToLowerInvariant()) |
404 | 412 | { |
405 | | - case "openbve": // don't support legacy BVE2 curves in XML, but at the same time specify that this is deliberately BVE4 / OpenBVE format |
406 | | - BveAccelerationCurve curve = new BveAccelerationCurve(); |
407 | | - foreach (XmlNode sc in cc.ChildNodes) |
408 | | - { |
409 | | - switch (sc.Name.ToLowerInvariant()) |
410 | | - { |
411 | | - case "stagezeroacceleration": |
412 | | - if (!NumberFormats.TryParseDoubleVb6(sc.InnerText, out curve.StageZeroAcceleration)) |
413 | | - { |
414 | | - Plugin.currentHost.AddMessage(MessageType.Warning, false, "Stage zero acceleration was invalid for curve " + accelerationCurves.Count + " in XML file " + fileName); |
415 | | - } |
416 | | - curve.StageZeroAcceleration *= 0.277777777777778; |
417 | | - break; |
418 | | - case "stageoneacceleration": |
419 | | - if (!NumberFormats.TryParseDoubleVb6(sc.InnerText, out curve.StageOneAcceleration)) |
420 | | - { |
421 | | - Plugin.currentHost.AddMessage(MessageType.Warning, false, "Stage one acceleration was invalid for curve " + accelerationCurves.Count + " in XML file " + fileName); |
422 | | - } |
423 | | - curve.StageOneAcceleration *= 0.277777777777778; |
424 | | - break; |
425 | | - case "stageonespeed": |
426 | | - if (!NumberFormats.TryParseDoubleVb6(sc.InnerText, out curve.StageOneSpeed)) |
427 | | - { |
428 | | - Plugin.currentHost.AddMessage(MessageType.Warning, false, "Stage one speed was invalid for curve " + accelerationCurves.Count + " in XML file " + fileName); |
429 | | - } |
430 | | - curve.StageOneSpeed *= 0.277777777777778; |
431 | | - break; |
432 | | - case "stagetwospeed": |
433 | | - if (!NumberFormats.TryParseDoubleVb6(sc.InnerText, out curve.StageTwoSpeed)) |
434 | | - { |
435 | | - Plugin.currentHost.AddMessage(MessageType.Warning, false, "Stage two speed was invalid for curve " + accelerationCurves.Count + " in XML file " + fileName); |
436 | | - } |
437 | | - curve.StageTwoSpeed *= 0.277777777777778; |
438 | | - break; |
439 | | - case "stagetwoexponent": |
440 | | - if (!NumberFormats.TryParseDoubleVb6(sc.InnerText, out curve.StageTwoExponent)) |
441 | | - { |
442 | | - Plugin.currentHost.AddMessage(MessageType.Warning, false, "Stage two exponent was invalid for curve " + accelerationCurves.Count + " in XML file " + fileName); |
443 | | - } |
444 | | - break; |
445 | | - } |
446 | | - } |
447 | | - accelerationCurves.Add(curve); |
| 413 | + case "handle": |
| 414 | + AbstractHandle p = Train.Handles.Power; // yuck, but we can't store this as the base type due to constraints elsewhere |
| 415 | + ParseHandleNode(cc, ref p, Car, Train, fileName); |
| 416 | + break; |
| 417 | + case "accelerationcurves": |
| 418 | + CopyAccelerationCurves = false; |
| 419 | + Train.Cars[Car].Specs.AccelerationCurves = ParseAccelerationNode(c, fileName); |
448 | 420 | break; |
449 | 421 | } |
450 | 422 | } |
451 | | - Train.Cars[Car].Specs.AccelerationCurves = accelerationCurves.ToArray(); |
| 423 | + |
452 | 424 | } |
453 | 425 | break; |
454 | 426 | case "doors": |
|
0 commit comments