[Fix]: Исправлено отображение урона в УИ анализатора здоровья (#77)
* fix: возвращено отображение урона в сканере здоровья * add: сканер здоровья только те группы, где есть урон
This commit is contained in:
@@ -23,36 +23,55 @@ namespace Content.Client.HealthAnalyzer.UI
|
||||
{
|
||||
var entities = IoCManager.Resolve<IEntityManager>();
|
||||
|
||||
if (msg.TargetEntity != null &&
|
||||
entities.TryGetComponent<DamageableComponent>(entities.GetEntity(msg.TargetEntity), out var damageable))
|
||||
if (msg.TargetEntity == null || !entities.TryGetComponent(entities.GetEntity(msg.TargetEntity),
|
||||
out DamageableComponent? damageable))
|
||||
{
|
||||
EntityNameLabel.Text = Identity.Name(entities.GetEntity(msg.TargetEntity.Value), entities);
|
||||
TemperatureLabel.Text = float.IsNaN(msg.Temperature) ? Loc.GetString("health-analyzer-window-no-data") : $"{msg.Temperature - 273f:F1} \u00B0C";
|
||||
BloodLevelLabel.Text = float.IsNaN(msg.BloodLevel) ? Loc.GetString("health-analyzer-window-no-data") : $"{msg.BloodLevel * 100:F1} %";
|
||||
TotalDamageLabel.Text = damageable.TotalDamage.ToString();
|
||||
return;
|
||||
}
|
||||
|
||||
entities.TryGetComponent<MobStateComponent>(entities.GetEntity(msg.TargetEntity), out var mobStateComponent);
|
||||
EntityNameLabel.Text = Identity.Name(entities.GetEntity(msg.TargetEntity.Value), entities);
|
||||
TemperatureLabel.Text = float.IsNaN(msg.Temperature)
|
||||
? Loc.GetString("health-analyzer-window-no-data")
|
||||
: $"{msg.Temperature - 273f:F1} \u00B0C";
|
||||
|
||||
AliveStatusLabel.Text = mobStateComponent?.CurrentState switch
|
||||
BloodLevelLabel.Text = float.IsNaN(msg.BloodLevel)
|
||||
? Loc.GetString("health-analyzer-window-no-data")
|
||||
: $"{msg.BloodLevel * 100:F1} %";
|
||||
|
||||
TotalDamageLabel.Text = damageable.TotalDamage.ToString();
|
||||
|
||||
entities.TryGetComponent<MobStateComponent>(entities.GetEntity(msg.TargetEntity),
|
||||
out var mobStateComponent);
|
||||
|
||||
AliveStatusLabel.Text = mobStateComponent?.CurrentState switch
|
||||
{
|
||||
Shared.Mobs.MobState.Alive => Loc.GetString(
|
||||
"health-analyzer-window-entity-current-alive-status-alive-text"),
|
||||
Shared.Mobs.MobState.Critical => Loc.GetString(
|
||||
"health-analyzer-window-entity-current-alive-status-critical-text"),
|
||||
Shared.Mobs.MobState.Dead => Loc.GetString(
|
||||
"health-analyzer-window-entity-current-alive-status-dead-text"),
|
||||
_ => Loc.GetString("health-analyzer-window-no-data"),
|
||||
};
|
||||
|
||||
IReadOnlyDictionary<string, FixedPoint2> damagePerGroup = damageable.DamagePerGroup;
|
||||
IReadOnlyDictionary<string, FixedPoint2> damagePerType = damageable.Damage.DamageDict;
|
||||
|
||||
DamageGroupsContainer.RemoveAllChildren();
|
||||
|
||||
// Show the total damage and type breakdown for each damage group.
|
||||
foreach (var (damageGroupId, damageAmount) in damagePerGroup)
|
||||
{
|
||||
if (damageAmount == 0)
|
||||
{
|
||||
Shared.Mobs.MobState.Alive => Loc.GetString("health-analyzer-window-entity-current-alive-status-alive-text"),
|
||||
Shared.Mobs.MobState.Critical => Loc.GetString("health-analyzer-window-entity-current-alive-status-critical-text"),
|
||||
Shared.Mobs.MobState.Dead => Loc.GetString("health-analyzer-window-entity-current-alive-status-dead-text"),
|
||||
_ => Loc.GetString("health-analyzer-window-no-data"),
|
||||
};
|
||||
|
||||
IReadOnlyDictionary<string, FixedPoint2> damagePerGroup = damageable.DamagePerGroup;
|
||||
IReadOnlyDictionary<string, FixedPoint2> damagePerType = damageable.Damage.DamageDict;
|
||||
|
||||
DamageGroupsContainer.RemoveAllChildren();
|
||||
|
||||
// Show the total damage and type breakdown for each damage group.
|
||||
foreach (var (damageGroupId, damageAmount) in damagePerGroup)
|
||||
{
|
||||
var damageGroupTitle = Loc.GetString("health-analyzer-window-damage-group-" + damageGroupId, ("amount", damageAmount));
|
||||
|
||||
DamageGroupsContainer.AddChild(new GroupDamageCardComponent(damageGroupTitle, damageGroupId, damagePerType));
|
||||
continue;
|
||||
}
|
||||
|
||||
var damageGroupTitle = Loc.GetString("health-analyzer-window-damage-group-" + damageGroupId,
|
||||
("amount", damageAmount));
|
||||
|
||||
DamageGroupsContainer.AddChild(new GroupDamageCardComponent(damageGroupTitle, damageGroupId,
|
||||
damagePerType));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user