public static async Task <string> GetRecipeString(RecipeDetailsEntry recipe) { return(await Task.Run( async() => { var sb = new StringBuilder(); try { var outputItem = await ItemManager.Instance.GetItem(recipe.OutputItemId); sb.AppendFormat("{0}: {1} x{2}\n", "Name", outputItem.Name, recipe.OutputCount); sb.AppendFormat(_defaultPropertyFormat, "Type", recipe.RecipeType); sb.AppendFormat(_defaultPropertyFormat, "Skill Needed", recipe.MinRating); sb.AppendFormat(_defaultPropertyFormat, "Craft Time(s)", recipe.TimeToCraftMsec / 1000.0); sb.AppendLine("Diciplines:"); foreach (var dicipline in recipe.Diciplines) { sb.AppendFormat(" {0}", dicipline); } sb.AppendLine("Flags: " + string.Join(", ", recipe.Flags)); sb.AppendLine("Ingredients:"); foreach (var ingredient in recipe.Ingredients) { sb.AppendLine(" " + ingredient); } } catch (Exception e) { Console.WriteLine(e); sb.AppendLine("Error building details string for recipe id = " + recipe.OutputItemId); } return sb.ToString(); })); }
public async Task SetRecipe(RecipeDetailsEntry recipe) { ItemDetailsEntry item = null; Bitmap image = null; string details = await Task.Run <string>(async() => { try { var itemTask = ItemManager.Instance.GetItem(recipe.OutputItemId).ConfigureAwait(false); var detailTask = RecipeManager.GetRecipeString(recipe); var imageTask = RecipeManager.GetRecipeImage(recipe); item = await itemTask; image = await imageTask; return(await detailTask); } catch (Exception e) { Console.WriteLine(e); } return("Error occured\n"); }); labelRecipeDetails.Text = details; labelRecipeName.Text = item != null ? item.Name : "Error Getting Item Details"; pictureBox1.Image = image; }
/// <summary> /// Gets a recipe by its id. If the recipe is not already in cache, it will be downloaded. /// An update can be forced by setting <paramref name="ignoreCache"/>=true. /// </summary> /// <param name="id">id of recipe to get.</param> /// <param name="ignoreCache">true: forces downloading the recipe allowing for a refresh of data. false: allow the recipe to be retrived from cache if it is available</param> /// <returns>recipe with the given id</returns> public async Task <RecipeDetailsEntry> GetRecipe(int id, bool ignoreCache = false) { RecipeDetailsEntry recipe = null; if (ignoreCache || Recipes.ContainsKey(id) == false) { await DownloadRecipe(id); } return(Recipes.ContainsKey(id) ? Recipes[id] : null); }
public static async Task <Bitmap> GetRecipeImage(RecipeDetailsEntry recipe) { return(await Task.Run( async() => { ItemDetailsEntry item = null; try { item = await ItemManager.Instance.GetItem(recipe.OutputItemId).ConfigureAwait(false); var rs = GwApi.GetRenderServiceAssetEntry(item.IconFileSignature, item.IconFileId, ".png"); return rs.Asset; } catch (Exception e) { int id = item != null ? item.ItemId : -1; Debug.WriteLine(string.Format("For Item ID " + id + " - " + e)); } return null; })); }
public async Task SetRecipe(RecipeDetailsEntry recipe) { await recipeDetailsUserControl1.SetRecipe(recipe).ConfigureAwait(false); }
public RecipeSearchResult(RecipeDetailsEntry recipe) { _recipe = recipe; }