mirror of
https://github.com/celisej567/LibBSP.git
synced 2025-12-31 13:48:15 +03:00
Fix Half-Life Blue Shift. They switched the Entities and Planes lumps.
This commit is contained in:
@@ -298,6 +298,7 @@ namespace LibBSP {
|
||||
switch (type) {
|
||||
case MapType.Quake:
|
||||
case MapType.GoldSrc:
|
||||
case MapType.BlueShift:
|
||||
case MapType.Nightfire:
|
||||
case MapType.SiN:
|
||||
case MapType.SoF:
|
||||
@@ -397,6 +398,9 @@ namespace LibBSP {
|
||||
/// <returns>Index for this lump, or -1 if the format doesn't have this lump or it's not implemented.</returns>
|
||||
public static int GetIndexForLump(MapType type) {
|
||||
switch (type) {
|
||||
case MapType.BlueShift: {
|
||||
return 0;
|
||||
}
|
||||
case MapType.FAKK:
|
||||
case MapType.MOHAA:
|
||||
case MapType.STEF2:
|
||||
@@ -449,6 +453,7 @@ namespace LibBSP {
|
||||
switch (type) {
|
||||
case MapType.Quake:
|
||||
case MapType.GoldSrc:
|
||||
case MapType.BlueShift:
|
||||
case MapType.Nightfire:
|
||||
case MapType.SiN:
|
||||
case MapType.SoF:
|
||||
|
||||
@@ -130,6 +130,7 @@ namespace LibBSP {
|
||||
}
|
||||
case MapType.Quake:
|
||||
case MapType.GoldSrc:
|
||||
case MapType.BlueShift:
|
||||
case MapType.Nightfire:
|
||||
case MapType.SiN:
|
||||
case MapType.SoF:
|
||||
@@ -198,6 +199,7 @@ namespace LibBSP {
|
||||
}
|
||||
case MapType.Quake:
|
||||
case MapType.GoldSrc:
|
||||
case MapType.BlueShift:
|
||||
case MapType.Vindictus:
|
||||
case MapType.TacticalInterventionEncrypted:
|
||||
case MapType.Source17:
|
||||
@@ -282,6 +284,7 @@ namespace LibBSP {
|
||||
switch (type) {
|
||||
case MapType.Quake:
|
||||
case MapType.GoldSrc:
|
||||
case MapType.BlueShift:
|
||||
case MapType.Nightfire:
|
||||
case MapType.SiN:
|
||||
case MapType.SoF:
|
||||
@@ -351,6 +354,7 @@ namespace LibBSP {
|
||||
switch (type) {
|
||||
case MapType.Quake:
|
||||
case MapType.GoldSrc:
|
||||
case MapType.BlueShift:
|
||||
case MapType.Nightfire:
|
||||
case MapType.SiN:
|
||||
case MapType.SoF:
|
||||
|
||||
@@ -29,6 +29,7 @@ namespace LibBSP {
|
||||
Undefined = 0,
|
||||
Quake = 29,
|
||||
GoldSrc = 30, // Uses mostly the same structures as Quake
|
||||
BlueShift = 31, // Blue Shift has a different lump order
|
||||
Nightfire = 42,
|
||||
Vindictus = 346131372,
|
||||
STEF2 = 556942937,
|
||||
@@ -790,7 +791,8 @@ namespace LibBSP {
|
||||
public static int GetNumLumps(MapType version) {
|
||||
switch (version) {
|
||||
case MapType.Quake:
|
||||
case MapType.GoldSrc: {
|
||||
case MapType.GoldSrc:
|
||||
case MapType.BlueShift: {
|
||||
return 15;
|
||||
}
|
||||
case MapType.Quake3: {
|
||||
|
||||
@@ -72,6 +72,7 @@ namespace LibBSP {
|
||||
switch (MapType) {
|
||||
case MapType.Quake:
|
||||
case MapType.GoldSrc:
|
||||
case MapType.BlueShift:
|
||||
case MapType.SiN:
|
||||
case MapType.Daikatana:
|
||||
case MapType.Source17:
|
||||
@@ -102,6 +103,7 @@ namespace LibBSP {
|
||||
switch (MapType) {
|
||||
case MapType.Quake:
|
||||
case MapType.GoldSrc:
|
||||
case MapType.BlueShift:
|
||||
case MapType.SiN:
|
||||
case MapType.Daikatana:
|
||||
case MapType.Source17:
|
||||
@@ -146,6 +148,7 @@ namespace LibBSP {
|
||||
switch (MapType) {
|
||||
case MapType.Quake:
|
||||
case MapType.GoldSrc:
|
||||
case MapType.BlueShift:
|
||||
case MapType.SiN:
|
||||
case MapType.Daikatana:
|
||||
case MapType.Source17:
|
||||
@@ -176,6 +179,7 @@ namespace LibBSP {
|
||||
switch (MapType) {
|
||||
case MapType.Quake:
|
||||
case MapType.GoldSrc:
|
||||
case MapType.BlueShift:
|
||||
case MapType.SiN:
|
||||
case MapType.Daikatana:
|
||||
case MapType.Source17:
|
||||
@@ -280,6 +284,7 @@ namespace LibBSP {
|
||||
switch (mapType) {
|
||||
case MapType.Quake:
|
||||
case MapType.GoldSrc:
|
||||
case MapType.BlueShift:
|
||||
case MapType.SiN:
|
||||
case MapType.Daikatana:
|
||||
case MapType.Source17:
|
||||
@@ -321,6 +326,7 @@ namespace LibBSP {
|
||||
}
|
||||
case MapType.Quake:
|
||||
case MapType.GoldSrc:
|
||||
case MapType.BlueShift:
|
||||
case MapType.Vindictus:
|
||||
case MapType.TacticalInterventionEncrypted:
|
||||
case MapType.Source17:
|
||||
|
||||
@@ -94,6 +94,7 @@ namespace LibBSP {
|
||||
switch (MapType) {
|
||||
case MapType.Quake:
|
||||
case MapType.GoldSrc:
|
||||
case MapType.BlueShift:
|
||||
case MapType.Quake2:
|
||||
case MapType.Daikatana:
|
||||
case MapType.SiN:
|
||||
@@ -127,6 +128,7 @@ namespace LibBSP {
|
||||
switch (MapType) {
|
||||
case MapType.Quake:
|
||||
case MapType.GoldSrc:
|
||||
case MapType.BlueShift:
|
||||
case MapType.Quake2:
|
||||
case MapType.Daikatana:
|
||||
case MapType.SiN:
|
||||
@@ -167,6 +169,7 @@ namespace LibBSP {
|
||||
switch (MapType) {
|
||||
case MapType.Quake:
|
||||
case MapType.GoldSrc:
|
||||
case MapType.BlueShift:
|
||||
case MapType.Quake2:
|
||||
case MapType.Daikatana:
|
||||
case MapType.SiN:
|
||||
@@ -200,6 +203,7 @@ namespace LibBSP {
|
||||
switch (MapType) {
|
||||
case MapType.Quake:
|
||||
case MapType.GoldSrc:
|
||||
case MapType.BlueShift:
|
||||
case MapType.Quake2:
|
||||
case MapType.Daikatana:
|
||||
case MapType.SiN:
|
||||
@@ -308,6 +312,7 @@ namespace LibBSP {
|
||||
switch (MapType) {
|
||||
case MapType.Quake:
|
||||
case MapType.GoldSrc:
|
||||
case MapType.BlueShift:
|
||||
case MapType.Quake2:
|
||||
case MapType.Daikatana:
|
||||
case MapType.SiN:
|
||||
@@ -340,6 +345,7 @@ namespace LibBSP {
|
||||
switch (MapType) {
|
||||
case MapType.Quake:
|
||||
case MapType.GoldSrc:
|
||||
case MapType.BlueShift:
|
||||
case MapType.Quake2:
|
||||
case MapType.Daikatana:
|
||||
case MapType.SiN:
|
||||
@@ -378,6 +384,7 @@ namespace LibBSP {
|
||||
switch (MapType) {
|
||||
case MapType.Quake:
|
||||
case MapType.GoldSrc:
|
||||
case MapType.BlueShift:
|
||||
case MapType.Quake2:
|
||||
case MapType.Daikatana:
|
||||
case MapType.SiN:
|
||||
@@ -410,6 +417,7 @@ namespace LibBSP {
|
||||
switch (MapType) {
|
||||
case MapType.Quake:
|
||||
case MapType.GoldSrc:
|
||||
case MapType.BlueShift:
|
||||
case MapType.Quake2:
|
||||
case MapType.Daikatana:
|
||||
case MapType.SiN:
|
||||
@@ -688,6 +696,7 @@ namespace LibBSP {
|
||||
switch (MapType) {
|
||||
case MapType.Quake:
|
||||
case MapType.GoldSrc:
|
||||
case MapType.BlueShift:
|
||||
case MapType.Source18:
|
||||
case MapType.Source19:
|
||||
case MapType.Source20:
|
||||
@@ -719,6 +728,7 @@ namespace LibBSP {
|
||||
switch (MapType) {
|
||||
case MapType.Quake:
|
||||
case MapType.GoldSrc:
|
||||
case MapType.BlueShift:
|
||||
case MapType.Source18:
|
||||
case MapType.Source19:
|
||||
case MapType.Source20:
|
||||
@@ -1207,6 +1217,7 @@ namespace LibBSP {
|
||||
switch (MapType) {
|
||||
case MapType.Quake:
|
||||
case MapType.GoldSrc:
|
||||
case MapType.BlueShift:
|
||||
case MapType.Quake2:
|
||||
case MapType.Daikatana: {
|
||||
byte[] bytes = new byte[4];
|
||||
@@ -1265,6 +1276,7 @@ namespace LibBSP {
|
||||
switch (MapType) {
|
||||
case MapType.Quake:
|
||||
case MapType.GoldSrc:
|
||||
case MapType.BlueShift:
|
||||
case MapType.Quake2:
|
||||
case MapType.Daikatana: {
|
||||
Array.Copy(value, 0, Data, 12, Math.Min(value.Length, 4));
|
||||
@@ -1375,6 +1387,7 @@ namespace LibBSP {
|
||||
}
|
||||
case MapType.Quake:
|
||||
case MapType.GoldSrc:
|
||||
case MapType.BlueShift:
|
||||
case MapType.Quake2:
|
||||
case MapType.Daikatana: {
|
||||
return BitConverter.ToInt32(Data, 16);
|
||||
@@ -1432,6 +1445,7 @@ namespace LibBSP {
|
||||
}
|
||||
case MapType.Quake:
|
||||
case MapType.GoldSrc:
|
||||
case MapType.BlueShift:
|
||||
case MapType.Quake2:
|
||||
case MapType.Daikatana: {
|
||||
bytes.CopyTo(Data, 16);
|
||||
@@ -2365,6 +2379,7 @@ namespace LibBSP {
|
||||
}
|
||||
case MapType.Quake:
|
||||
case MapType.GoldSrc:
|
||||
case MapType.BlueShift:
|
||||
case MapType.Quake2:
|
||||
case MapType.Daikatana: {
|
||||
return 20;
|
||||
@@ -2459,7 +2474,8 @@ namespace LibBSP {
|
||||
case MapType.L4D2:
|
||||
case MapType.DMoMaM:
|
||||
case MapType.Quake:
|
||||
case MapType.GoldSrc: {
|
||||
case MapType.GoldSrc:
|
||||
case MapType.BlueShift: {
|
||||
return 7;
|
||||
}
|
||||
case MapType.Nightfire:
|
||||
|
||||
@@ -62,6 +62,7 @@ namespace LibBSP {
|
||||
switch (MapType) {
|
||||
case MapType.Quake:
|
||||
case MapType.GoldSrc:
|
||||
case MapType.BlueShift:
|
||||
case MapType.Quake2:
|
||||
case MapType.SoF:
|
||||
case MapType.SiN:
|
||||
@@ -91,6 +92,7 @@ namespace LibBSP {
|
||||
switch (MapType) {
|
||||
case MapType.Quake:
|
||||
case MapType.GoldSrc:
|
||||
case MapType.BlueShift:
|
||||
case MapType.Quake2:
|
||||
case MapType.SoF:
|
||||
case MapType.SiN:
|
||||
@@ -134,6 +136,7 @@ namespace LibBSP {
|
||||
}
|
||||
case MapType.Quake:
|
||||
case MapType.GoldSrc:
|
||||
case MapType.BlueShift:
|
||||
case MapType.Nightfire:
|
||||
case MapType.Vindictus: {
|
||||
return BitConverter.ToInt32(Data, 4);
|
||||
@@ -177,6 +180,7 @@ namespace LibBSP {
|
||||
}
|
||||
case MapType.Quake:
|
||||
case MapType.GoldSrc:
|
||||
case MapType.BlueShift:
|
||||
case MapType.Nightfire:
|
||||
case MapType.Vindictus: {
|
||||
bytes.CopyTo(Data, 4);
|
||||
@@ -353,6 +357,7 @@ namespace LibBSP {
|
||||
}
|
||||
case MapType.Quake:
|
||||
case MapType.GoldSrc:
|
||||
case MapType.BlueShift:
|
||||
case MapType.Quake2:
|
||||
case MapType.Daikatana:
|
||||
case MapType.SiN:
|
||||
@@ -398,6 +403,7 @@ namespace LibBSP {
|
||||
}
|
||||
case MapType.Quake:
|
||||
case MapType.GoldSrc:
|
||||
case MapType.BlueShift:
|
||||
case MapType.Quake2:
|
||||
case MapType.Daikatana:
|
||||
case MapType.SiN:
|
||||
@@ -455,6 +461,7 @@ namespace LibBSP {
|
||||
}
|
||||
case MapType.Quake:
|
||||
case MapType.GoldSrc:
|
||||
case MapType.BlueShift:
|
||||
case MapType.Quake2:
|
||||
case MapType.Daikatana:
|
||||
case MapType.SiN:
|
||||
@@ -500,6 +507,7 @@ namespace LibBSP {
|
||||
}
|
||||
case MapType.Quake:
|
||||
case MapType.GoldSrc:
|
||||
case MapType.BlueShift:
|
||||
case MapType.Quake2:
|
||||
case MapType.Daikatana:
|
||||
case MapType.SiN:
|
||||
@@ -775,6 +783,7 @@ namespace LibBSP {
|
||||
switch (MapType) {
|
||||
case MapType.Quake:
|
||||
case MapType.GoldSrc:
|
||||
case MapType.BlueShift:
|
||||
case MapType.Quake2:
|
||||
case MapType.SiN:
|
||||
case MapType.Source17:
|
||||
@@ -816,6 +825,7 @@ namespace LibBSP {
|
||||
switch (MapType) {
|
||||
case MapType.Quake:
|
||||
case MapType.GoldSrc:
|
||||
case MapType.BlueShift:
|
||||
case MapType.Quake2:
|
||||
case MapType.SiN:
|
||||
case MapType.Source17:
|
||||
@@ -865,6 +875,7 @@ namespace LibBSP {
|
||||
switch (MapType) {
|
||||
case MapType.Quake:
|
||||
case MapType.GoldSrc:
|
||||
case MapType.BlueShift:
|
||||
case MapType.Quake2:
|
||||
case MapType.SiN:
|
||||
case MapType.Source17:
|
||||
@@ -906,6 +917,7 @@ namespace LibBSP {
|
||||
switch (MapType) {
|
||||
case MapType.Quake:
|
||||
case MapType.GoldSrc:
|
||||
case MapType.BlueShift:
|
||||
case MapType.Quake2:
|
||||
case MapType.SiN:
|
||||
case MapType.Source17:
|
||||
@@ -954,7 +966,8 @@ namespace LibBSP {
|
||||
get {
|
||||
switch (MapType) {
|
||||
case MapType.Quake:
|
||||
case MapType.GoldSrc: {
|
||||
case MapType.GoldSrc:
|
||||
case MapType.BlueShift: {
|
||||
return Data[24];
|
||||
}
|
||||
default: {
|
||||
@@ -965,7 +978,8 @@ namespace LibBSP {
|
||||
set {
|
||||
switch (MapType) {
|
||||
case MapType.Quake:
|
||||
case MapType.GoldSrc: {
|
||||
case MapType.GoldSrc:
|
||||
case MapType.BlueShift: {
|
||||
Data[24] = value;
|
||||
break;
|
||||
}
|
||||
@@ -980,7 +994,8 @@ namespace LibBSP {
|
||||
get {
|
||||
switch (MapType) {
|
||||
case MapType.Quake:
|
||||
case MapType.GoldSrc: {
|
||||
case MapType.GoldSrc:
|
||||
case MapType.BlueShift: {
|
||||
return Data[25];
|
||||
}
|
||||
default: {
|
||||
@@ -991,7 +1006,8 @@ namespace LibBSP {
|
||||
set {
|
||||
switch (MapType) {
|
||||
case MapType.Quake:
|
||||
case MapType.GoldSrc: {
|
||||
case MapType.GoldSrc:
|
||||
case MapType.BlueShift: {
|
||||
Data[25] = value;
|
||||
break;
|
||||
}
|
||||
@@ -1006,7 +1022,8 @@ namespace LibBSP {
|
||||
get {
|
||||
switch (MapType) {
|
||||
case MapType.Quake:
|
||||
case MapType.GoldSrc: {
|
||||
case MapType.GoldSrc:
|
||||
case MapType.BlueShift: {
|
||||
return Data[26];
|
||||
}
|
||||
default: {
|
||||
@@ -1017,7 +1034,8 @@ namespace LibBSP {
|
||||
set {
|
||||
switch (MapType) {
|
||||
case MapType.Quake:
|
||||
case MapType.GoldSrc: {
|
||||
case MapType.GoldSrc:
|
||||
case MapType.BlueShift: {
|
||||
Data[26] = value;
|
||||
break;
|
||||
}
|
||||
@@ -1032,7 +1050,8 @@ namespace LibBSP {
|
||||
get {
|
||||
switch (MapType) {
|
||||
case MapType.Quake:
|
||||
case MapType.GoldSrc: {
|
||||
case MapType.GoldSrc:
|
||||
case MapType.BlueShift: {
|
||||
return Data[27];
|
||||
}
|
||||
default: {
|
||||
@@ -1043,7 +1062,8 @@ namespace LibBSP {
|
||||
set {
|
||||
switch (MapType) {
|
||||
case MapType.Quake:
|
||||
case MapType.GoldSrc: {
|
||||
case MapType.GoldSrc:
|
||||
case MapType.BlueShift: {
|
||||
Data[27] = value;
|
||||
break;
|
||||
}
|
||||
@@ -1273,6 +1293,7 @@ namespace LibBSP {
|
||||
}
|
||||
case MapType.Quake:
|
||||
case MapType.GoldSrc:
|
||||
case MapType.BlueShift:
|
||||
case MapType.Quake2:
|
||||
case MapType.SiN: {
|
||||
return 28;
|
||||
@@ -1339,6 +1360,7 @@ namespace LibBSP {
|
||||
case MapType.STEF2Demo:
|
||||
case MapType.Quake:
|
||||
case MapType.GoldSrc:
|
||||
case MapType.BlueShift:
|
||||
case MapType.Vindictus:
|
||||
case MapType.TacticalInterventionEncrypted:
|
||||
case MapType.Source17:
|
||||
|
||||
@@ -76,6 +76,7 @@ namespace LibBSP {
|
||||
}
|
||||
case MapType.Quake:
|
||||
case MapType.GoldSrc:
|
||||
case MapType.BlueShift:
|
||||
case MapType.Vindictus:
|
||||
case MapType.TacticalInterventionEncrypted:
|
||||
case MapType.Source17:
|
||||
|
||||
@@ -101,7 +101,8 @@ namespace LibBSP {
|
||||
return;
|
||||
}
|
||||
case MapType.Quake:
|
||||
case MapType.GoldSrc: {
|
||||
case MapType.GoldSrc:
|
||||
case MapType.BlueShift: {
|
||||
int numElements = BitConverter.ToInt32(data, 0);
|
||||
structLength = 40;
|
||||
int currentOffset;
|
||||
|
||||
@@ -256,6 +256,7 @@ namespace LibBSP {
|
||||
}
|
||||
case MapType.Quake:
|
||||
case MapType.GoldSrc:
|
||||
case MapType.BlueShift:
|
||||
case MapType.Vindictus:
|
||||
case MapType.TacticalInterventionEncrypted:
|
||||
case MapType.Source17:
|
||||
|
||||
@@ -74,6 +74,7 @@ namespace LibBSP {
|
||||
}
|
||||
case MapType.Quake:
|
||||
case MapType.GoldSrc:
|
||||
case MapType.BlueShift:
|
||||
case MapType.Quake2:
|
||||
case MapType.Daikatana:
|
||||
case MapType.SiN:
|
||||
@@ -108,6 +109,7 @@ namespace LibBSP {
|
||||
}
|
||||
case MapType.Quake:
|
||||
case MapType.GoldSrc:
|
||||
case MapType.BlueShift:
|
||||
case MapType.Quake2:
|
||||
case MapType.Daikatana:
|
||||
case MapType.SiN:
|
||||
@@ -144,7 +146,8 @@ namespace LibBSP {
|
||||
return BitConverter.ToInt32(Data, 28);
|
||||
}
|
||||
case MapType.Quake:
|
||||
case MapType.GoldSrc: {
|
||||
case MapType.GoldSrc:
|
||||
case MapType.BlueShift: {
|
||||
return BitConverter.ToInt32(Data, 40);
|
||||
}
|
||||
default: {
|
||||
@@ -160,7 +163,8 @@ namespace LibBSP {
|
||||
break;
|
||||
}
|
||||
case MapType.Quake:
|
||||
case MapType.GoldSrc: {
|
||||
case MapType.GoldSrc:
|
||||
case MapType.BlueShift: {
|
||||
bytes.CopyTo(Data, 40);
|
||||
break;
|
||||
}
|
||||
@@ -178,7 +182,8 @@ namespace LibBSP {
|
||||
return BitConverter.ToInt32(Data, 32);
|
||||
}
|
||||
case MapType.Quake:
|
||||
case MapType.GoldSrc: {
|
||||
case MapType.GoldSrc:
|
||||
case MapType.BlueShift: {
|
||||
return BitConverter.ToInt32(Data, 44);
|
||||
}
|
||||
default: {
|
||||
@@ -194,7 +199,8 @@ namespace LibBSP {
|
||||
break;
|
||||
}
|
||||
case MapType.Quake:
|
||||
case MapType.GoldSrc: {
|
||||
case MapType.GoldSrc:
|
||||
case MapType.BlueShift: {
|
||||
bytes.CopyTo(Data, 44);
|
||||
break;
|
||||
}
|
||||
@@ -212,7 +218,8 @@ namespace LibBSP {
|
||||
return BitConverter.ToInt32(Data, 36);
|
||||
}
|
||||
case MapType.Quake:
|
||||
case MapType.GoldSrc: {
|
||||
case MapType.GoldSrc:
|
||||
case MapType.BlueShift: {
|
||||
return BitConverter.ToInt32(Data, 48);
|
||||
}
|
||||
default: {
|
||||
@@ -228,7 +235,8 @@ namespace LibBSP {
|
||||
break;
|
||||
}
|
||||
case MapType.Quake:
|
||||
case MapType.GoldSrc: {
|
||||
case MapType.GoldSrc:
|
||||
case MapType.BlueShift: {
|
||||
bytes.CopyTo(Data, 48);
|
||||
break;
|
||||
}
|
||||
@@ -282,7 +290,8 @@ namespace LibBSP {
|
||||
return BitConverter.ToInt32(Data, 44);
|
||||
}
|
||||
case MapType.Quake:
|
||||
case MapType.GoldSrc: {
|
||||
case MapType.GoldSrc:
|
||||
case MapType.BlueShift: {
|
||||
return BitConverter.ToInt32(Data, 52);
|
||||
}
|
||||
default: {
|
||||
@@ -298,7 +307,8 @@ namespace LibBSP {
|
||||
break;
|
||||
}
|
||||
case MapType.Quake:
|
||||
case MapType.GoldSrc: {
|
||||
case MapType.GoldSrc:
|
||||
case MapType.BlueShift: {
|
||||
bytes.CopyTo(Data, 52);
|
||||
break;
|
||||
}
|
||||
@@ -463,7 +473,8 @@ namespace LibBSP {
|
||||
return BitConverter.ToInt32(Data, 48);
|
||||
}
|
||||
case MapType.Quake:
|
||||
case MapType.GoldSrc: {
|
||||
case MapType.GoldSrc:
|
||||
case MapType.BlueShift: {
|
||||
return BitConverter.ToInt32(Data, 56);
|
||||
}
|
||||
default: {
|
||||
@@ -517,7 +528,8 @@ namespace LibBSP {
|
||||
break;
|
||||
}
|
||||
case MapType.Quake:
|
||||
case MapType.GoldSrc: {
|
||||
case MapType.GoldSrc:
|
||||
case MapType.BlueShift: {
|
||||
bytes.CopyTo(Data, 56);
|
||||
break;
|
||||
}
|
||||
@@ -568,7 +580,8 @@ namespace LibBSP {
|
||||
return BitConverter.ToInt32(Data, 52);
|
||||
}
|
||||
case MapType.Quake:
|
||||
case MapType.GoldSrc: {
|
||||
case MapType.GoldSrc:
|
||||
case MapType.BlueShift: {
|
||||
return BitConverter.ToInt32(Data, 60);
|
||||
}
|
||||
default: {
|
||||
@@ -622,7 +635,8 @@ namespace LibBSP {
|
||||
break;
|
||||
}
|
||||
case MapType.Quake:
|
||||
case MapType.GoldSrc: {
|
||||
case MapType.GoldSrc:
|
||||
case MapType.BlueShift: {
|
||||
bytes.CopyTo(Data, 60);
|
||||
break;
|
||||
}
|
||||
@@ -699,6 +713,7 @@ namespace LibBSP {
|
||||
switch (MapType) {
|
||||
case MapType.Quake:
|
||||
case MapType.GoldSrc:
|
||||
case MapType.BlueShift:
|
||||
case MapType.Quake2:
|
||||
case MapType.Quake3:
|
||||
case MapType.SiN:
|
||||
@@ -737,6 +752,7 @@ namespace LibBSP {
|
||||
switch (MapType) {
|
||||
case MapType.Quake:
|
||||
case MapType.GoldSrc:
|
||||
case MapType.BlueShift:
|
||||
case MapType.Quake2:
|
||||
case MapType.Quake3:
|
||||
case MapType.SiN:
|
||||
@@ -779,6 +795,7 @@ namespace LibBSP {
|
||||
switch (MapType) {
|
||||
case MapType.Quake:
|
||||
case MapType.GoldSrc:
|
||||
case MapType.BlueShift:
|
||||
case MapType.Quake2:
|
||||
case MapType.Quake3:
|
||||
case MapType.Nightfire:
|
||||
@@ -814,6 +831,7 @@ namespace LibBSP {
|
||||
switch (MapType) {
|
||||
case MapType.Quake:
|
||||
case MapType.GoldSrc:
|
||||
case MapType.BlueShift:
|
||||
case MapType.Quake2:
|
||||
case MapType.Quake3:
|
||||
case MapType.Nightfire:
|
||||
@@ -1027,7 +1045,8 @@ namespace LibBSP {
|
||||
return 56;
|
||||
}
|
||||
case MapType.Quake:
|
||||
case MapType.GoldSrc: {
|
||||
case MapType.GoldSrc:
|
||||
case MapType.BlueShift: {
|
||||
return 64;
|
||||
}
|
||||
default: {
|
||||
@@ -1057,6 +1076,7 @@ namespace LibBSP {
|
||||
}
|
||||
case MapType.Quake:
|
||||
case MapType.GoldSrc:
|
||||
case MapType.BlueShift:
|
||||
case MapType.Nightfire:
|
||||
case MapType.Vindictus:
|
||||
case MapType.TacticalInterventionEncrypted:
|
||||
|
||||
@@ -98,7 +98,8 @@ namespace LibBSP {
|
||||
get {
|
||||
switch (MapType) {
|
||||
case MapType.Quake:
|
||||
case MapType.GoldSrc: {
|
||||
case MapType.GoldSrc:
|
||||
case MapType.BlueShift: {
|
||||
return BitConverter.ToInt16(Data, 4);
|
||||
}
|
||||
case MapType.SiN:
|
||||
@@ -137,7 +138,8 @@ namespace LibBSP {
|
||||
byte[] bytes = BitConverter.GetBytes(value);
|
||||
switch (MapType) {
|
||||
case MapType.Quake:
|
||||
case MapType.GoldSrc: {
|
||||
case MapType.GoldSrc:
|
||||
case MapType.BlueShift: {
|
||||
Data[4] = bytes[0];
|
||||
Data[5] = bytes[1];
|
||||
break;
|
||||
@@ -194,7 +196,8 @@ namespace LibBSP {
|
||||
get {
|
||||
switch (MapType) {
|
||||
case MapType.Quake:
|
||||
case MapType.GoldSrc: {
|
||||
case MapType.GoldSrc:
|
||||
case MapType.BlueShift: {
|
||||
return BitConverter.ToInt16(Data, 6);
|
||||
}
|
||||
case MapType.SiN:
|
||||
@@ -233,7 +236,8 @@ namespace LibBSP {
|
||||
byte[] bytes = BitConverter.GetBytes(value);
|
||||
switch (MapType) {
|
||||
case MapType.Quake:
|
||||
case MapType.GoldSrc: {
|
||||
case MapType.GoldSrc:
|
||||
case MapType.BlueShift: {
|
||||
Data[6] = bytes[0];
|
||||
Data[7] = bytes[1];
|
||||
break;
|
||||
@@ -277,7 +281,8 @@ namespace LibBSP {
|
||||
get {
|
||||
switch (MapType) {
|
||||
case MapType.Quake:
|
||||
case MapType.GoldSrc: {
|
||||
case MapType.GoldSrc:
|
||||
case MapType.BlueShift: {
|
||||
return new Vector3(BitConverter.ToInt16(Data, 8), BitConverter.ToInt16(Data, 10), BitConverter.ToInt16(Data, 12));
|
||||
}
|
||||
case MapType.Quake2:
|
||||
@@ -320,7 +325,8 @@ namespace LibBSP {
|
||||
set {
|
||||
switch (MapType) {
|
||||
case MapType.Quake:
|
||||
case MapType.GoldSrc: {
|
||||
case MapType.GoldSrc:
|
||||
case MapType.BlueShift: {
|
||||
BitConverter.GetBytes((short)value.X()).CopyTo(Data, 8);
|
||||
BitConverter.GetBytes((short)value.Y()).CopyTo(Data, 10);
|
||||
BitConverter.GetBytes((short)value.Z()).CopyTo(Data, 12);
|
||||
@@ -378,7 +384,8 @@ namespace LibBSP {
|
||||
get {
|
||||
switch (MapType) {
|
||||
case MapType.Quake:
|
||||
case MapType.GoldSrc: {
|
||||
case MapType.GoldSrc:
|
||||
case MapType.BlueShift: {
|
||||
return new Vector3(BitConverter.ToInt16(Data, 14), BitConverter.ToInt16(Data, 16), BitConverter.ToInt16(Data, 18));
|
||||
}
|
||||
case MapType.Quake2:
|
||||
@@ -421,7 +428,8 @@ namespace LibBSP {
|
||||
set {
|
||||
switch (MapType) {
|
||||
case MapType.Quake:
|
||||
case MapType.GoldSrc: {
|
||||
case MapType.GoldSrc:
|
||||
case MapType.BlueShift: {
|
||||
BitConverter.GetBytes((short)value.X()).CopyTo(Data, 14);
|
||||
BitConverter.GetBytes((short)value.Y()).CopyTo(Data, 16);
|
||||
BitConverter.GetBytes((short)value.Z()).CopyTo(Data, 18);
|
||||
@@ -491,7 +499,8 @@ namespace LibBSP {
|
||||
get {
|
||||
switch (MapType) {
|
||||
case MapType.Quake:
|
||||
case MapType.GoldSrc: {
|
||||
case MapType.GoldSrc:
|
||||
case MapType.BlueShift: {
|
||||
return BitConverter.ToUInt16(Data, 20);
|
||||
}
|
||||
case MapType.Quake2:
|
||||
@@ -523,7 +532,8 @@ namespace LibBSP {
|
||||
byte[] bytes = BitConverter.GetBytes(value);
|
||||
switch (MapType) {
|
||||
case MapType.Quake:
|
||||
case MapType.GoldSrc: {
|
||||
case MapType.GoldSrc:
|
||||
case MapType.BlueShift: {
|
||||
Data[20] = bytes[0];
|
||||
Data[21] = bytes[1];
|
||||
break;
|
||||
@@ -563,7 +573,8 @@ namespace LibBSP {
|
||||
get {
|
||||
switch (MapType) {
|
||||
case MapType.Quake:
|
||||
case MapType.GoldSrc: {
|
||||
case MapType.GoldSrc:
|
||||
case MapType.BlueShift: {
|
||||
return BitConverter.ToUInt16(Data, 22);
|
||||
}
|
||||
case MapType.Quake2:
|
||||
@@ -594,7 +605,8 @@ namespace LibBSP {
|
||||
byte[] bytes = BitConverter.GetBytes(value);
|
||||
switch (MapType) {
|
||||
case MapType.Quake:
|
||||
case MapType.GoldSrc: {
|
||||
case MapType.GoldSrc:
|
||||
case MapType.BlueShift: {
|
||||
Data[22] = bytes[0];
|
||||
Data[23] = bytes[1];
|
||||
break;
|
||||
@@ -753,7 +765,8 @@ namespace LibBSP {
|
||||
public static int GetStructLength(MapType mapType, int lumpVersion = 0) {
|
||||
switch (mapType) {
|
||||
case MapType.Quake:
|
||||
case MapType.GoldSrc: {
|
||||
case MapType.GoldSrc:
|
||||
case MapType.BlueShift: {
|
||||
return 24;
|
||||
}
|
||||
case MapType.Quake2:
|
||||
@@ -814,6 +827,7 @@ namespace LibBSP {
|
||||
}
|
||||
case MapType.Quake:
|
||||
case MapType.GoldSrc:
|
||||
case MapType.BlueShift:
|
||||
case MapType.Vindictus:
|
||||
case MapType.TacticalInterventionEncrypted:
|
||||
case MapType.Source17:
|
||||
|
||||
@@ -104,7 +104,8 @@ namespace LibBSP {
|
||||
get {
|
||||
switch (MapType) {
|
||||
case MapType.Quake:
|
||||
case MapType.GoldSrc: {
|
||||
case MapType.GoldSrc:
|
||||
case MapType.BlueShift: {
|
||||
return Data.ToNullTerminatedString(0, 16);
|
||||
}
|
||||
case MapType.STEF2:
|
||||
@@ -151,7 +152,8 @@ namespace LibBSP {
|
||||
byte[] bytes = Encoding.ASCII.GetBytes(value);
|
||||
switch (MapType) {
|
||||
case MapType.Quake:
|
||||
case MapType.GoldSrc: {
|
||||
case MapType.GoldSrc:
|
||||
case MapType.BlueShift: {
|
||||
for (int i = 0; i < 16; ++i) {
|
||||
Data[i] = 0;
|
||||
}
|
||||
@@ -381,7 +383,8 @@ namespace LibBSP {
|
||||
get {
|
||||
switch (MapType) {
|
||||
case MapType.Quake:
|
||||
case MapType.GoldSrc: {
|
||||
case MapType.GoldSrc:
|
||||
case MapType.BlueShift: {
|
||||
return new Vector2(BitConverter.ToUInt32(Data, 16), BitConverter.ToUInt32(Data, 20));
|
||||
}
|
||||
default: {
|
||||
@@ -392,7 +395,8 @@ namespace LibBSP {
|
||||
set {
|
||||
switch (MapType) {
|
||||
case MapType.Quake:
|
||||
case MapType.GoldSrc: {
|
||||
case MapType.GoldSrc:
|
||||
case MapType.BlueShift: {
|
||||
BitConverter.GetBytes((int)value.X()).CopyTo(Data, 16);
|
||||
BitConverter.GetBytes((int)value.Y()).CopyTo(Data, 20);
|
||||
break;
|
||||
@@ -408,7 +412,8 @@ namespace LibBSP {
|
||||
get {
|
||||
switch (MapType) {
|
||||
case MapType.Quake:
|
||||
case MapType.GoldSrc: {
|
||||
case MapType.GoldSrc:
|
||||
case MapType.BlueShift: {
|
||||
return BitConverter.ToInt32(Data, 24);
|
||||
}
|
||||
default: {
|
||||
@@ -420,7 +425,8 @@ namespace LibBSP {
|
||||
byte[] bytes = BitConverter.GetBytes(value);
|
||||
switch (MapType) {
|
||||
case MapType.Quake:
|
||||
case MapType.GoldSrc: {
|
||||
case MapType.GoldSrc:
|
||||
case MapType.BlueShift: {
|
||||
bytes.CopyTo(Data, 24);
|
||||
break;
|
||||
}
|
||||
@@ -435,7 +441,8 @@ namespace LibBSP {
|
||||
get {
|
||||
switch (MapType) {
|
||||
case MapType.Quake:
|
||||
case MapType.GoldSrc: {
|
||||
case MapType.GoldSrc:
|
||||
case MapType.BlueShift: {
|
||||
return BitConverter.ToInt32(Data, 28);
|
||||
}
|
||||
default: {
|
||||
@@ -447,7 +454,8 @@ namespace LibBSP {
|
||||
byte[] bytes = BitConverter.GetBytes(value);
|
||||
switch (MapType) {
|
||||
case MapType.Quake:
|
||||
case MapType.GoldSrc: {
|
||||
case MapType.GoldSrc:
|
||||
case MapType.BlueShift: {
|
||||
bytes.CopyTo(Data, 28);
|
||||
break;
|
||||
}
|
||||
@@ -462,7 +470,8 @@ namespace LibBSP {
|
||||
get {
|
||||
switch (MapType) {
|
||||
case MapType.Quake:
|
||||
case MapType.GoldSrc: {
|
||||
case MapType.GoldSrc:
|
||||
case MapType.BlueShift: {
|
||||
return BitConverter.ToInt32(Data, 32);
|
||||
}
|
||||
default: {
|
||||
@@ -474,7 +483,8 @@ namespace LibBSP {
|
||||
byte[] bytes = BitConverter.GetBytes(value);
|
||||
switch (MapType) {
|
||||
case MapType.Quake:
|
||||
case MapType.GoldSrc: {
|
||||
case MapType.GoldSrc:
|
||||
case MapType.BlueShift: {
|
||||
bytes.CopyTo(Data, 32);
|
||||
break;
|
||||
}
|
||||
@@ -489,7 +499,8 @@ namespace LibBSP {
|
||||
get {
|
||||
switch (MapType) {
|
||||
case MapType.Quake:
|
||||
case MapType.GoldSrc: {
|
||||
case MapType.GoldSrc:
|
||||
case MapType.BlueShift: {
|
||||
return BitConverter.ToInt32(Data, 36);
|
||||
}
|
||||
default: {
|
||||
@@ -501,7 +512,8 @@ namespace LibBSP {
|
||||
byte[] bytes = BitConverter.GetBytes(value);
|
||||
switch (MapType) {
|
||||
case MapType.Quake:
|
||||
case MapType.GoldSrc: {
|
||||
case MapType.GoldSrc:
|
||||
case MapType.BlueShift: {
|
||||
bytes.CopyTo(Data, 36);
|
||||
break;
|
||||
}
|
||||
@@ -726,6 +738,7 @@ namespace LibBSP {
|
||||
}
|
||||
case MapType.Quake:
|
||||
case MapType.GoldSrc:
|
||||
case MapType.BlueShift:
|
||||
case MapType.Nightfire: {
|
||||
return 2;
|
||||
}
|
||||
|
||||
@@ -672,6 +672,9 @@ namespace LibBSP {
|
||||
case MapType.Titanfall: {
|
||||
return 0;
|
||||
}
|
||||
case MapType.BlueShift: {
|
||||
return 1;
|
||||
}
|
||||
case MapType.FAKK:
|
||||
case MapType.MOHAA: {
|
||||
return 14;
|
||||
|
||||
@@ -131,7 +131,8 @@ namespace LibBSP {
|
||||
return 9;
|
||||
}
|
||||
case MapType.Quake:
|
||||
case MapType.GoldSrc: {
|
||||
case MapType.GoldSrc:
|
||||
case MapType.BlueShift: {
|
||||
dataType = DataType.UInt16;
|
||||
return 11;
|
||||
}
|
||||
@@ -183,6 +184,7 @@ namespace LibBSP {
|
||||
}
|
||||
case MapType.Quake:
|
||||
case MapType.GoldSrc:
|
||||
case MapType.BlueShift:
|
||||
case MapType.Vindictus:
|
||||
case MapType.TacticalInterventionEncrypted:
|
||||
case MapType.Source17:
|
||||
|
||||
@@ -126,6 +126,7 @@ namespace LibBSP {
|
||||
}
|
||||
case MapType.Quake:
|
||||
case MapType.GoldSrc:
|
||||
case MapType.BlueShift:
|
||||
case MapType.Undefined: {
|
||||
return BitConverter.ToInt32(Data, 36);
|
||||
}
|
||||
@@ -157,6 +158,7 @@ namespace LibBSP {
|
||||
}
|
||||
case MapType.Quake:
|
||||
case MapType.GoldSrc:
|
||||
case MapType.BlueShift:
|
||||
case MapType.Undefined: {
|
||||
bytes.CopyTo(Data, 36);
|
||||
break;
|
||||
@@ -195,6 +197,7 @@ namespace LibBSP {
|
||||
}
|
||||
case MapType.Quake:
|
||||
case MapType.GoldSrc:
|
||||
case MapType.BlueShift:
|
||||
case MapType.Undefined: {
|
||||
return BitConverter.ToInt32(Data, 32);
|
||||
}
|
||||
@@ -226,6 +229,7 @@ namespace LibBSP {
|
||||
}
|
||||
case MapType.Quake:
|
||||
case MapType.GoldSrc:
|
||||
case MapType.BlueShift:
|
||||
case MapType.Undefined: {
|
||||
bytes.CopyTo(Data, 32);
|
||||
break;
|
||||
@@ -317,6 +321,7 @@ namespace LibBSP {
|
||||
}
|
||||
case MapType.Quake:
|
||||
case MapType.GoldSrc:
|
||||
case MapType.BlueShift:
|
||||
case MapType.Undefined: {
|
||||
return 40;
|
||||
}
|
||||
@@ -351,6 +356,7 @@ namespace LibBSP {
|
||||
switch (type) {
|
||||
case MapType.Quake:
|
||||
case MapType.GoldSrc:
|
||||
case MapType.BlueShift:
|
||||
case MapType.Vindictus:
|
||||
case MapType.TacticalInterventionEncrypted:
|
||||
case MapType.Source17:
|
||||
|
||||
@@ -10,6 +10,12 @@ namespace LibBSP {
|
||||
/// </summary>
|
||||
public class BSPReader {
|
||||
|
||||
/// <summary>
|
||||
/// A short and simple string that will always occur in the entities lump, but is extremely
|
||||
/// unlikely to show up in any kind of binary data.
|
||||
/// </summary>
|
||||
private const string entityPattern = "\"classname\"";
|
||||
|
||||
private FileInfo bspFile;
|
||||
private Dictionary<int, LumpInfo> lumpFiles = null;
|
||||
|
||||
@@ -52,6 +58,7 @@ namespace LibBSP {
|
||||
switch (version) {
|
||||
case MapType.Quake:
|
||||
case MapType.GoldSrc:
|
||||
case MapType.BlueShift:
|
||||
case MapType.Nightfire: {
|
||||
return GetLumpInfoAtOffset(4 + (8 * index), version);
|
||||
}
|
||||
@@ -554,7 +561,25 @@ namespace LibBSP {
|
||||
break;
|
||||
}
|
||||
case 30: {
|
||||
current = MapType.GoldSrc;
|
||||
current = MapType.BlueShift;
|
||||
stream.Seek(4, SeekOrigin.Begin);
|
||||
int lump0offset = binaryReader.ReadInt32();
|
||||
int lump0length = binaryReader.ReadInt32();
|
||||
stream.Seek(lump0offset, SeekOrigin.Begin);
|
||||
char currentChar;
|
||||
int patternMatch = 0;
|
||||
for (int i = 0; i < lump0length - entityPattern.Length; ++i) {
|
||||
currentChar = (char)stream.ReadByte();
|
||||
if (currentChar == entityPattern[patternMatch]) {
|
||||
++patternMatch;
|
||||
if (patternMatch == entityPattern.Length) {
|
||||
current = MapType.GoldSrc;
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
patternMatch = 0;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 42: {
|
||||
|
||||
Reference in New Issue
Block a user