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;