diff --git a/LibBSP/Source/Extensions/PlaneExtensions.cs b/LibBSP/Source/Extensions/PlaneExtensions.cs index cb7ff59..d011c79 100644 --- a/LibBSP/Source/Extensions/PlaneExtensions.cs +++ b/LibBSP/Source/Extensions/PlaneExtensions.cs @@ -297,6 +297,7 @@ namespace LibBSP { byte[] bytes = new byte[GetStructLength(type, version)]; switch (type) { case MapType.Quake: + case MapType.GoldSrc: case MapType.Nightfire: case MapType.SiN: case MapType.SoF: @@ -401,6 +402,7 @@ namespace LibBSP { case MapType.STEF2: case MapType.STEF2Demo: case MapType.Quake: + case MapType.GoldSrc: case MapType.Quake2: case MapType.SiN: case MapType.Daikatana: @@ -446,6 +448,7 @@ namespace LibBSP { int structLength = 0; switch (type) { case MapType.Quake: + case MapType.GoldSrc: case MapType.Nightfire: case MapType.SiN: case MapType.SoF: diff --git a/LibBSP/Source/Extensions/VertexExtensions.cs b/LibBSP/Source/Extensions/VertexExtensions.cs index a93d3bc..18fe9cf 100644 --- a/LibBSP/Source/Extensions/VertexExtensions.cs +++ b/LibBSP/Source/Extensions/VertexExtensions.cs @@ -129,6 +129,7 @@ namespace LibBSP { goto case MapType.Quake; } case MapType.Quake: + case MapType.GoldSrc: case MapType.Nightfire: case MapType.SiN: case MapType.SoF: @@ -196,6 +197,7 @@ namespace LibBSP { return 2; } case MapType.Quake: + case MapType.GoldSrc: case MapType.Vindictus: case MapType.TacticalInterventionEncrypted: case MapType.Source17: @@ -279,6 +281,7 @@ namespace LibBSP { int structLength = 0; switch (type) { case MapType.Quake: + case MapType.GoldSrc: case MapType.Nightfire: case MapType.SiN: case MapType.SoF: @@ -347,6 +350,7 @@ namespace LibBSP { switch (type) { case MapType.Quake: + case MapType.GoldSrc: case MapType.Nightfire: case MapType.SiN: case MapType.SoF: diff --git a/LibBSP/Source/Structs/BSP/BSP.cs b/LibBSP/Source/Structs/BSP/BSP.cs index e870af9..b9013a0 100644 --- a/LibBSP/Source/Structs/BSP/BSP.cs +++ b/LibBSP/Source/Structs/BSP/BSP.cs @@ -28,7 +28,7 @@ namespace LibBSP { public enum MapType : int { Undefined = 0, Quake = 29, - // TYPE_GOLDSRC = 30, // Uses mostly the same structures as Quake + GoldSrc = 30, // Uses mostly the same structures as Quake Nightfire = 42, Vindictus = 346131372, STEF2 = 556942937, @@ -758,7 +758,8 @@ namespace LibBSP { /// The number of lumps used by a BSP of version . public static int GetNumLumps(MapType version) { switch (version) { - case MapType.Quake: { + case MapType.Quake: + case MapType.GoldSrc: { return 15; } case MapType.Quake3: { diff --git a/LibBSP/Source/Structs/BSP/Edge.cs b/LibBSP/Source/Structs/BSP/Edge.cs index 3c4ead5..1b5e41c 100644 --- a/LibBSP/Source/Structs/BSP/Edge.cs +++ b/LibBSP/Source/Structs/BSP/Edge.cs @@ -71,6 +71,7 @@ namespace LibBSP { get { switch (MapType) { case MapType.Quake: + case MapType.GoldSrc: case MapType.SiN: case MapType.Daikatana: case MapType.Source17: @@ -100,6 +101,7 @@ namespace LibBSP { byte[] bytes = BitConverter.GetBytes(value); switch (MapType) { case MapType.Quake: + case MapType.GoldSrc: case MapType.SiN: case MapType.Daikatana: case MapType.Source17: @@ -143,6 +145,7 @@ namespace LibBSP { get { switch (MapType) { case MapType.Quake: + case MapType.GoldSrc: case MapType.SiN: case MapType.Daikatana: case MapType.Source17: @@ -172,6 +175,7 @@ namespace LibBSP { byte[] bytes = BitConverter.GetBytes(value); switch (MapType) { case MapType.Quake: + case MapType.GoldSrc: case MapType.SiN: case MapType.Daikatana: case MapType.Source17: @@ -275,6 +279,7 @@ namespace LibBSP { public static int GetStructLength(MapType mapType, int lumpVersion = 0) { switch (mapType) { case MapType.Quake: + case MapType.GoldSrc: case MapType.SiN: case MapType.Daikatana: case MapType.Source17: @@ -315,6 +320,7 @@ namespace LibBSP { return 11; } case MapType.Quake: + case MapType.GoldSrc: case MapType.Vindictus: case MapType.TacticalInterventionEncrypted: case MapType.Source17: diff --git a/LibBSP/Source/Structs/BSP/Face.cs b/LibBSP/Source/Structs/BSP/Face.cs index f8fb129..2b9f1d0 100644 --- a/LibBSP/Source/Structs/BSP/Face.cs +++ b/LibBSP/Source/Structs/BSP/Face.cs @@ -93,6 +93,7 @@ namespace LibBSP { get { switch (MapType) { case MapType.Quake: + case MapType.GoldSrc: case MapType.Quake2: case MapType.Daikatana: case MapType.SiN: @@ -125,6 +126,7 @@ namespace LibBSP { byte[] bytes = BitConverter.GetBytes(value); switch (MapType) { case MapType.Quake: + case MapType.GoldSrc: case MapType.Quake2: case MapType.Daikatana: case MapType.SiN: @@ -164,6 +166,7 @@ namespace LibBSP { get { switch (MapType) { case MapType.Quake: + case MapType.GoldSrc: case MapType.Quake2: case MapType.Daikatana: case MapType.SiN: @@ -196,6 +199,7 @@ namespace LibBSP { set { switch (MapType) { case MapType.Quake: + case MapType.GoldSrc: case MapType.Quake2: case MapType.Daikatana: case MapType.SiN: @@ -303,6 +307,7 @@ namespace LibBSP { get { switch (MapType) { case MapType.Quake: + case MapType.GoldSrc: case MapType.Quake2: case MapType.Daikatana: case MapType.SiN: @@ -334,6 +339,7 @@ namespace LibBSP { byte[] bytes = BitConverter.GetBytes(value); switch (MapType) { case MapType.Quake: + case MapType.GoldSrc: case MapType.Quake2: case MapType.Daikatana: case MapType.SiN: @@ -371,6 +377,7 @@ namespace LibBSP { get { switch (MapType) { case MapType.Quake: + case MapType.GoldSrc: case MapType.Quake2: case MapType.Daikatana: case MapType.SiN: @@ -402,6 +409,7 @@ namespace LibBSP { byte[] bytes = BitConverter.GetBytes(value); switch (MapType) { case MapType.Quake: + case MapType.GoldSrc: case MapType.Quake2: case MapType.Daikatana: case MapType.SiN: @@ -679,6 +687,7 @@ namespace LibBSP { get { switch (MapType) { case MapType.Quake: + case MapType.GoldSrc: case MapType.Source18: case MapType.Source19: case MapType.Source20: @@ -709,6 +718,7 @@ namespace LibBSP { byte[] bytes = BitConverter.GetBytes(value); switch (MapType) { case MapType.Quake: + case MapType.GoldSrc: case MapType.Source18: case MapType.Source19: case MapType.Source20: @@ -1196,6 +1206,7 @@ namespace LibBSP { get { switch (MapType) { case MapType.Quake: + case MapType.GoldSrc: case MapType.Quake2: case MapType.Daikatana: { byte[] bytes = new byte[4]; @@ -1253,6 +1264,7 @@ namespace LibBSP { set { switch (MapType) { case MapType.Quake: + case MapType.GoldSrc: case MapType.Quake2: case MapType.Daikatana: { Array.Copy(value, 0, Data, 12, Math.Min(value.Length, 4)); @@ -1362,6 +1374,7 @@ namespace LibBSP { return BitConverter.ToInt16(Data, 2); } case MapType.Quake: + case MapType.GoldSrc: case MapType.Quake2: case MapType.Daikatana: { return BitConverter.ToInt32(Data, 16); @@ -1418,6 +1431,7 @@ namespace LibBSP { break; } case MapType.Quake: + case MapType.GoldSrc: case MapType.Quake2: case MapType.Daikatana: { bytes.CopyTo(Data, 16); @@ -2350,6 +2364,7 @@ namespace LibBSP { return 16; } case MapType.Quake: + case MapType.GoldSrc: case MapType.Quake2: case MapType.Daikatana: { return 20; @@ -2443,7 +2458,8 @@ namespace LibBSP { case MapType.Source27: case MapType.L4D2: case MapType.DMoMaM: - case MapType.Quake: { + case MapType.Quake: + case MapType.GoldSrc: { return 7; } case MapType.Nightfire: diff --git a/LibBSP/Source/Structs/BSP/Leaf.cs b/LibBSP/Source/Structs/BSP/Leaf.cs index ca5c589..ab17586 100644 --- a/LibBSP/Source/Structs/BSP/Leaf.cs +++ b/LibBSP/Source/Structs/BSP/Leaf.cs @@ -61,6 +61,7 @@ namespace LibBSP { get { switch (MapType) { case MapType.Quake: + case MapType.GoldSrc: case MapType.Quake2: case MapType.SoF: case MapType.SiN: @@ -89,6 +90,7 @@ namespace LibBSP { byte[] bytes = BitConverter.GetBytes(value); switch (MapType) { case MapType.Quake: + case MapType.GoldSrc: case MapType.Quake2: case MapType.SoF: case MapType.SiN: @@ -131,6 +133,7 @@ namespace LibBSP { return BitConverter.ToInt32(Data, 0); } case MapType.Quake: + case MapType.GoldSrc: case MapType.Nightfire: case MapType.Vindictus: { return BitConverter.ToInt32(Data, 4); @@ -173,6 +176,7 @@ namespace LibBSP { break; } case MapType.Quake: + case MapType.GoldSrc: case MapType.Nightfire: case MapType.Vindictus: { bytes.CopyTo(Data, 4); @@ -348,6 +352,7 @@ namespace LibBSP { return new Vector3(BitConverter.ToInt32(Data, 8), BitConverter.ToInt32(Data, 12), BitConverter.ToInt32(Data, 16)); } case MapType.Quake: + case MapType.GoldSrc: case MapType.Quake2: case MapType.Daikatana: case MapType.SiN: @@ -392,6 +397,7 @@ namespace LibBSP { break; } case MapType.Quake: + case MapType.GoldSrc: case MapType.Quake2: case MapType.Daikatana: case MapType.SiN: @@ -448,6 +454,7 @@ namespace LibBSP { return new Vector3(BitConverter.ToInt32(Data, 20), BitConverter.ToInt32(Data, 24), BitConverter.ToInt32(Data, 28)); } case MapType.Quake: + case MapType.GoldSrc: case MapType.Quake2: case MapType.Daikatana: case MapType.SiN: @@ -492,6 +499,7 @@ namespace LibBSP { break; } case MapType.Quake: + case MapType.GoldSrc: case MapType.Quake2: case MapType.Daikatana: case MapType.SiN: @@ -766,6 +774,7 @@ namespace LibBSP { get { switch (MapType) { case MapType.Quake: + case MapType.GoldSrc: case MapType.Quake2: case MapType.SiN: case MapType.Source17: @@ -806,6 +815,7 @@ namespace LibBSP { byte[] bytes = BitConverter.GetBytes(value); switch (MapType) { case MapType.Quake: + case MapType.GoldSrc: case MapType.Quake2: case MapType.SiN: case MapType.Source17: @@ -854,6 +864,7 @@ namespace LibBSP { get { switch (MapType) { case MapType.Quake: + case MapType.GoldSrc: case MapType.Quake2: case MapType.SiN: case MapType.Source17: @@ -894,6 +905,7 @@ namespace LibBSP { byte[] bytes = BitConverter.GetBytes(value); switch (MapType) { case MapType.Quake: + case MapType.GoldSrc: case MapType.Quake2: case MapType.SiN: case MapType.Source17: @@ -941,7 +953,8 @@ namespace LibBSP { public byte WaterSoundLevel { get { switch (MapType) { - case MapType.Quake: { + case MapType.Quake: + case MapType.GoldSrc: { return Data[24]; } default: { @@ -951,7 +964,8 @@ namespace LibBSP { } set { switch (MapType) { - case MapType.Quake: { + case MapType.Quake: + case MapType.GoldSrc: { Data[24] = value; break; } @@ -965,7 +979,8 @@ namespace LibBSP { public byte SkySoundLevel { get { switch (MapType) { - case MapType.Quake: { + case MapType.Quake: + case MapType.GoldSrc: { return Data[25]; } default: { @@ -975,7 +990,8 @@ namespace LibBSP { } set { switch (MapType) { - case MapType.Quake: { + case MapType.Quake: + case MapType.GoldSrc: { Data[25] = value; break; } @@ -989,7 +1005,8 @@ namespace LibBSP { public byte SlimeSoundLevel { get { switch (MapType) { - case MapType.Quake: { + case MapType.Quake: + case MapType.GoldSrc: { return Data[26]; } default: { @@ -999,7 +1016,8 @@ namespace LibBSP { } set { switch (MapType) { - case MapType.Quake: { + case MapType.Quake: + case MapType.GoldSrc: { Data[26] = value; break; } @@ -1013,7 +1031,8 @@ namespace LibBSP { public byte LavaSoundLevel { get { switch (MapType) { - case MapType.Quake: { + case MapType.Quake: + case MapType.GoldSrc: { return Data[27]; } default: { @@ -1023,7 +1042,8 @@ namespace LibBSP { } set { switch (MapType) { - case MapType.Quake: { + case MapType.Quake: + case MapType.GoldSrc: { Data[27] = value; break; } @@ -1252,6 +1272,7 @@ namespace LibBSP { return 24; } case MapType.Quake: + case MapType.GoldSrc: case MapType.Quake2: case MapType.SiN: { return 28; @@ -1317,6 +1338,7 @@ namespace LibBSP { case MapType.STEF2: case MapType.STEF2Demo: case MapType.Quake: + case MapType.GoldSrc: case MapType.Vindictus: case MapType.TacticalInterventionEncrypted: case MapType.Source17: diff --git a/LibBSP/Source/Structs/BSP/Lumps/Textures.cs b/LibBSP/Source/Structs/BSP/Lumps/Textures.cs index e6869bd..023e76b 100644 --- a/LibBSP/Source/Structs/BSP/Lumps/Textures.cs +++ b/LibBSP/Source/Structs/BSP/Lumps/Textures.cs @@ -100,7 +100,8 @@ namespace LibBSP { } return; } - case MapType.Quake: { + case MapType.Quake: + case MapType.GoldSrc: { int numElements = BitConverter.ToInt32(data, 0); structLength = 40; for (int i = 0; i < numElements; ++i) { diff --git a/LibBSP/Source/Structs/BSP/Model.cs b/LibBSP/Source/Structs/BSP/Model.cs index 53ded66..58df6ed 100644 --- a/LibBSP/Source/Structs/BSP/Model.cs +++ b/LibBSP/Source/Structs/BSP/Model.cs @@ -73,6 +73,7 @@ namespace LibBSP { return BitConverter.ToInt32(Data, 24); } case MapType.Quake: + case MapType.GoldSrc: case MapType.Quake2: case MapType.Daikatana: case MapType.SiN: @@ -106,6 +107,7 @@ namespace LibBSP { break; } case MapType.Quake: + case MapType.GoldSrc: case MapType.Quake2: case MapType.Daikatana: case MapType.SiN: @@ -141,7 +143,8 @@ namespace LibBSP { case MapType.Nightfire: { return BitConverter.ToInt32(Data, 28); } - case MapType.Quake: { + case MapType.Quake: + case MapType.GoldSrc: { return BitConverter.ToInt32(Data, 40); } default: { @@ -156,7 +159,8 @@ namespace LibBSP { bytes.CopyTo(Data, 28); break; } - case MapType.Quake: { + case MapType.Quake: + case MapType.GoldSrc: { bytes.CopyTo(Data, 40); break; } @@ -173,7 +177,8 @@ namespace LibBSP { case MapType.Nightfire: { return BitConverter.ToInt32(Data, 32); } - case MapType.Quake: { + case MapType.Quake: + case MapType.GoldSrc: { return BitConverter.ToInt32(Data, 44); } default: { @@ -188,7 +193,8 @@ namespace LibBSP { bytes.CopyTo(Data, 32); break; } - case MapType.Quake: { + case MapType.Quake: + case MapType.GoldSrc: { bytes.CopyTo(Data, 44); break; } @@ -205,7 +211,8 @@ namespace LibBSP { case MapType.Nightfire: { return BitConverter.ToInt32(Data, 36); } - case MapType.Quake: { + case MapType.Quake: + case MapType.GoldSrc: { return BitConverter.ToInt32(Data, 48); } default: { @@ -220,7 +227,8 @@ namespace LibBSP { bytes.CopyTo(Data, 36); break; } - case MapType.Quake: { + case MapType.Quake: + case MapType.GoldSrc: { bytes.CopyTo(Data, 48); break; } @@ -273,7 +281,8 @@ namespace LibBSP { case MapType.Nightfire: { return BitConverter.ToInt32(Data, 44); } - case MapType.Quake: { + case MapType.Quake: + case MapType.GoldSrc: { return BitConverter.ToInt32(Data, 52); } default: { @@ -288,7 +297,8 @@ namespace LibBSP { bytes.CopyTo(Data, 44); break; } - case MapType.Quake: { + case MapType.Quake: + case MapType.GoldSrc: { bytes.CopyTo(Data, 52); break; } @@ -452,7 +462,8 @@ namespace LibBSP { case MapType.Nightfire: { return BitConverter.ToInt32(Data, 48); } - case MapType.Quake: { + case MapType.Quake: + case MapType.GoldSrc: { return BitConverter.ToInt32(Data, 56); } default: { @@ -505,7 +516,8 @@ namespace LibBSP { bytes.CopyTo(Data, 48); break; } - case MapType.Quake: { + case MapType.Quake: + case MapType.GoldSrc: { bytes.CopyTo(Data, 56); break; } @@ -555,7 +567,8 @@ namespace LibBSP { case MapType.Nightfire: { return BitConverter.ToInt32(Data, 52); } - case MapType.Quake: { + case MapType.Quake: + case MapType.GoldSrc: { return BitConverter.ToInt32(Data, 60); } default: { @@ -608,7 +621,8 @@ namespace LibBSP { bytes.CopyTo(Data, 52); break; } - case MapType.Quake: { + case MapType.Quake: + case MapType.GoldSrc: { bytes.CopyTo(Data, 60); break; } @@ -684,6 +698,7 @@ namespace LibBSP { get { switch (MapType) { case MapType.Quake: + case MapType.GoldSrc: case MapType.Quake2: case MapType.Quake3: case MapType.SiN: @@ -721,6 +736,7 @@ namespace LibBSP { set { switch (MapType) { case MapType.Quake: + case MapType.GoldSrc: case MapType.Quake2: case MapType.Quake3: case MapType.SiN: @@ -762,6 +778,7 @@ namespace LibBSP { get { switch (MapType) { case MapType.Quake: + case MapType.GoldSrc: case MapType.Quake2: case MapType.Quake3: case MapType.Nightfire: @@ -796,6 +813,7 @@ namespace LibBSP { set { switch (MapType) { case MapType.Quake: + case MapType.GoldSrc: case MapType.Quake2: case MapType.Quake3: case MapType.Nightfire: @@ -1008,7 +1026,8 @@ namespace LibBSP { case MapType.Nightfire: { return 56; } - case MapType.Quake: { + case MapType.Quake: + case MapType.GoldSrc: { return 64; } default: { @@ -1037,6 +1056,7 @@ namespace LibBSP { return 13; } case MapType.Quake: + case MapType.GoldSrc: case MapType.Nightfire: case MapType.Vindictus: case MapType.TacticalInterventionEncrypted: diff --git a/LibBSP/Source/Structs/BSP/Node.cs b/LibBSP/Source/Structs/BSP/Node.cs index f770df0..eb5a705 100644 --- a/LibBSP/Source/Structs/BSP/Node.cs +++ b/LibBSP/Source/Structs/BSP/Node.cs @@ -97,7 +97,8 @@ namespace LibBSP { public int Child1Index { get { switch (MapType) { - case MapType.Quake: { + case MapType.Quake: + case MapType.GoldSrc: { return BitConverter.ToInt16(Data, 4); } case MapType.SiN: @@ -135,7 +136,8 @@ namespace LibBSP { set { byte[] bytes = BitConverter.GetBytes(value); switch (MapType) { - case MapType.Quake: { + case MapType.Quake: + case MapType.GoldSrc: { Data[4] = bytes[0]; Data[5] = bytes[1]; break; @@ -191,7 +193,8 @@ namespace LibBSP { public int Child2Index { get { switch (MapType) { - case MapType.Quake: { + case MapType.Quake: + case MapType.GoldSrc: { return BitConverter.ToInt16(Data, 6); } case MapType.SiN: @@ -229,7 +232,8 @@ namespace LibBSP { set { byte[] bytes = BitConverter.GetBytes(value); switch (MapType) { - case MapType.Quake: { + case MapType.Quake: + case MapType.GoldSrc: { Data[6] = bytes[0]; Data[7] = bytes[1]; break; @@ -272,7 +276,8 @@ namespace LibBSP { public Vector3 Minimums { get { switch (MapType) { - case MapType.Quake: { + case MapType.Quake: + case MapType.GoldSrc: { return new Vector3(BitConverter.ToInt16(Data, 8), BitConverter.ToInt16(Data, 10), BitConverter.ToInt16(Data, 12)); } case MapType.Quake2: @@ -314,7 +319,8 @@ namespace LibBSP { } set { switch (MapType) { - case MapType.Quake: { + case MapType.Quake: + case MapType.GoldSrc: { BitConverter.GetBytes((short)value.X()).CopyTo(Data, 8); BitConverter.GetBytes((short)value.Y()).CopyTo(Data, 10); BitConverter.GetBytes((short)value.Z()).CopyTo(Data, 12); @@ -371,7 +377,8 @@ namespace LibBSP { public Vector3 Maximums { get { switch (MapType) { - case MapType.Quake: { + case MapType.Quake: + case MapType.GoldSrc: { return new Vector3(BitConverter.ToInt16(Data, 14), BitConverter.ToInt16(Data, 16), BitConverter.ToInt16(Data, 18)); } case MapType.Quake2: @@ -413,7 +420,8 @@ namespace LibBSP { } set { switch (MapType) { - case MapType.Quake: { + case MapType.Quake: + case MapType.GoldSrc: { BitConverter.GetBytes((short)value.X()).CopyTo(Data, 14); BitConverter.GetBytes((short)value.Y()).CopyTo(Data, 16); BitConverter.GetBytes((short)value.Z()).CopyTo(Data, 18); @@ -482,7 +490,8 @@ namespace LibBSP { public int FirstFaceIndex { get { switch (MapType) { - case MapType.Quake: { + case MapType.Quake: + case MapType.GoldSrc: { return BitConverter.ToUInt16(Data, 20); } case MapType.Quake2: @@ -513,7 +522,8 @@ namespace LibBSP { set { byte[] bytes = BitConverter.GetBytes(value); switch (MapType) { - case MapType.Quake: { + case MapType.Quake: + case MapType.GoldSrc: { Data[20] = bytes[0]; Data[21] = bytes[1]; break; @@ -552,7 +562,8 @@ namespace LibBSP { public int NumFaceIndices { get { switch (MapType) { - case MapType.Quake: { + case MapType.Quake: + case MapType.GoldSrc: { return BitConverter.ToUInt16(Data, 22); } case MapType.Quake2: @@ -582,7 +593,8 @@ namespace LibBSP { set { byte[] bytes = BitConverter.GetBytes(value); switch (MapType) { - case MapType.Quake: { + case MapType.Quake: + case MapType.GoldSrc: { Data[22] = bytes[0]; Data[23] = bytes[1]; break; @@ -740,7 +752,8 @@ namespace LibBSP { /// This struct is not valid or is not implemented for the given and . public static int GetStructLength(MapType mapType, int lumpVersion = 0) { switch (mapType) { - case MapType.Quake: { + case MapType.Quake: + case MapType.GoldSrc: { return 24; } case MapType.Quake2: @@ -800,6 +813,7 @@ namespace LibBSP { return 4; } case MapType.Quake: + case MapType.GoldSrc: case MapType.Vindictus: case MapType.TacticalInterventionEncrypted: case MapType.Source17: diff --git a/LibBSP/Source/Structs/BSP/Texture.cs b/LibBSP/Source/Structs/BSP/Texture.cs index 528de52..d997c69 100644 --- a/LibBSP/Source/Structs/BSP/Texture.cs +++ b/LibBSP/Source/Structs/BSP/Texture.cs @@ -69,7 +69,8 @@ namespace LibBSP { public string Name { get { switch (MapType) { - case MapType.Quake: { + case MapType.Quake: + case MapType.GoldSrc: { return Data.ToNullTerminatedString(0, 16); } case MapType.STEF2: @@ -115,7 +116,8 @@ namespace LibBSP { set { byte[] bytes = Encoding.ASCII.GetBytes(value); switch (MapType) { - case MapType.Quake: { + case MapType.Quake: + case MapType.GoldSrc: { for (int i = 0; i < 16; ++i) { Data[i] = 0; } @@ -344,7 +346,8 @@ namespace LibBSP { public uint Width { get { switch (MapType) { - case MapType.Quake: { + case MapType.Quake: + case MapType.GoldSrc: { return BitConverter.ToUInt32(Data, 16); } default: { @@ -355,7 +358,8 @@ namespace LibBSP { set { byte[] bytes = BitConverter.GetBytes(value); switch (MapType) { - case MapType.Quake: { + case MapType.Quake: + case MapType.GoldSrc: { bytes.CopyTo(Data, 16); break; } @@ -369,7 +373,8 @@ namespace LibBSP { public uint Height { get { switch (MapType) { - case MapType.Quake: { + case MapType.Quake: + case MapType.GoldSrc: { return BitConverter.ToUInt32(Data, 20); } default: { @@ -380,7 +385,8 @@ namespace LibBSP { set { byte[] bytes = BitConverter.GetBytes(value); switch (MapType) { - case MapType.Quake: { + case MapType.Quake: + case MapType.GoldSrc: { bytes.CopyTo(Data, 20); break; } @@ -394,7 +400,8 @@ namespace LibBSP { public uint OffsetFull { get { switch (MapType) { - case MapType.Quake: { + case MapType.Quake: + case MapType.GoldSrc: { return BitConverter.ToUInt32(Data, 24); } default: { @@ -405,7 +412,8 @@ namespace LibBSP { set { byte[] bytes = BitConverter.GetBytes(value); switch (MapType) { - case MapType.Quake: { + case MapType.Quake: + case MapType.GoldSrc: { bytes.CopyTo(Data, 24); break; } @@ -419,7 +427,8 @@ namespace LibBSP { public uint OffsetHalf { get { switch (MapType) { - case MapType.Quake: { + case MapType.Quake: + case MapType.GoldSrc: { return BitConverter.ToUInt32(Data, 28); } default: { @@ -430,7 +439,8 @@ namespace LibBSP { set { byte[] bytes = BitConverter.GetBytes(value); switch (MapType) { - case MapType.Quake: { + case MapType.Quake: + case MapType.GoldSrc: { bytes.CopyTo(Data, 28); break; } @@ -444,7 +454,8 @@ namespace LibBSP { public uint OffsetQuarter { get { switch (MapType) { - case MapType.Quake: { + case MapType.Quake: + case MapType.GoldSrc: { return BitConverter.ToUInt32(Data, 32); } default: { @@ -455,7 +466,8 @@ namespace LibBSP { set { byte[] bytes = BitConverter.GetBytes(value); switch (MapType) { - case MapType.Quake: { + case MapType.Quake: + case MapType.GoldSrc: { bytes.CopyTo(Data, 32); break; } @@ -469,7 +481,8 @@ namespace LibBSP { public uint OffsetEighth { get { switch (MapType) { - case MapType.Quake: { + case MapType.Quake: + case MapType.GoldSrc: { return BitConverter.ToUInt32(Data, 36); } default: { @@ -480,7 +493,8 @@ namespace LibBSP { set { byte[] bytes = BitConverter.GetBytes(value); switch (MapType) { - case MapType.Quake: { + case MapType.Quake: + case MapType.GoldSrc: { bytes.CopyTo(Data, 36); break; } @@ -693,6 +707,7 @@ namespace LibBSP { return 1; } case MapType.Quake: + case MapType.GoldSrc: case MapType.Nightfire: { return 2; } diff --git a/LibBSP/Source/Structs/Common/Entity.cs b/LibBSP/Source/Structs/Common/Entity.cs index 56361f5..4a4496e 100644 --- a/LibBSP/Source/Structs/Common/Entity.cs +++ b/LibBSP/Source/Structs/Common/Entity.cs @@ -651,6 +651,7 @@ namespace LibBSP { case MapType.Raven: case MapType.Quake3: case MapType.Quake: + case MapType.GoldSrc: case MapType.Quake2: case MapType.SiN: case MapType.Daikatana: diff --git a/LibBSP/Source/Structs/Common/Lumps/NumList.cs b/LibBSP/Source/Structs/Common/Lumps/NumList.cs index 50e7745..e69530e 100644 --- a/LibBSP/Source/Structs/Common/Lumps/NumList.cs +++ b/LibBSP/Source/Structs/Common/Lumps/NumList.cs @@ -130,7 +130,8 @@ namespace LibBSP { dataType = DataType.UInt32; return 9; } - case MapType.Quake: { + case MapType.Quake: + case MapType.GoldSrc: { dataType = DataType.UInt16; return 11; } @@ -181,6 +182,7 @@ namespace LibBSP { return 12; } case MapType.Quake: + case MapType.GoldSrc: case MapType.Vindictus: case MapType.TacticalInterventionEncrypted: case MapType.Source17: diff --git a/LibBSP/Source/Structs/Common/TextureInfo.cs b/LibBSP/Source/Structs/Common/TextureInfo.cs index c2aad60..898febe 100644 --- a/LibBSP/Source/Structs/Common/TextureInfo.cs +++ b/LibBSP/Source/Structs/Common/TextureInfo.cs @@ -125,6 +125,7 @@ namespace LibBSP { return BitConverter.ToInt32(Data, 88); } case MapType.Quake: + case MapType.GoldSrc: case MapType.Undefined: { return BitConverter.ToInt32(Data, 36); } @@ -155,6 +156,7 @@ namespace LibBSP { break; } case MapType.Quake: + case MapType.GoldSrc: case MapType.Undefined: { bytes.CopyTo(Data, 36); break; @@ -192,6 +194,7 @@ namespace LibBSP { return BitConverter.ToInt32(Data, 92); } case MapType.Quake: + case MapType.GoldSrc: case MapType.Undefined: { return BitConverter.ToInt32(Data, 32); } @@ -222,6 +225,7 @@ namespace LibBSP { break; } case MapType.Quake: + case MapType.GoldSrc: case MapType.Undefined: { bytes.CopyTo(Data, 32); break; @@ -312,6 +316,7 @@ namespace LibBSP { return 32; } case MapType.Quake: + case MapType.GoldSrc: case MapType.Undefined: { return 40; } @@ -345,6 +350,7 @@ namespace LibBSP { public static int GetIndexForLump(MapType type) { switch (type) { case MapType.Quake: + case MapType.GoldSrc: case MapType.Vindictus: case MapType.TacticalInterventionEncrypted: case MapType.Source17: diff --git a/LibBSP/Source/Util/BSPReader.cs b/LibBSP/Source/Util/BSPReader.cs index 06efd68..0306eab 100644 --- a/LibBSP/Source/Util/BSPReader.cs +++ b/LibBSP/Source/Util/BSPReader.cs @@ -51,6 +51,7 @@ namespace LibBSP { switch (version) { case MapType.Quake: + case MapType.GoldSrc: case MapType.Nightfire: { return GetLumpInfoAtOffset(4 + (8 * index), version); } @@ -534,11 +535,14 @@ namespace LibBSP { } // Various numbers not representing a string // Formats: HL1, Quake, Nightfire, or perhaps Tactical Intervention's encrypted format - case 29: - case 30: { + case 29: { current = MapType.Quake; break; } + case 30: { + current = MapType.GoldSrc; + break; + } case 42: { current = MapType.Nightfire; break;