mirror of
https://github.com/celisej567/LibBSP.git
synced 2026-09-17 20:08:55 +03:00
Add support for GoldSrc as a format distinct from Quake 1.
This commit is contained in:
@@ -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:
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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 {
|
||||
/// <returns>The number of lumps used by a BSP of version <paramref name="version"/>.</returns>
|
||||
public static int GetNumLumps(MapType version) {
|
||||
switch (version) {
|
||||
case MapType.Quake: {
|
||||
case MapType.Quake:
|
||||
case MapType.GoldSrc: {
|
||||
return 15;
|
||||
}
|
||||
case MapType.Quake3: {
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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 {
|
||||
/// <exception cref="ArgumentException">This struct is not valid or is not implemented for the given <paramref name="mapType"/> and <paramref name="lumpVersion"/>.</exception>
|
||||
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:
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user