Advertisement
Guest User

Untitled

a guest
Aug 18th, 2017
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.50 KB | None | 0 0
  1. using System.Collections.Generic;
  2. using System.Linq;
  3.  
  4. public class HeroInventory : IInventory
  5. {
  6.     [Item]
  7.     private Dictionary<string, IItem> commonItems;
  8.  
  9.     [Item]
  10.     private Dictionary<string, IRecipe> recipeItems;
  11.  
  12.     public HeroInventory()
  13.     {
  14.         this.commonItems = new Dictionary<string, IItem>();
  15.         this.recipeItems = new Dictionary<string, IRecipe>();
  16.     }
  17.  
  18.  
  19.     public long TotalStrengthBonus
  20.     {
  21.         get { return this.commonItems.Values.Sum(i => i.StrengthBonus); }
  22.     }
  23.  
  24.     public long TotalAgilityBonus
  25.     {
  26.         get { return this.commonItems.Values.Sum(i => i.AgilityBonus); }
  27.     }
  28.  
  29.     public long TotalIntelligenceBonus
  30.     {
  31.         get { return this.commonItems.Values.Sum(i => i.IntelligenceBonus); }
  32.     }
  33.  
  34.     public long TotalHitPointsBonus
  35.     {
  36.         get { return this.commonItems.Values.Sum(i => i.HitPointsBonus); }
  37.     }
  38.  
  39.     public long TotalDamageBonus
  40.     {
  41.         get { return this.commonItems.Values.Sum(i => i.DamageBonus); }
  42.     }
  43.  
  44.     public void AddCommonItem(IItem item)
  45.     {
  46.         this.commonItems.Add(item.Name, item);
  47.         this.CheckRecipes();
  48.     }
  49.  
  50.     public void AddRecipeItem(IRecipe recipe)
  51.     {
  52.         this.recipeItems.Add(recipe.Name, recipe);
  53.         this.CheckRecipes();
  54.     }
  55.  
  56.     public void CheckRecipes()
  57.     {
  58.         foreach (IRecipe recipe in this.recipeItems.Values)
  59.         {
  60.             IList<string> requiredItems = new List<string>();
  61.             foreach (string item in recipe.RequiredItems)
  62.             {
  63.                 requiredItems.Add(item);
  64.             }
  65.  
  66.             foreach (IItem commonItem in this.commonItems.Values)
  67.             {
  68.                 if (requiredItems.Contains(commonItem.Name))
  69.                 {
  70.                     requiredItems.Remove(commonItem.Name);
  71.                 }
  72.             }
  73.  
  74.             if (requiredItems.Count == 0)
  75.             {
  76.                 this.CombineRecipe(recipe);
  77.             }
  78.         }
  79.     }
  80.  
  81.     public void CombineRecipe(IRecipe recipe)
  82.     {
  83.         for (int i = 0; i < recipe.RequiredItems.Count; i++)
  84.         {
  85.             string item = recipe.RequiredItems[i];
  86.             this.commonItems.Remove(item);
  87.         }
  88.  
  89.         IItem newItem = new CommonItem(recipe.Name,
  90.             recipe.StrengthBonus,
  91.             recipe.AgilityBonus,
  92.             recipe.IntelligenceBonus,
  93.             recipe.HitPointsBonus,
  94.             recipe.DamageBonus);
  95.  
  96.         this.commonItems.Add(newItem.Name, newItem);
  97.     }
  98. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement