Skip to content

Commit 57daa1b

Browse files
committed
add driving side to region object
1 parent 8dafbd4 commit 57daa1b

File tree

6 files changed

+46
-13
lines changed

6 files changed

+46
-13
lines changed

Dat/Loaders/RegionObjectLoader.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,8 @@ public static LocoObject Load(Stream stream)
3232
// fixed
3333
br.SkipStringId(); // Name offset, not part of object definition
3434
br.SkipImageId(); // Image offset, not part of object definition
35-
br.SkipByte(0x08 - 0x06); // pad
35+
model.VehiclesDriveOnThe = br.ReadByte() == 0 ? DrivingSide.Left : DrivingSide.Right;
36+
model.pad_07 = br.ReadByte();
3637
var numCargoInfluenceObjects = br.ReadByte();
3738
for (var i = 0; i < Constants.MaxCargoInfluenceObjects; ++i)
3839
{
@@ -67,7 +68,8 @@ public static void Save(Stream stream, LocoObject obj)
6768
{
6869
bw.WriteEmptyStringId(); // Name offset, not part of object definition
6970
bw.WriteEmptyImageId(); // Image offset, not part of object definition
70-
bw.Write((uint16_t)0); // pad
71+
bw.Write(model.VehiclesDriveOnThe == DrivingSide.Left ? (uint8_t)0 : (uint8_t)1);
72+
bw.Write(model.pad_07);
7173
bw.Write((uint8_t)model.CargoInfluenceObjects.Count);
7274
bw.WriteEmptyObjectId(Constants.MaxCargoInfluenceObjects);
7375
for (var i = 0; i < Constants.MaxCargoInfluenceObjects; ++i)

Definitions/ObjectModels/Objects/Land/LandObject.cs

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,24 @@ public bool TryGetImageName(int id, out string? value)
4747

4848
public static readonly Dictionary<int, string> ImageIdNameMap = new()
4949
{
50-
{ 0, "kFlatSE" },
51-
{ 1, "toolbar_terraform_land" },
50+
{ 0, "flat" },
51+
{ 1, "west corner up" },
52+
{ 2, "south corner up" },
53+
{ 3, "north east slope" },
54+
{ 4, "east corner up" },
55+
{ 5, "west and east corner up" },
56+
{ 6, "north west slope" },
57+
{ 7, "north corner down" },
58+
{ 8, "north corner up" },
59+
{ 9, "south east slope" },
60+
{ 10, "north and south corners up" },
61+
{ 11, "east corner down" },
62+
{ 12, "north west slope" },
63+
{ 13, "south corner down" },
64+
{ 14, "west corner down" },
65+
{ 15, "south slope" },
66+
{ 16, "north slope" },
67+
{ 17, "east slope" },
68+
{ 18, "west slope" }
5269
};
5370
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
namespace Definitions.ObjectModels.Objects.Region;
2+
3+
public enum DrivingSide
4+
{
5+
Left,
6+
Right
7+
}

Definitions/ObjectModels/Objects/Region/RegionObject.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ namespace Definitions.ObjectModels.Objects.Region;
44

55
public class RegionObject : ILocoStruct
66
{
7+
public DrivingSide VehiclesDriveOnThe { get; set; }
8+
public uint8_t pad_07 { get; set; }
79
public List<ObjectModelHeader> CargoInfluenceObjects { get; set; } = [];
810
public List<ObjectModelHeader> DependentObjects { get; set; } = [];
911
public List<CargoInfluenceTownFilterType> CargoInfluenceTownFilter { get; set; } = [];
Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,33 @@
11
using Definitions.ObjectModels.Objects.Region;
22
using System.Collections.Generic;
3+
using System.ComponentModel;
34

45
namespace Gui.ViewModels;
56

67
public class RegionViewModel : LocoObjectViewModel<RegionObject>
78
{
8-
public List<ObjectModelHeaderViewModel> CargoInfluenceObjects { get; set; }
9-
public List<ObjectModelHeaderViewModel> DependentObjects { get; set; }
10-
public List<CargoInfluenceTownFilterType> CargoInfluenceTownFilter { get; set; }
9+
public DrivingSide VehiclesDriveOnThe { get; set; }
10+
public uint8_t pad_07 { get; set; }
11+
[Category("Cargo")] public List<ObjectModelHeaderViewModel> CargoInfluenceObjects { get; set; }
12+
[Category("Cargo")] public List<ObjectModelHeaderViewModel> DependentObjects { get; set; }
13+
[Category("Cargo")] public List<CargoInfluenceTownFilterType> CargoInfluenceTownFilter { get; set; }
1114

1215
public RegionViewModel(RegionObject ro)
1316
{
1417
CargoInfluenceObjects = [.. ro.CargoInfluenceObjects.ConvertAll(x => new ObjectModelHeaderViewModel(x))];
1518
DependentObjects = [.. ro.DependentObjects.ConvertAll(x => new ObjectModelHeaderViewModel(x))];
1619
CargoInfluenceTownFilter = [.. ro.CargoInfluenceTownFilter];
20+
VehiclesDriveOnThe = ro.VehiclesDriveOnThe;
21+
pad_07 = ro.pad_07;
1722
}
1823

1924
public override RegionObject GetAsModel()
20-
{
21-
var regionObject = new RegionObject()
25+
=> new RegionObject()
2226
{
2327
CargoInfluenceObjects = CargoInfluenceObjects.ConvertAll(x => x.GetAsModel()),
2428
DependentObjects = DependentObjects.ConvertAll(x => x.GetAsModel()),
2529
CargoInfluenceTownFilter = CargoInfluenceTownFilter,
30+
VehiclesDriveOnThe = VehiclesDriveOnThe,
31+
pad_07 = pad_07
2632
};
27-
return regionObject;
28-
}
2933
}

Tests/LoadSaveTests.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -369,7 +369,8 @@ void assertFunc(LocoObject obj, DockObject struc) => Assert.Multiple(() =>
369369

370370
Assert.That(struc.DesignedYear, Is.Zero, nameof(struc.DesignedYear));
371371
Assert.That(struc.ObsoleteYear, Is.EqualTo(65535), nameof(struc.ObsoleteYear));
372-
Assert.That(struc.BoatPosition, Is.EqualTo(new Pos2() { X = 48, Y = 0 }), nameof(struc.BoatPosition));
372+
Assert.That(struc.BoatPosition.X, Is.EqualTo(48), nameof(struc.BoatPosition));
373+
Assert.That(struc.BoatPosition.Y, Is.EqualTo(0), nameof(struc.BoatPosition));
373374

374375
Assert.That(obj.GraphicsElements, Has.Count.EqualTo(9));
375376
});
@@ -657,7 +658,7 @@ public void RegionObject(string objectName)
657658
{
658659
void assertFunc(LocoObject obj, RegionObject struc) => Assert.Multiple(() =>
659660
{
660-
//Assert.That(struc.pad_06, Is.EquivalentTo(Array.CreateInstance(typeof(byte), 2)), nameof(struc.pad_06));
661+
Assert.That(struc.VehiclesDriveOnThe, Is.EqualTo(DrivingSide.Left), nameof(struc.VehiclesDriveOnThe));
661662
Assert.That(struc.CargoInfluenceObjects.Count, Is.EqualTo(1), nameof(struc.CargoInfluenceObjects));
662663
Assert.That(struc.DependentObjects, Has.Count.EqualTo(239), nameof(struc.DependentObjects));
663664
Assert.That(struc.CargoInfluenceTownFilter, Is.EquivalentTo(Enumerable.Repeat(CargoInfluenceTownFilterType.AllTowns, 4)), nameof(struc.CargoInfluenceTownFilter));

0 commit comments

Comments
 (0)