Skip to content

Commit 0705b68

Browse files
committed
add recently discovered vehicle flags
1 parent ba2474c commit 0705b68

File tree

3 files changed

+21
-17
lines changed

3 files changed

+21
-17
lines changed

Dat/Objects/Vehicle/VehicleObject.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,7 @@ public Engine2Sound? SoundPropertyEngine2
131131
public ReadOnlySpan<byte> Load(ReadOnlySpan<byte> remainingData)
132132
{
133133
// track type
134-
if (!Flags.HasFlag(VehicleObjectFlags.unk_09) && (Mode == TransportMode.Rail || Mode == TransportMode.Road))
134+
if (!Flags.HasFlag(VehicleObjectFlags.AnyRoadType) && (Mode == TransportMode.Rail || Mode == TransportMode.Road))
135135
{
136136
TrackType = S5Header.Read(remainingData[..S5Header.StructLength]);
137137
remainingData = remainingData[S5Header.StructLength..];
@@ -247,7 +247,7 @@ public ReadOnlySpan<byte> Save()
247247
var ms = new MemoryStream();
248248

249249
// track type
250-
if (!Flags.HasFlag(VehicleObjectFlags.unk_09) && (Mode == TransportMode.Rail || Mode == TransportMode.Road))
250+
if (!Flags.HasFlag(VehicleObjectFlags.AnyRoadType) && (Mode == TransportMode.Rail || Mode == TransportMode.Road))
251251
{
252252
ms.Write(TrackType!.Write());
253253
}
@@ -497,7 +497,7 @@ public bool Validate()
497497
return false;
498498
}
499499

500-
if (Flags.HasFlag(VehicleObjectFlags.unk_09))
500+
if (Flags.HasFlag(VehicleObjectFlags.AnyRoadType))
501501
{
502502
if (NumRequiredTrackExtras != 0)
503503
{

Dat/Objects/Vehicle/VehicleObjectFlags.cs

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,22 +3,28 @@ namespace OpenLoco.Dat.Objects
33
[Flags]
44
public enum VehicleObjectFlags : uint16_t
55
{
6+
// See github issue https://github.com/OpenLoco/OpenLoco/issues/2877 for discussion on unnamed flags
67
None = 0,
7-
unk_00 = 1 << 0,
8-
unk_01 = 1 << 1,
9-
unk_02 = 1 << 2, // rollable? APT Passenger carriage
10-
unk_03 = 1 << 3, // rollable? APT Driving carriage
8+
AlternatingDirection = 1 << 0, // sequential vehicles face alternating directions
9+
TopAndTailPosition = 1 << 1, // vehicle is forced to the rear of the train
10+
JacobsBogieFront = 1 << 2,
11+
JacobsBogieRear = 1 << 3,
1112
unk_04 = 1 << 4,
12-
unk_05 = 1 << 5,
13+
CentrePosition = 1 << 5, // vehicle is forced to the middle of train
1314
RackRail = 1 << 6,
14-
unk_07 = 1 << 7,
15+
// Alternates between sprite 0 and sprite 1 for each vehicle of this type in a train
16+
// NOTE: This is for vehicles and not vehicle components (which can also do similar)
17+
AlternatingCarSprite = 1 << 7,
1518
unk_08 = 1 << 8,
16-
unk_09 = 1 << 9, // any-track??
19+
AircraftIsTailDragger = 1 << 8,
20+
AnyRoadType = 1 << 9, // set on all road vehicles except trams
1721
SpeedControl = 1 << 10,
18-
CanCouple = 1 << 11,
19-
unk_12 = 1 << 12, // dual-head??
20-
IsHelicopter = 1 << 13,
22+
CannotCoupleToSelf = 1 << 11,
23+
AircraftFlaresLanding = 1 << 11, // set only on Concorde
24+
MustHavePair = 1 << 12, // train requires two or more of this vehicle
25+
CanWheelSlip = 1 << 13, // set on all steam locomotives
26+
AircraftIsHelicopter = 1 << 13,
2127
Refittable = 1 << 14,
22-
unk_15 = 1 << 15, // no-announce??
28+
QuietInvention = 1 << 15, // no newspaper announcement
2329
};
2430
}

Gui/Views/EditSettingsWindow.axaml.cs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,6 @@ public EditSettingsWindow()
99
=> InitializeComponent();
1010

1111
void Window_Closing(object? sender, WindowClosingEventArgs e)
12-
{
13-
((EditorSettingsWindowViewModel)DataContext).Commit();
14-
}
12+
=> (DataContext as EditorSettingsWindowViewModel)?.Commit();
1513
}
1614
}

0 commit comments

Comments
 (0)