mirror of
https://mirror.ghproxy.com/https://github.com/dexyfex/CodeWalker
synced 2024-11-26 17:02:53 +08:00
Dat151 progress
This commit is contained in:
parent
3bfe19bf80
commit
df34b6f614
@ -506,6 +506,10 @@ namespace CodeWalker.GameFiles
|
|||||||
{
|
{
|
||||||
switch ((Dat151RelType)d.TypeID)
|
switch ((Dat151RelType)d.TypeID)
|
||||||
{
|
{
|
||||||
|
case Dat151RelType.AmbientEmitterList: return new Dat151AmbientEmitterList(d, br);
|
||||||
|
case Dat151RelType.AmbientZone: return new Dat151AmbientZone(d, br);
|
||||||
|
case Dat151RelType.AmbientEmitter: return new Dat151AmbientEmitter(d, br);
|
||||||
|
case Dat151RelType.AmbientZoneList: return new Dat151AmbientZoneList(d, br);
|
||||||
case Dat151RelType.Collision: return new Dat151Collision(d, br); //maybe for vehicle
|
case Dat151RelType.Collision: return new Dat151Collision(d, br); //maybe for vehicle
|
||||||
case Dat151RelType.WeaponAudioItem: return new Dat151WeaponAudioItem(d, br);
|
case Dat151RelType.WeaponAudioItem: return new Dat151WeaponAudioItem(d, br);
|
||||||
case Dat151RelType.StartTrackAction: return new Dat151StartTrackAction(d, br);
|
case Dat151RelType.StartTrackAction: return new Dat151StartTrackAction(d, br);
|
||||||
@ -534,6 +538,11 @@ namespace CodeWalker.GameFiles
|
|||||||
case Dat151RelType.Unk86: return new Dat151Unk86(d, br);
|
case Dat151RelType.Unk86: return new Dat151Unk86(d, br);
|
||||||
case Dat151RelType.Unk81: return new Dat151Unk81(d, br);
|
case Dat151RelType.Unk81: return new Dat151Unk81(d, br);
|
||||||
case Dat151RelType.Unk55: return new Dat151Unk55(d, br);
|
case Dat151RelType.Unk55: return new Dat151Unk55(d, br);
|
||||||
|
case Dat151RelType.ShoreLinePool: return new Dat151ShoreLinePool(d, br);
|
||||||
|
case Dat151RelType.ShoreLineLake: return new Dat151ShoreLineLake(d, br);
|
||||||
|
case Dat151RelType.ShoreLineRiver: return new Dat151ShoreLineRiver(d, br);
|
||||||
|
case Dat151RelType.ShoreLineOcean: return new Dat151ShoreLineOcean(d, br);
|
||||||
|
case Dat151RelType.ShoreLineList: return new Dat151ShoreLineList(d, br);
|
||||||
|
|
||||||
case Dat151RelType.Vehicle:
|
case Dat151RelType.Vehicle:
|
||||||
case Dat151RelType.VehicleEngine:
|
case Dat151RelType.VehicleEngine:
|
||||||
@ -548,11 +557,6 @@ namespace CodeWalker.GameFiles
|
|||||||
case Dat151RelType.VehicleScannerParams: //maybe not just vehicle
|
case Dat151RelType.VehicleScannerParams: //maybe not just vehicle
|
||||||
case Dat151RelType.Explosion:
|
case Dat151RelType.Explosion:
|
||||||
case Dat151RelType.VehicleEngineGranular: //maybe not just vehicle
|
case Dat151RelType.VehicleEngineGranular: //maybe not just vehicle
|
||||||
case Dat151RelType.ShoreLinePool:
|
|
||||||
case Dat151RelType.ShoreLineLake:
|
|
||||||
case Dat151RelType.ShoreLineRiver:
|
|
||||||
case Dat151RelType.ShoreLineOcean:
|
|
||||||
case Dat151RelType.ShoreLineList:
|
|
||||||
case Dat151RelType.Unk2:
|
case Dat151RelType.Unk2:
|
||||||
case Dat151RelType.Unk7:
|
case Dat151RelType.Unk7:
|
||||||
case Dat151RelType.Unk9:
|
case Dat151RelType.Unk9:
|
||||||
@ -615,10 +619,6 @@ namespace CodeWalker.GameFiles
|
|||||||
case Dat151RelType.Unk121:
|
case Dat151RelType.Unk121:
|
||||||
return new Dat151RelData(d, br);
|
return new Dat151RelData(d, br);
|
||||||
|
|
||||||
case Dat151RelType.AmbientEmitterList: return new Dat151AmbientEmitterList(d, br);
|
|
||||||
case Dat151RelType.AmbientZone: return new Dat151AmbientZone(d, br);
|
|
||||||
case Dat151RelType.AmbientEmitter: return new Dat151AmbientEmitter(d, br);
|
|
||||||
case Dat151RelType.AmbientZoneList: return new Dat151AmbientZoneList(d, br);
|
|
||||||
default:
|
default:
|
||||||
return new Dat151RelData(d, br);
|
return new Dat151RelData(d, br);
|
||||||
}
|
}
|
||||||
@ -631,8 +631,124 @@ namespace CodeWalker.GameFiles
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
private void BuildDataBlock()
|
||||||
|
{
|
||||||
|
if (RelDatas == null) return;
|
||||||
|
if (RelDatasSorted == null) return;
|
||||||
|
|
||||||
|
|
||||||
|
switch (RelType)
|
||||||
|
{
|
||||||
|
case RelDatFileType.Dat149:
|
||||||
|
case RelDatFileType.Dat150:
|
||||||
|
case RelDatFileType.Dat151Parameters:
|
||||||
|
break;
|
||||||
|
case RelDatFileType.Dat4://TODO!
|
||||||
|
case RelDatFileType.Dat54DataEntries://TODO!
|
||||||
|
default://TODO..?
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
MemoryStream ms = new MemoryStream();
|
||||||
|
BinaryWriter bw = new BinaryWriter(ms);
|
||||||
|
|
||||||
|
bw.Write(DataUnkVal);
|
||||||
|
|
||||||
|
|
||||||
|
RelData lastrd = null;//debug
|
||||||
|
|
||||||
|
for (int i = 0; i < RelDatasSorted.Length; i++)
|
||||||
|
{
|
||||||
|
|
||||||
|
var rd = RelDatasSorted[i];
|
||||||
|
|
||||||
|
switch ((Dat151RelType)rd.TypeID)
|
||||||
|
{
|
||||||
|
case Dat151RelType.AmbientEmitter:
|
||||||
|
case Dat151RelType.AmbientZone:
|
||||||
|
case Dat151RelType.Unk101:
|
||||||
|
case Dat151RelType.Unk35:
|
||||||
|
while ((ms.Position & 0xF) != 0) bw.Write((byte)0); //pad up to nearest 16 bytes
|
||||||
|
break;
|
||||||
|
case Dat151RelType.Mood:
|
||||||
|
case Dat151RelType.Unk70:
|
||||||
|
case Dat151RelType.Unk29:
|
||||||
|
case Dat151RelType.SpeechParams:
|
||||||
|
case Dat151RelType.Unk11:
|
||||||
|
case Dat151RelType.Unk41:
|
||||||
|
case Dat151RelType.Unk2:
|
||||||
|
case Dat151RelType.AmbientEmitterList:
|
||||||
|
case Dat151RelType.Weapon:
|
||||||
|
case Dat151RelType.Vehicle:
|
||||||
|
case Dat151RelType.StopTrackAction:
|
||||||
|
while ((ms.Position & 3) != 0) bw.Write((byte)0); //align these to nearest 4 bytes
|
||||||
|
break;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
var pos = ms.Position;
|
||||||
|
if (ms.Position != rd.DataOffset)
|
||||||
|
{ }
|
||||||
|
rd.DataOffset = (uint)ms.Position;
|
||||||
|
rd.Write(bw);
|
||||||
|
var lengthwritten = ms.Position - pos;
|
||||||
|
if (lengthwritten != rd.DataLength)
|
||||||
|
{ }
|
||||||
|
|
||||||
|
|
||||||
|
lastrd = rd;
|
||||||
|
}
|
||||||
|
|
||||||
|
var buf = new byte[ms.Length];
|
||||||
|
ms.Position = 0;
|
||||||
|
ms.Read(buf, 0, buf.Length);
|
||||||
|
|
||||||
|
if ((DataBlock?.Length ?? 0) != buf.Length)
|
||||||
|
{ }
|
||||||
|
|
||||||
|
DataBlock = buf;
|
||||||
|
|
||||||
|
}
|
||||||
|
private void BuildIndex()
|
||||||
|
{
|
||||||
|
if (RelDatas == null) return;
|
||||||
|
if (RelDatasSorted == null) return;
|
||||||
|
|
||||||
|
switch (RelType)
|
||||||
|
{
|
||||||
|
case RelDatFileType.Dat149:
|
||||||
|
case RelDatFileType.Dat150:
|
||||||
|
case RelDatFileType.Dat151Parameters:
|
||||||
|
break;
|
||||||
|
case RelDatFileType.Dat4://TODO!
|
||||||
|
case RelDatFileType.Dat54DataEntries://TODO!
|
||||||
|
default://TODO..?
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//var sorted = RelDatasSorted.ToList();
|
||||||
|
//sorted.Sort((a, b) => { return ((uint)a.NameHash).CompareTo((uint)b.NameHash); });
|
||||||
|
//RelDatas = sorted.ToArray();
|
||||||
|
|
||||||
|
var hashes = new RelIndexHash[RelDatas.Length];
|
||||||
|
for (int i = 0; i < RelDatas.Length; i++)
|
||||||
|
{
|
||||||
|
var rd = RelDatas[i];
|
||||||
|
hashes[i] = new RelIndexHash() { Name = rd.NameHash, Offset = rd.DataOffset, Length = rd.DataLength };
|
||||||
|
}
|
||||||
|
//if (hashes.Length != IndexHashes.Length)
|
||||||
|
//{ }
|
||||||
|
|
||||||
|
IndexHashes = hashes;
|
||||||
|
|
||||||
|
}
|
||||||
private void BuildWavesTracks()
|
private void BuildWavesTracks()
|
||||||
{
|
{
|
||||||
|
if (RelDatasSorted == null) return;
|
||||||
|
|
||||||
switch (RelType)
|
switch (RelType)
|
||||||
{
|
{
|
||||||
case RelDatFileType.Dat149:
|
case RelDatFileType.Dat149:
|
||||||
@ -670,6 +786,7 @@ namespace CodeWalker.GameFiles
|
|||||||
|
|
||||||
private void BuildWavesMaps()
|
private void BuildWavesMaps()
|
||||||
{
|
{
|
||||||
|
//for discovering "WavesTracks" offsets
|
||||||
|
|
||||||
var relType = RelType;
|
var relType = RelType;
|
||||||
switch (RelType)
|
switch (RelType)
|
||||||
@ -821,7 +938,6 @@ namespace CodeWalker.GameFiles
|
|||||||
public byte[] Save()
|
public byte[] Save()
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
||||||
//build DataBlock
|
//build DataBlock
|
||||||
//update DataLength
|
//update DataLength
|
||||||
//update NameTableCount
|
//update NameTableCount
|
||||||
@ -833,6 +949,8 @@ namespace CodeWalker.GameFiles
|
|||||||
//update WaveContainersOffsets
|
//update WaveContainersOffsets
|
||||||
//update WaveContainersCount
|
//update WaveContainersCount
|
||||||
|
|
||||||
|
BuildDataBlock();
|
||||||
|
BuildIndex();
|
||||||
BuildWavesTracks();
|
BuildWavesTracks();
|
||||||
|
|
||||||
DataLength = (uint)(DataBlock?.Length ?? 0);
|
DataLength = (uint)(DataBlock?.Length ?? 0);
|
||||||
@ -1035,6 +1153,12 @@ namespace CodeWalker.GameFiles
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public virtual void Write(BinaryWriter bw)
|
||||||
|
{
|
||||||
|
bw.Write(Data); //fallback for default byte array data writing...
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public string GetNameString()
|
public string GetNameString()
|
||||||
{
|
{
|
||||||
return (string.IsNullOrEmpty(Name)) ? NameHash.ToString() : Name;
|
return (string.IsNullOrEmpty(Name)) ? NameHash.ToString() : Name;
|
||||||
@ -2390,21 +2514,25 @@ namespace CodeWalker.GameFiles
|
|||||||
return GetBaseString() + ": " + Type.ToString();
|
return GetBaseString() + ": " + Type.ToString();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
[TC(typeof(EXP))] public class Dat151Sound : RelSound
|
|
||||||
{
|
|
||||||
public Dat151RelType Type { get; set; }
|
|
||||||
|
|
||||||
public Dat151Sound(RelData d, BinaryReader br) : base(d, br)
|
[TC(typeof(EXP))] public struct Dat151HashPair
|
||||||
{
|
{
|
||||||
Type = (Dat151RelType)TypeID;
|
public MetaHash Hash0 { get; set; }
|
||||||
|
public MetaHash Hash1 { get; set; }
|
||||||
|
|
||||||
|
public Dat151HashPair(MetaHash hash0, MetaHash hash1)
|
||||||
|
{
|
||||||
|
Hash0 = hash0;
|
||||||
|
Hash1 = hash1;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override string ToString()
|
public override string ToString()
|
||||||
{
|
{
|
||||||
return GetBaseString() + ": " + Type.ToString();
|
return Hash0.ToString() + ": " + Hash1.ToString();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public enum Dat151ZoneShape : uint
|
public enum Dat151ZoneShape : uint
|
||||||
{
|
{
|
||||||
Box = 0,
|
Box = 0,
|
||||||
@ -2529,6 +2657,7 @@ namespace CodeWalker.GameFiles
|
|||||||
if (ExtParamsCount != 0)
|
if (ExtParamsCount != 0)
|
||||||
{ }
|
{ }
|
||||||
|
|
||||||
|
|
||||||
var data = this.Data;
|
var data = this.Data;
|
||||||
|
|
||||||
long bytesleft = br.BaseStream.Length - br.BaseStream.Position;
|
long bytesleft = br.BaseStream.Length - br.BaseStream.Position;
|
||||||
@ -2917,24 +3046,6 @@ namespace CodeWalker.GameFiles
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
[TC(typeof(EXP))] public struct Dat151HashPair
|
|
||||||
{
|
|
||||||
public MetaHash Hash0 { get; set; }
|
|
||||||
public MetaHash Hash1 { get; set; }
|
|
||||||
|
|
||||||
public Dat151HashPair(MetaHash hash0, MetaHash hash1)
|
|
||||||
{
|
|
||||||
Hash0 = hash0;
|
|
||||||
Hash1 = hash1;
|
|
||||||
}
|
|
||||||
|
|
||||||
public override string ToString()
|
|
||||||
{
|
|
||||||
return Hash0.ToString() + ": " + Hash1.ToString();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
[TC(typeof(EXP))] public class Dat151WeaponAudioItem : Dat151RelData
|
[TC(typeof(EXP))] public class Dat151WeaponAudioItem : Dat151RelData
|
||||||
{
|
{
|
||||||
public MetaHash AudioTrack0 { get; set; }
|
public MetaHash AudioTrack0 { get; set; }
|
||||||
@ -4249,11 +4360,185 @@ namespace CodeWalker.GameFiles
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[TC(typeof(EXP))] public class Dat151ShoreLinePool : Dat151RelData
|
||||||
|
{
|
||||||
|
public uint Unk01 { get; set; }
|
||||||
|
public Vector4 Unk02 { get; set; }
|
||||||
|
public int Unk03 { get; set; }
|
||||||
|
public int Unk04 { get; set; }
|
||||||
|
public int Unk05 { get; set; }
|
||||||
|
public int Unk06 { get; set; }
|
||||||
|
public int Unk07 { get; set; }
|
||||||
|
public int Unk08 { get; set; }
|
||||||
|
public int Unk09 { get; set; }
|
||||||
|
public int Unk10 { get; set; }
|
||||||
|
public int Unk11 { get; set; }
|
||||||
|
public float Unk12 { get; set; }
|
||||||
|
public int PointsCount { get; set; }
|
||||||
|
public Vector2[] Points { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
public Dat151ShoreLinePool(RelData d, BinaryReader br) : base(d, br)
|
||||||
|
{
|
||||||
|
Unk01 = br.ReadUInt32();
|
||||||
|
Unk02 = new Vector4(br.ReadSingle(), br.ReadSingle(), br.ReadSingle(), br.ReadSingle());
|
||||||
|
Unk03 = br.ReadInt32();
|
||||||
|
Unk04 = br.ReadInt32();
|
||||||
|
Unk05 = br.ReadInt32();
|
||||||
|
Unk06 = br.ReadInt32();
|
||||||
|
Unk07 = br.ReadInt32();
|
||||||
|
Unk08 = br.ReadInt32();
|
||||||
|
Unk09 = br.ReadInt32();
|
||||||
|
Unk10 = br.ReadInt32();
|
||||||
|
Unk11 = br.ReadInt32();
|
||||||
|
Unk12 = br.ReadSingle();
|
||||||
|
|
||||||
|
PointsCount = br.ReadInt32();
|
||||||
|
var points = new Vector2[PointsCount];
|
||||||
|
for (int i = 0; i < PointsCount; i++)
|
||||||
|
{
|
||||||
|
points[i] = new Vector2(br.ReadSingle(), br.ReadSingle());
|
||||||
|
}
|
||||||
|
Points = points;
|
||||||
|
|
||||||
|
var bytesleft = br.BaseStream.Length - br.BaseStream.Position;
|
||||||
|
if (bytesleft != 0)
|
||||||
|
{ }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
[TC(typeof(EXP))] public class Dat151ShoreLineLake : Dat151RelData
|
||||||
|
{
|
||||||
|
public uint Unk01 { get; set; }
|
||||||
|
public Vector4 Unk02 { get; set; }
|
||||||
|
public int Unk03 { get; set; }
|
||||||
|
public int Unk04 { get; set; }
|
||||||
|
public uint Unk05 { get; set; }
|
||||||
|
public int PointsCount { get; set; }
|
||||||
|
public Vector2[] Points { get; set; }
|
||||||
|
|
||||||
|
public Dat151ShoreLineLake(RelData d, BinaryReader br) : base(d, br)
|
||||||
|
{
|
||||||
|
Unk01 = br.ReadUInt32();
|
||||||
|
Unk02 = new Vector4(br.ReadSingle(), br.ReadSingle(), br.ReadSingle(), br.ReadSingle());
|
||||||
|
Unk03 = br.ReadInt32();
|
||||||
|
Unk04 = br.ReadInt32();
|
||||||
|
Unk05 = br.ReadUInt32();
|
||||||
|
|
||||||
|
byte b1 = (byte)((Unk05) & 0xFF);
|
||||||
|
byte b2 = (byte)((Unk05>>8) & 0xFF);
|
||||||
|
PointsCount = b2;
|
||||||
|
|
||||||
|
var points = new Vector2[PointsCount];
|
||||||
|
for (int i = 0; i < PointsCount; i++)
|
||||||
|
{
|
||||||
|
points[i] = new Vector2(br.ReadSingle(), br.ReadSingle());
|
||||||
|
}
|
||||||
|
Points = points;
|
||||||
|
|
||||||
|
var bytesleft = br.BaseStream.Length - br.BaseStream.Position;
|
||||||
|
if (bytesleft != 0)
|
||||||
|
{ }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
[TC(typeof(EXP))] public class Dat151ShoreLineRiver : Dat151RelData
|
||||||
|
{
|
||||||
|
public uint Unk01 { get; set; }
|
||||||
|
public Vector4 Unk02 { get; set; }
|
||||||
|
public float Unk03 { get; set; }
|
||||||
|
public uint Unk04 { get; set; }
|
||||||
|
public uint Unk05 { get; set; }
|
||||||
|
public uint Unk06 { get; set; }
|
||||||
|
public uint PointsCount { get; set; }
|
||||||
|
public Vector3[] Points { get; set; }
|
||||||
|
|
||||||
|
public Dat151ShoreLineRiver(RelData d, BinaryReader br) : base(d, br)
|
||||||
|
{
|
||||||
|
Unk01 = br.ReadUInt32();
|
||||||
|
Unk02 = new Vector4(br.ReadSingle(), br.ReadSingle(), br.ReadSingle(), br.ReadSingle());
|
||||||
|
Unk03 = br.ReadSingle();
|
||||||
|
Unk04 = br.ReadUInt32();
|
||||||
|
Unk05 = br.ReadUInt32();
|
||||||
|
Unk06 = br.ReadUInt32();
|
||||||
|
PointsCount = br.ReadUInt32();
|
||||||
|
|
||||||
|
var points = new Vector3[PointsCount];
|
||||||
|
for (int i = 0; i < PointsCount; i++)
|
||||||
|
{
|
||||||
|
points[i] = new Vector3(br.ReadSingle(), br.ReadSingle(), br.ReadSingle());
|
||||||
|
}
|
||||||
|
Points = points;
|
||||||
|
|
||||||
|
var bytesleft = br.BaseStream.Length - br.BaseStream.Position;
|
||||||
|
if (bytesleft != 0)
|
||||||
|
{ }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
[TC(typeof(EXP))] public class Dat151ShoreLineOcean : Dat151RelData
|
||||||
|
{
|
||||||
|
public uint Unk01 { get; set; }
|
||||||
|
public Vector4 Unk02 { get; set; }
|
||||||
|
public float Unk03 { get; set; }
|
||||||
|
public uint Unk04 { get; set; }
|
||||||
|
public MetaHash Unk05 { get; set; }
|
||||||
|
public float Unk06 { get; set; }
|
||||||
|
public float Unk07 { get; set; }
|
||||||
|
public float Unk08 { get; set; }
|
||||||
|
public float Unk09 { get; set; }
|
||||||
|
public float Unk10 { get; set; }
|
||||||
|
public float Unk11 { get; set; }
|
||||||
|
public float Unk12 { get; set; }
|
||||||
|
public uint PointsCount { get; set; }
|
||||||
|
public Vector2[] Points { get; set; }
|
||||||
|
|
||||||
|
public Dat151ShoreLineOcean(RelData d, BinaryReader br) : base(d, br)
|
||||||
|
{
|
||||||
|
Unk01 = br.ReadUInt32();
|
||||||
|
Unk02 = new Vector4(br.ReadSingle(), br.ReadSingle(), br.ReadSingle(), br.ReadSingle());
|
||||||
|
Unk03 = br.ReadSingle();
|
||||||
|
Unk04 = br.ReadUInt32();
|
||||||
|
Unk05 = br.ReadUInt32();
|
||||||
|
Unk06 = br.ReadSingle();
|
||||||
|
Unk07 = br.ReadSingle();
|
||||||
|
Unk08 = br.ReadSingle();
|
||||||
|
Unk09 = br.ReadSingle();
|
||||||
|
Unk10 = br.ReadSingle();
|
||||||
|
Unk11 = br.ReadSingle();
|
||||||
|
Unk12 = br.ReadSingle();
|
||||||
|
|
||||||
|
PointsCount = br.ReadUInt32();
|
||||||
|
|
||||||
|
var points = new Vector2[PointsCount];
|
||||||
|
for (int i = 0; i < PointsCount; i++)
|
||||||
|
{
|
||||||
|
points[i] = new Vector2(br.ReadSingle(), br.ReadSingle());
|
||||||
|
}
|
||||||
|
Points = points;
|
||||||
|
|
||||||
|
var bytesleft = br.BaseStream.Length - br.BaseStream.Position;
|
||||||
|
if (bytesleft != 0)
|
||||||
|
{ }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
[TC(typeof(EXP))] public class Dat151ShoreLineList : Dat151RelData
|
||||||
|
{
|
||||||
|
public uint ShoreLineCount { get; set; }
|
||||||
|
public MetaHash[] ShoreLines { get; set; }
|
||||||
|
|
||||||
|
public Dat151ShoreLineList(RelData d, BinaryReader br) : base(d, br)
|
||||||
|
{
|
||||||
|
ShoreLineCount = br.ReadUInt32();
|
||||||
|
var shorelines = new MetaHash[ShoreLineCount];
|
||||||
|
for (int i = 0; i < ShoreLineCount; i++)
|
||||||
|
{
|
||||||
|
shorelines[i] = br.ReadUInt32();
|
||||||
|
}
|
||||||
|
ShoreLines = shorelines;
|
||||||
|
|
||||||
|
var bytesleft = br.BaseStream.Length - br.BaseStream.Position;
|
||||||
|
if (bytesleft != 0)
|
||||||
|
{ }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -2216,12 +2216,15 @@ namespace CodeWalker.GameFiles
|
|||||||
{
|
{
|
||||||
if (data.Length != rbfe.FileUncompressedSize)
|
if (data.Length != rbfe.FileUncompressedSize)
|
||||||
{ }
|
{ }
|
||||||
if (data.Length != rel.RawFileData.Length)
|
else if (data.Length != rel.RawFileData.Length)
|
||||||
{ }
|
{ }
|
||||||
|
else
|
||||||
|
{
|
||||||
for (int i = 0; i < data.Length; i++) //raw file test
|
for (int i = 0; i < data.Length; i++) //raw file test
|
||||||
if (data[i] != rel.RawFileData[i])
|
if (data[i] != rel.RawFileData[i])
|
||||||
{ }
|
{ }
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
RelFile rel2 = new RelFile();
|
RelFile rel2 = new RelFile();
|
||||||
|
Loading…
Reference in New Issue
Block a user