74 lines
2.4 KiB
C#
74 lines
2.4 KiB
C#
// Decompiled with JetBrains decompiler
|
|
// Type: Terraria.IO.FileMetadata
|
|
// Assembly: Terraria, Version=1.4.0.5, Culture=neutral, PublicKeyToken=null
|
|
// MVID: 67F9E73E-0A81-4937-A22C-5515CD405A83
|
|
// Assembly location: C:\Users\mikeyisbaeyt\Downloads\depotdownloader-2.4.5\depots\105601\6707058\Terraria.exe
|
|
|
|
using System;
|
|
using System.IO;
|
|
|
|
namespace Terraria.IO
|
|
{
|
|
public class FileMetadata
|
|
{
|
|
public const ulong MAGIC_NUMBER = 27981915666277746;
|
|
public const int SIZE = 20;
|
|
public FileType Type;
|
|
public uint Revision;
|
|
public bool IsFavorite;
|
|
|
|
private FileMetadata()
|
|
{
|
|
}
|
|
|
|
public void Write(BinaryWriter writer)
|
|
{
|
|
writer.Write((ulong) (27981915666277746L | (long) this.Type << 56));
|
|
writer.Write(this.Revision);
|
|
writer.Write((ulong) (this.IsFavorite.ToInt() & 1 | 0));
|
|
}
|
|
|
|
public void IncrementAndWrite(BinaryWriter writer)
|
|
{
|
|
++this.Revision;
|
|
this.Write(writer);
|
|
}
|
|
|
|
public static FileMetadata FromCurrentSettings(FileType type) => new FileMetadata()
|
|
{
|
|
Type = type,
|
|
Revision = 0,
|
|
IsFavorite = false
|
|
};
|
|
|
|
public static FileMetadata Read(BinaryReader reader, FileType expectedType)
|
|
{
|
|
FileMetadata fileMetadata = new FileMetadata();
|
|
fileMetadata.Read(reader);
|
|
if (fileMetadata.Type != expectedType)
|
|
throw new FileFormatException("Expected type \"" + Enum.GetName(typeof (FileType), (object) expectedType) + "\" but found \"" + Enum.GetName(typeof (FileType), (object) fileMetadata.Type) + "\".");
|
|
return fileMetadata;
|
|
}
|
|
|
|
private void Read(BinaryReader reader)
|
|
{
|
|
long num1 = (long) reader.ReadUInt64();
|
|
if ((num1 & 72057594037927935L) != 27981915666277746L)
|
|
throw new FileFormatException("Expected Re-Logic file format.");
|
|
byte num2 = (byte) ((ulong) num1 >> 56 & (ulong) byte.MaxValue);
|
|
FileType fileType = FileType.None;
|
|
FileType[] values = (FileType[]) Enum.GetValues(typeof (FileType));
|
|
for (int index = 0; index < values.Length; ++index)
|
|
{
|
|
if (values[index] == (FileType) num2)
|
|
{
|
|
fileType = values[index];
|
|
break;
|
|
}
|
|
}
|
|
this.Type = fileType != FileType.None ? fileType : throw new FileFormatException("Found invalid file type.");
|
|
this.Revision = reader.ReadUInt32();
|
|
this.IsFavorite = ((long) reader.ReadUInt64() & 1L) == 1L;
|
|
}
|
|
}
|
|
}
|