Skip to content

Commit 8b8f965

Browse files
Added EquipmentClass & EquipmentType to KillsStats + Created the concept of EquipmentType in the parser
1 parent 6e5ad11 commit 8b8f965

File tree

4 files changed

+65
-2
lines changed

4 files changed

+65
-2
lines changed

Directory.Build.props

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
<Company>Source Engine Discord</Company>
1616
<Copyright>© 2014 EHVAG, 2020 Source Engine Discord and contributors</Copyright>
1717
<Product>SourceEngine.Demo</Product>
18-
<Version>2.0.3</Version>
18+
<Version>2.0.4</Version>
1919
</PropertyGroup>
2020

2121
<PropertyGroup Label="Package Metadata">

src/SourceEngine.Demo.Parser/Events.cs

Lines changed: 56 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -449,6 +449,13 @@ public EquipmentClass Class
449449
return (EquipmentClass)(((int)Weapon / 100) + 1);
450450
}
451451
}
452+
public EquipmentType Type
453+
{
454+
get
455+
{
456+
return GetEquipmentType(Weapon, Class);
457+
}
458+
}
452459

453460
public string OriginalString { get; set; }
454461

@@ -491,6 +498,39 @@ internal Equipment(string originalString, string skin)
491498

492499
const string WEAPON_PREFIX = "weapon_";
493500

501+
private EquipmentType GetEquipmentType(EquipmentElement weapon, EquipmentClass weaponClass)
502+
{
503+
switch (weaponClass)
504+
{
505+
case EquipmentClass.Heavy:
506+
if (weapon == EquipmentElement.M249 || weapon == EquipmentElement.Negev)
507+
return EquipmentType.LMG;
508+
else
509+
return EquipmentType.Shotgun;
510+
case EquipmentClass.Rifle:
511+
if (weapon == EquipmentElement.Scout || weapon == EquipmentElement.AWP)
512+
return EquipmentType.Sniper;
513+
else
514+
return EquipmentType.AssaultRifle;
515+
case EquipmentClass.Equipment:
516+
if (weapon == EquipmentElement.Zeus)
517+
return EquipmentType.Zeus;
518+
else if (weapon == EquipmentElement.Knife)
519+
return EquipmentType.Knife;
520+
else
521+
return EquipmentType.Shotgun;
522+
case EquipmentClass.Pistol:
523+
return EquipmentType.Pistol;
524+
case EquipmentClass.SMG:
525+
return EquipmentType.SMG;
526+
case EquipmentClass.Grenade:
527+
return EquipmentType.Grenade;
528+
default:
529+
return EquipmentType.Unknown;
530+
531+
}
532+
}
533+
494534
public static EquipmentElement MapEquipment(string OriginalString)
495535
{
496536
EquipmentElement weapon = EquipmentElement.Unknown;
@@ -674,7 +714,7 @@ public enum EquipmentElement
674714
{
675715
Unknown = 0,
676716

677-
//Pistoles
717+
//Pistols
678718
P2000 = 1,
679719
Glock = 2,
680720
P250 = 3,
@@ -745,4 +785,19 @@ public enum EquipmentClass
745785
Equipment = 5,
746786
Grenade = 6,
747787
}
788+
789+
public enum EquipmentType // added to separate weapon groups better
790+
{
791+
Unknown = 0,
792+
Pistol = 1,
793+
SMG = 2,
794+
LMG = 3,
795+
Shotgun = 4,
796+
AssaultRifle = 5,
797+
Sniper = 6,
798+
Grenade = 7,
799+
Zeus = 8,
800+
Knife = 9,
801+
Equipment = 10,
802+
}
748803
}

src/SourceEngine.Demo.Stats/DemoProcessor.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1373,11 +1373,15 @@ public List<killsStats> GetKillsStats(ProcessedData processedData, Dictionary<lo
13731373
long assisterSteamId = playerKilledEvent.Assister != null ? ((playerKilledEvent.Assister.SteamID == 0) ? GetSteamIdByPlayerName(playerNames, playerKilledEvent.Assister.Name) : playerKilledEvent.Assister.SteamID) : 0;
13741374

13751375
var weaponUsed = weaponKillers.ElementAt(i).Weapon.ToString();
1376+
var weaponUsedClass = weaponKillers.ElementAt(i).Class.ToString();
1377+
var weaponUsedType = weaponKillers.ElementAt(i).Type.ToString();
13761378
var numOfPenetrations = penetrations.ElementAt(i);
13771379

13781380
if (weaponUsed == null || weaponUsed == string.Empty)
13791381
{
13801382
weaponUsed = weaponKillers.ElementAt(i).OriginalString.ToString();
1383+
weaponUsedClass = "Unknown";
1384+
weaponUsedType = "Unknown";
13811385
}
13821386

13831387
bool firstKillOfTheRound = (killsStats.Any(k => k.Round == round && k.FirstKillOfTheRound == true)) ? false : true;
@@ -1387,6 +1391,8 @@ public List<killsStats> GetKillsStats(ProcessedData processedData, Dictionary<lo
13871391
Round = round,
13881392
TimeInRound = playerKilledEvent.TimeInRound,
13891393
Weapon = weaponUsed,
1394+
WeaponClass = weaponUsedClass,
1395+
WeaponType = weaponUsedType,
13901396
KillerSteamID = killerSteamId,
13911397
KillerBotTakeover = playerKilledEvent.KillerBotTakeover,
13921398
XPositionKill = double.Parse(killPositionSplit[0]),

src/SourceEngine.Demo.Stats/Models/KillsStats.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ public class killsStats
55
public int Round { get; set; }
66
public double TimeInRound { get; set; }
77
public string Weapon { get; set; }
8+
public string WeaponClass { get; set; }
9+
public string WeaponType { get; set; }
810
public long KillerSteamID { get; set; }
911
public bool KillerBotTakeover { get; internal set; }
1012
public double XPositionKill { get; set; }

0 commit comments

Comments
 (0)