Пример #1
0
        public void TestBuildItemEffect()
        {
            var ip = new ItemProvider();
            var item = new Item() ;
            var effects = new ItemEffect[]
            {
                new ItemEffect() { Quality = 100 , Effects = new []
                {
                    new Effect() { Type = EFFECT_TYPE.ATTACK_ADD , Value = 10},
                    new Effect() { Type = EFFECT_TYPE.ATTACK_ADD , Value = 1}
                }},
                new ItemEffect() { Quality = 80 , Effects = new []
                {
                    new Effect() { Type = EFFECT_TYPE.ATTACK_ADD , Value = 8},
                    new Effect() { Type = EFFECT_TYPE.ATTACK_ADD , Value = 2}
                }},
                new ItemEffect() { Quality = 0 , Effects = new []
                {
                    new Effect() { Type = EFFECT_TYPE.ATTACK_ADD , Value = 7},
                    new Effect() { Type = EFFECT_TYPE.ATTACK_ADD , Value = 3}
                }}

            };
            item = ip.BuildItem(80, item, effects);

            Assert.AreEqual(EFFECT_TYPE.ATTACK_ADD , item.Effects[0].Type );
            Assert.AreEqual(20, item.Effects[0].Value);
        }
        public Item BuildItem(float quality, Item item, ItemEffect[] item_effects)
        {
            var effectss = from e in item_effects
                           where quality >= e.Quality
                           select e.Effects;
            List<Effect> effects = new List<Effect>();
            foreach (var effectse in effectss)
            {
                effects.AddRange(effectse);
            }
            var groupEffects = from e in effects group e by e.Type;
            var resultEffect = from g in groupEffects
                               select new Effect()
                               {
                                   Type = g.Key,
                                   Value = g.Sum( q=> q.Value )
                               };
            item.Effects = resultEffect.ToArray();

            item.Life = _GetLife(item.Effects);
            return item;
        }
 public Item BuildItem(float quality,string name , ItemEffect[] item_effects)
 {
     var item = CreateItem(name);
     return BuildItem(quality , item , item_effects);
 }