From 74ef4d49ade1ad1b3df28e7ca4f25c5e83514560 Mon Sep 17 00:00:00 2001 From: Garry Newman Date: Mon, 21 Nov 2016 20:41:30 +0000 Subject: [PATCH] Allow & ignore errors when parsing exchange string --- .../Interfaces/Inventory.Definition.cs | 29 ++++++++++++++----- 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/Facepunch.Steamworks/Interfaces/Inventory.Definition.cs b/Facepunch.Steamworks/Interfaces/Inventory.Definition.cs index fb3f436..0b53c96 100644 --- a/Facepunch.Steamworks/Interfaces/Inventory.Definition.cs +++ b/Facepunch.Steamworks/Interfaces/Inventory.Definition.cs @@ -238,15 +238,28 @@ namespace Facepunch.Steamworks var i = new Ingredient(); i.Count = 1; - if ( part.Contains( 'x' ) ) + try { - var idx = part.IndexOf( 'x' ); - i.Count = int.Parse( part.Substring( idx + 1 ) ); - part = part.Substring( 0, idx ); - } - i.DefinitionId = int.Parse( part ); - i.Definition = definitions.FirstOrDefault( x => x.Id == i.DefinitionId ); + if ( part.Contains( 'x' ) ) + { + var idx = part.IndexOf( 'x' ); + + int count = 0; + if ( int.TryParse( part.Substring( idx + 1 ), out count ) ) + i.Count = count; + + part = part.Substring( 0, idx ); + } + + i.DefinitionId = int.Parse( part ); + i.Definition = definitions.FirstOrDefault( x => x.Id == i.DefinitionId ); + + } + catch ( System.Exception ) + { + return i; + } return i; } @@ -268,7 +281,7 @@ namespace Facepunch.Steamworks r.Result = Result; var parts = part.Split( new[] { ',' }, StringSplitOptions.RemoveEmptyEntries ); - r.Ingredients = parts.Select( x => Ingredient.FromString( x, definitions ) ).ToArray(); + r.Ingredients = parts.Select( x => Ingredient.FromString( x, definitions ) ).Where( x => x.DefinitionId != 0 ).ToArray(); foreach ( var i in r.Ingredients ) {