private async Task AddDamageMeterFragmentAsync(KeyValuePair <Guid, PlayerGameObject> healthChangeObject, List <KeyValuePair <Guid, PlayerGameObject> > entities, long highestDamage, long highestHeal) { if (healthChangeObject.Value == null || double.IsNaN(healthChangeObject.Value.Damage) || healthChangeObject.Value.Damage <= 0) { return; } var mainHandItem = ItemController.GetItemByIndex(healthChangeObject.Value?.CharacterEquipment?.MainHand ?? 0); var damageMeterFragment = new DamageMeterFragment { CauserGuid = healthChangeObject.Value.UserGuid, Damage = healthChangeObject.Value.Damage.ToShortNumberString(), Dps = healthChangeObject.Value.Dps, DamageInPercent = (double)healthChangeObject.Value.Damage / highestDamage * 100, DamagePercentage = GetDamagePercentage(entities, healthChangeObject.Value.Damage), Heal = healthChangeObject.Value.Heal.ToShortNumberString(), Hps = healthChangeObject.Value.Hps, HealInPercent = (double)healthChangeObject.Value.Heal / highestHeal * 100, HealPercentage = GetHealPercentage(entities, healthChangeObject.Value.Heal), Name = healthChangeObject.Value.Name, CauserMainHand = await SetItemInfoIfSlotTypeMainHandAsync(mainHandItem, healthChangeObject.Value?.CharacterEquipment?.MainHand) }; _mainWindowViewModel.DamageMeter.Add(damageMeterFragment); }
private async Task UpdateDamageMeterFragmentAsync(DamageMeterFragment fragment, KeyValuePair <Guid, PlayerGameObject> healthChangeObject, List <KeyValuePair <Guid, PlayerGameObject> > entities, long highestDamage, long highestHeal) { fragment.CauserMainHand = await SetItemInfoIfSlotTypeMainHandAsync(fragment.CauserMainHand, healthChangeObject.Value?.CharacterEquipment?.MainHand); // Damage if (healthChangeObject.Value?.Damage > 0) { fragment.DamageInPercent = (double)healthChangeObject.Value.Damage / highestDamage * 100; } fragment.Damage = healthChangeObject.Value?.Damage.ToShortNumberString(); if (healthChangeObject.Value?.Dps != null) { fragment.Dps = healthChangeObject.Value.Dps; } if (healthChangeObject.Value != null) { fragment.DamagePercentage = GetDamagePercentage(entities, healthChangeObject.Value.Damage); } // Heal if (healthChangeObject.Value?.Heal > 0) { fragment.HealInPercent = (double)healthChangeObject.Value.Heal / highestHeal * 100; } fragment.Heal = healthChangeObject.Value?.Heal.ToShortNumberString(); if (healthChangeObject.Value?.Hps != null) { fragment.Hps = healthChangeObject.Value.Hps; } if (healthChangeObject.Value != null) { fragment.HealPercentage = GetDamagePercentage(entities, healthChangeObject.Value.Heal); } }