properly pass game name to game string config finder.

add weapon prefix to weapon name parser for (iw5).
add some iw3 game strings
This commit is contained in:
RaidMax 2021-03-23 16:01:48 -05:00
parent 1f9c80e23b
commit e777a68105
6 changed files with 74 additions and 14 deletions

View File

@ -1069,6 +1069,52 @@
"artillery": "Precision Airstrike",
"player": "",
"attach": ""
},
"IW3": {
"torso_upper": "Upper Torso",
"torso_lower": "Lower Torso",
"right_leg_upper": "Upper Right Leg",
"right_leg_lower": "Lower Right Leg",
"right_hand": "Right Hand",
"right_foot": "Right Foot",
"right_arm_upper": "Upper Right Arm",
"right_arm_lower": "Lower Right Arm",
"left_leg_upper": "Upper Left Leg",
"left_leg_lower": "Lower Left Leg",
"left_hand": "Left Hand",
"left_foot": "Left Foot",
"left_arm_upper": "Upper Left Arm",
"left_arm_lower": "Lower Left Arm",
"acog": "ACOG Sight",
"gl": "Grenade Launcher",
"reflex": "Red Dot Sight",
"grip": "Grip",
"m4": "M4 Carbine",
"m40a3": "M40A3",
"ak47": "AK-47",
"ak74u": "AK-74u",
"rpg": "RPG-7",
"deserteagle": "Desert Eagle",
"deserteaglegold": "Desert Eagle Gold",
"m16": "M16A4",
"g36c": "G36C",
"uzi": "Mini-Uzi",
"m60e4": "M60E4",
"mp5": "MP5",
"barrett": "Barrett .50cal",
"mp44": "MP44",
"remington700": "R700",
"rpd": "RDP",
"saw": " M249 SAW",
"usp": "USP .45",
"winchester1200": "W1200",
"concussion": "Stun",
"melee": "Knife",
"Frag" : "Grenade",
"airstrike": "Airstrike",
"helicopter": "Attack Helicopter",
"player": "",
"attach": ""
}
}
}

View File

@ -48,7 +48,8 @@ namespace Stats.Client
}
// remove the _mp suffix
var filtered = splitWeaponName.Where(part => part != configForGame.WeaponSuffix);
var filtered = splitWeaponName
.Where(part => part != configForGame.WeaponSuffix && part != configForGame.WeaponPrefix);
var baseName = splitWeaponName.First();
var attachments = new List<string>();
@ -67,8 +68,6 @@ namespace Stats.Client
}).ToList()
};
// _logger.LogDebug("Parsed weapon info {@info}", weaponInfo);
return weaponInfo;
}
}

View File

@ -20,6 +20,12 @@ namespace IW4MAdmin.Plugins.Stats.Config
public WeaponNameParserConfiguration[] WeaponNameParserConfigurations { get; set; } = new[]
{
new WeaponNameParserConfiguration()
{
Game = Server.Game.IW3,
WeaponSuffix = "mp",
Delimiters = new[] {'_'}
},
new WeaponNameParserConfiguration()
{
Game = Server.Game.IW4,
@ -27,6 +33,13 @@ namespace IW4MAdmin.Plugins.Stats.Config
Delimiters = new[] {'_'}
},
new WeaponNameParserConfiguration()
{
Game = Server.Game.IW5,
WeaponSuffix = "mp",
WeaponPrefix = "iw5",
Delimiters = new[] {'_'}
},
new WeaponNameParserConfiguration()
{
Game = Server.Game.T6,
WeaponSuffix = "mp",

View File

@ -7,5 +7,6 @@ namespace Stats.Config
public Server.Game Game { get; set; }
public char[] Delimiters { get; set; }
public string WeaponSuffix { get; set; }
public string WeaponPrefix { get; set; }
}
}

View File

@ -1,23 +1,24 @@
using System.Collections.Generic;
using Data.Models;
using Humanizer;
namespace SharedLibraryCore.Configuration
{
public class GameStringConfiguration : Dictionary<Server.Game, Dictionary<string, string>>
public class GameStringConfiguration : Dictionary<Reference.Game, Dictionary<string, string>>
{
public string GetStringForGame(string key, Server.Game game = Server.Game.IW4)
public string GetStringForGame(string key, Reference.Game? game = Reference.Game.IW4)
{
if (key == null)
{
return null;
}
if (!ContainsKey(game))
if (!ContainsKey(game.Value))
{
return key.Transform(To.TitleCase);
}
var strings = this[game];
var strings = this[game.Value];
return !strings.ContainsKey(key) ? key.Transform(To.TitleCase) : strings[key];
}
}

View File

@ -32,10 +32,10 @@
return null;
}
var rebuiltName = stat.RebuildWeaponName();
var name = config.GetStringForGame(rebuiltName);
var name = config.GetStringForGame(rebuiltName, stat.Weapon?.Game);
return !rebuiltName.Equals(name, StringComparison.InvariantCultureIgnoreCase)
? name
: config.GetStringForGame(stat.Weapon.Name);
: config.GetStringForGame(stat.Weapon.Name, stat.Weapon.Game);
}
string GetWeaponAttachmentName(EFWeaponAttachmentCombo attachment)
@ -47,9 +47,9 @@
var attachmentText = string.Join('+', new[]
{
config.GetStringForGame(attachment.Attachment1.Name),
config.GetStringForGame(attachment.Attachment2?.Name),
config.GetStringForGame(attachment.Attachment3?.Name)
config.GetStringForGame(attachment.Attachment1.Name, attachment.Attachment1.Game),
config.GetStringForGame(attachment.Attachment2?.Name, attachment.Attachment2?.Game),
config.GetStringForGame(attachment.Attachment3?.Name, attachment.Attachment3?.Game)
}.Where(attach => !string.IsNullOrWhiteSpace(attach)));
return attachmentText;
@ -404,7 +404,7 @@
@foreach (var hitLocation in filteredHitLocations.Take(8))
{
<tr>
<td class="@textClass text-force-break">@config.GetStringForGame(hitLocation.HitLocation.Name)</td>
<td class="@textClass text-force-break">@config.GetStringForGame(hitLocation.HitLocation.Name, hitLocation.HitLocation.Game)</td>
<td class="text-success text-force-break">@hitLocation.HitCount</td>
<td class="text-muted text-force-break">@Math.Round((hitLocation.HitCount / (float) totalHits) * 100.0).ToString(Utilities.CurrentLocalization.Culture)%</td>
<td class="text-muted text-force-break">@hitLocation.DamageInflicted.ToNumericalString()</td>
@ -414,7 +414,7 @@
@foreach (var hitLocation in filteredHitLocations.Skip(8))
{
<tr class="bg-dark hidden-row" style="display:none;">
<td class="@textClass text-force-break">@config.GetStringForGame(hitLocation.HitLocation.Name)</td>
<td class="@textClass text-force-break">@config.GetStringForGame(hitLocation.HitLocation.Name, hitLocation.HitLocation.Game)</td>
<td class="text-success text-force-break">@hitLocation.HitCount</td>
<td class="text-muted text-force-break">@Math.Round((hitLocation.HitCount / (float) totalHits) * 100.0).ToString(Utilities.CurrentLocalization.Culture)%</td>
<td class="text-muted text-force-break">@hitLocation.DamageInflicted.ToNumericalString()</td>