public static ItemTooltipArmorStats Create(IProtoItemEquipment protoItem)
 {
     return(new ItemTooltipArmorStats()
     {
         protoItem = protoItem
     });
 }
        public ViewModelItemTooltipArmorStats(IProtoItemEquipment protoItem)
        {
            var effects = protoItem.ProtoEffects;

            var damageTypes         = EnumExtensions.GetValues <DamageType>();
            var primaryEntriesCount = 3;

            var arrayPrimary   = new DataDefense[primaryEntriesCount];
            var arraySecondary = new DataDefense[damageTypes.Length - primaryEntriesCount];

            var hasAnyNonZeroProtection = false;

            for (var index = 0; index < primaryEntriesCount; index++)
            {
                AddEntry(index);
            }

            for (var index = primaryEntriesCount; index < damageTypes.Length; index++)
            {
                AddEntry(index);
            }

            this.DefenseEntriesPrimary   = arrayPrimary;
            this.DefenseEntriesSecondary = arraySecondary;
            this.HasAnyNonZeroProtection = hasAnyNonZeroProtection;

            void AddEntry(int index)
            {
                var damageType      = damageTypes[index];
                var defenseStatName = WeaponDamageSystem.SharedGetDefenseStatName(damageType);

                byte defenseValue = 0;

                if (effects.Values.TryGetValue(defenseStatName, out var defense))
                {
                    defenseValue = (byte)MathHelper.Clamp(defense * 100, 0, 100);
                }

                var entry = new DataDefense(damageType, defenseValue);

                if (index < primaryEntriesCount)
                {
                    arrayPrimary[index] = entry;
                }
                else
                {
                    arraySecondary[index - primaryEntriesCount] = entry;
                }

                if (defenseValue > 0)
                {
                    hasAnyNonZeroProtection = true;
                }
            }
        }
Exemple #3
0
 public ProtoItemEquipmentViewModel([NotNull] IProtoItemEquipment equipment) : base(equipment)
 {
 }