defer weapon data parsing until needed, handle invalid formats

This commit is contained in:
Jesse Plamondon-Willard 2022-12-28 11:30:35 -05:00
parent 8660742391
commit 45979c57dd
No known key found for this signature in database
GPG Key ID: CF8B1456B3E29F49
1 changed files with 11 additions and 6 deletions

View File

@ -104,13 +104,18 @@ namespace StardewModdingAPI.Mods.ConsoleCommands.Framework
// weapons // weapons
if (ShouldGet(ItemType.Weapon)) if (ShouldGet(ItemType.Weapon))
{ {
var weaponsData = this.TryLoad<int, string>("Data\\weapons"); Dictionary<int, string> weaponsData = this.TryLoad<int, string>("Data\\weapons");
foreach (int id in weaponsData.Keys) foreach (KeyValuePair<int, string> pair in weaponsData)
{ {
yield return this.TryCreate(ItemType.Weapon, id, p => weaponsData[p.ID].Split('/')[8] == "4" string rawFields = pair.Value;
yield return this.TryCreate(ItemType.Weapon, pair.Key, p =>
{
string[] fields = rawFields.Split('/');
bool isSlingshot = fields.Length > 8 && fields[8] == "4";
return isSlingshot
? new Slingshot(p.ID) ? new Slingshot(p.ID)
: new MeleeWeapon(p.ID) : new MeleeWeapon(p.ID);
); });
} }
} }