Skip to content

Commit

Permalink
Simplified count unserialization of every "UndertaleSingleChunk<>".
Browse files Browse the repository at this point in the history
  • Loading branch information
VladiStep committed Feb 1, 2023
1 parent 22575bc commit b13e7bb
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 29 deletions.
9 changes: 8 additions & 1 deletion UndertaleModLib/UndertaleChunkTypes.cs
Original file line number Diff line number Diff line change
Expand Up @@ -193,7 +193,14 @@ internal override void UnserializeChunk(UndertaleReader reader)
Object = reader.ReadUndertaleObject<T>();
}

internal override uint UnserializeObjectCount(UndertaleReader reader) => 1;
internal override uint UnserializeObjectCount(UndertaleReader reader)
{
uint count = 1;

count += reader.GetChildObjectCount<T>();

return count;
}

public UndertaleObject GetObject() => Object;

Expand Down
30 changes: 2 additions & 28 deletions UndertaleModLib/UndertaleChunks.cs
Original file line number Diff line number Diff line change
Expand Up @@ -113,29 +113,11 @@ internal override uint UnserializeObjectCount(UndertaleReader reader)
public class UndertaleChunkGEN8 : UndertaleSingleChunk<UndertaleGeneralInfo>
{
public override string Name => "GEN8";

internal override uint UnserializeObjectCount(UndertaleReader reader)
{
uint count = 1;

count += UndertaleGeneralInfo.UnserializeChildObjectCount(reader);

return count;
}
}

public class UndertaleChunkOPTN : UndertaleSingleChunk<UndertaleOptions>
{
public override string Name => "OPTN";

internal override uint UnserializeObjectCount(UndertaleReader reader)
{
uint count = 1;

count += UndertaleOptions.UnserializeChildObjectCount(reader);

return count;
}
}

public class UndertaleChunkLANG : UndertaleSingleChunk<UndertaleLanguage>
Expand Down Expand Up @@ -1112,18 +1094,14 @@ internal override void UnserializeChunk(UndertaleReader reader)

internal override uint UnserializeObjectCount(UndertaleReader reader)
{
uint count = 1;

// Padding
while (reader.Position % 4 != 0)
if (reader.ReadByte() != 0)
throw new IOException("Padding error!");

reader.Position += 4;

count += UndertaleTags.UnserializeChildObjectCount(reader);

return count;
return base.UnserializeObjectCount(reader);
}
}

Expand Down Expand Up @@ -1193,16 +1171,12 @@ internal override void UnserializeChunk(UndertaleReader reader)

internal override uint UnserializeObjectCount(UndertaleReader reader)
{
uint count = 1;

// Padding
while (reader.Position % 4 != 0)
if (reader.ReadByte() != 0)
throw new IOException("Padding error!");

count += UndertaleFeatureFlags.UnserializeChildObjectCount(reader);

return count;
return base.UnserializeObjectCount(reader);
}
}
}

0 comments on commit b13e7bb

Please sign in to comment.