Пример #1
0
        public RollValue(ItemMod mod, FsController fs, int iLvl, bool implicitMod = false)
        {
            string name = mod.RawName;
            TheMod = fs.Mods.records[name];
            AffixType = TheMod.AffixType;
            AffixText = String.IsNullOrEmpty(TheMod.UserFriendlyName) ? TheMod.Key : TheMod.UserFriendlyName;
            IsCrafted = TheMod.Domain == 10;
            StatValue = new int[] {mod.Value1, mod.Value2, mod.Value3, mod.Value4 };

            int subOptimalTierDistance = 0;

            List<ModsDat.ModRecord> allTiers;
            if (fs.Mods.recordsByTier.TryGetValue(Tuple.Create(TheMod.Group, TheMod.AffixType), out allTiers))
            {
                bool tierFound = false;
                TotalTiers = 0;
                //AllTiersRange = new[]{new IntRange(), new IntRange(), new IntRange()};
                foreach (var tn in allTiers)
                {
                    // still not filtering out some mods. (like a.spd from gloves projected onto rings)
                    if (tn.StatNames[0] != TheMod.StatNames[0] || tn.StatNames[1] != TheMod.StatNames[1]
                        ||tn.StatNames[2] != TheMod.StatNames[2] || tn.StatNames[3] != TheMod.StatNames[3])
                        continue;

                    TotalTiers++;
                    if (tn.Equals(TheMod))
                    {
                        Tier = TotalTiers;
                        tierFound = true;
                    }
                    if (!tierFound && tn.MinLevel <= iLvl)
                        subOptimalTierDistance++;
                }
            }
            double hue;

            if (TotalTiers == 1)
                hue = 180;
            else
                hue = 120 - Math.Min(subOptimalTierDistance, 3)*40;

            if (implicitMod)
                TextColor = HudSkin.MagicColor;
            else
                TextColor = ColorUtils.ColorFromHsv(hue, TotalTiers == 1 ? 0 : 1, 1);
        }
Пример #2
0
 public void Translate(ItemStats stats, ItemMod m)
 {
     if (!this.dict.ContainsKey(m.Name))
     {
         return;
     }
     this.dict[m.Name](stats, m);
 }