Skip to content

Commit b4a4193

Browse files
committed
finish up experimental object loading
1 parent 15db15c commit b4a4193

File tree

3 files changed

+17
-11
lines changed

3 files changed

+17
-11
lines changed

OpenLocoTool/DatFileParsing/LocoObject.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -176,13 +176,13 @@ public ObjectHeader OHeader
176176
set => value.Write().CopyTo(BytesOHeader);
177177
}
178178

179-
const int FixedDataOffset = S5Header.StructLength + ObjectHeader.StructLength;
179+
//const int FixedDataOffset = S5Header.StructLength + ObjectHeader.StructLength;
180180
int FixedDataLength => ObjectTypeFixedSize.GetSize(SHeader.ObjectType);
181-
181+
182182
public ILocoStruct FixedData
183183
{
184-
get => SawyerStreamReader.GetLocoStruct(SHeader.ObjectType, BytesFixedData.AsSpan()[FixedDataOffset..FixedDataLength]);
185-
set => ByteWriter.WriteLocoStruct(value).CopyTo(BytesFixedData.AsSpan()[FixedDataOffset..FixedDataLength]);
184+
get => SawyerStreamReader.GetLocoStruct(SHeader.ObjectType, BytesFixedData.AsSpan()[0..FixedDataLength]);
185+
set => ByteWriter.WriteLocoStruct(value).CopyTo(BytesFixedData.AsSpan()[0..FixedDataLength]);
186186
}
187187

188188
// variable data

OpenLocoTool/DatFileParsing/SawyerStreamReader.cs

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ public IG1Dat LoadG1(string filename)
4545
return new G1Dat(g1Header, imageTable);
4646
}
4747

48-
public void LoadFullExperimental(string filename)
48+
public static LocoMemoryObject LoadFullExperimental(string filename)
4949
{
5050
var fullData = LoadBytesFromFile(filename);
5151
var locoMemoryObject = new LocoMemoryObject();
@@ -58,8 +58,9 @@ public void LoadFullExperimental(string filename)
5858
fullData[(S5Header.StructLength + ObjectHeader.StructLength)..]);
5959

6060
var fixedDataLength = ObjectTypeFixedSize.GetSize(locoMemoryObject.SHeader.ObjectType);
61+
locoMemoryObject.BytesFixedData = new byte[fixedDataLength];
6162
remainingData[0..fixedDataLength].CopyTo(locoMemoryObject.BytesFixedData, 0);
62-
63+
6364
remainingData = remainingData[fixedDataLength..];
6465

6566
var locoStruct = locoMemoryObject.FixedData;
@@ -78,19 +79,20 @@ public void LoadFullExperimental(string filename)
7879
{
7980
remainingData = locoStructExtra.Load(remainingData).ToArray();
8081
}
81-
82+
8283
// some objects have graphics data
8384
var (g1Header, imageTable, imageTableBytesRead) = LoadImageTable(remainingData);
84-
Verify.AreEqual(imageTableBytesRead, remainingData.Length);
8585

8686
// no more data
87+
//Verify.AreEqual(imageTableBytesRead, remainingData.Length);
8788

89+
return locoMemoryObject;
8890
}
8991

9092
// load file
9193
public ILocoObject LoadFull(string filename, bool loadExtra = true)
9294
{
93-
LoadFullExperimental(filename);
95+
//LoadFullExperimental(filename);
9496

9597
ReadOnlySpan<byte> fullData = LoadBytesFromFile(filename);
9698

@@ -151,7 +153,7 @@ public ILocoObject LoadFull(string filename, bool loadExtra = true)
151153
return newObj;
152154
}
153155

154-
(StringTable table, int bytesRead) LoadStringTable(ReadOnlySpan<byte> data, ILocoStruct locoStruct)
156+
static (StringTable table, int bytesRead) LoadStringTable(ReadOnlySpan<byte> data, ILocoStruct locoStruct)
155157
{
156158
var stringAttr = locoStruct.GetType().GetCustomAttribute(typeof(LocoStringCountAttribute), inherit: false) as LocoStringCountAttribute;
157159
var stringsInTable = stringAttr?.Count ?? 1;
@@ -177,7 +179,7 @@ public ILocoObject LoadFull(string filename, bool loadExtra = true)
177179

178180
if (strings.ContainsKey((i, lang)))
179181
{
180-
Logger.Error($"Key {(i, lang)} already exists (this shouldn't happen)");
182+
//Logger.Error($"Key {(i, lang)} already exists (this shouldn't happen)");
181183
break;
182184
}
183185
else

OpenLocoToolGui/MainForm.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -453,6 +453,10 @@ void tv_AfterSelect(object sender, TreeViewEventArgs e)
453453
{
454454
var filename = e.Node.Name;
455455
CurrentUIObject = model.LoadAndCacheObject(filename);
456+
457+
//var exp = SawyerStreamReader.LoadFullExperimental(filename);
458+
//pgObject.SelectedObject = exp;
459+
456460
LoadDataDump(filename);
457461
}
458462
}

0 commit comments

Comments
 (0)