22using Content . Shared . Damage ;
33using Content . Shared . Damage . Components ;
44using Content . Shared . Damage . Prototypes ;
5+ using Content . Shared . Damage . Systems ;
56using Content . Shared . FixedPoint ;
67using Robust . Client . GameObjects ;
78using Robust . Shared . Prototypes ;
@@ -28,6 +29,7 @@ namespace Content.Client.Damage;
2829public sealed class DamageVisualsSystem : VisualizerSystem < DamageVisualsComponent >
2930{
3031 [ Dependency ] private readonly IPrototypeManager _prototypeManager = default ! ;
32+ [ Dependency ] private readonly DamageableSystem _damageable = default ! ;
3133
3234 public override void Initialize ( )
3335 {
@@ -174,7 +176,7 @@ private void InitializeVisualizer(EntityUid entity, DamageVisualsComponent damag
174176 // See if that group is in our entity's damage container.
175177 else if ( ! damageVisComp . Overlay && damageVisComp . DamageGroup != null )
176178 {
177- if ( ! damageContainer . SupportedGroups . Contains ( damageVisComp . DamageGroup ) )
179+ if ( ! damageContainer . SupportedGroups . Contains ( damageVisComp . DamageGroup . Value ) )
178180 {
179181 Log . Error ( $ "Damage keys were invalid for entity { entity } .") ;
180182 damageVisComp . Valid = false ;
@@ -384,7 +386,7 @@ private void HandleDamage(EntityUid uid, AppearanceComponent component, DamageVi
384386 if ( ! AppearanceSystem . TryGetData < DamageVisualizerGroupData > ( uid , DamageVisualizerKeys . DamageUpdateGroups ,
385387 out var data , component ) )
386388 {
387- data = new DamageVisualizerGroupData ( Comp < DamageableComponent > ( uid ) . DamagePerGroup . Keys . ToList ( ) ) ;
389+ data = new DamageVisualizerGroupData ( _damageable . GetDamagePerGroup ( uid ) . Keys . ToList ( ) ) ;
388390 }
389391
390392 UpdateDamageVisuals ( data . GroupList , ( uid , damageComponent , spriteComponent , damageVisComp ) ) ;
@@ -486,11 +488,10 @@ private void ReorderOverlaySprite(Entity<SpriteComponent> spriteEnt, DamageVisua
486488 /// </summary>
487489 private void UpdateDamageVisuals ( Entity < DamageableComponent , SpriteComponent , DamageVisualsComponent > entity )
488490 {
489- var damageComponent = entity . Comp1 ;
490491 var spriteComponent = entity . Comp2 ;
491492 var damageVisComp = entity . Comp3 ;
492493
493- if ( ! CheckThresholdBoundary ( damageComponent . TotalDamage , damageVisComp . LastDamageThreshold , damageVisComp , out var threshold ) )
494+ if ( ! CheckThresholdBoundary ( _damageable . GetTotalDamage ( entity . AsNullable ( ) ) , damageVisComp . LastDamageThreshold , damageVisComp , out var threshold ) )
494495 return ;
495496
496497 damageVisComp . LastDamageThreshold = threshold ;
@@ -513,19 +514,19 @@ private void UpdateDamageVisuals(Entity<DamageableComponent, SpriteComponent, Da
513514 /// according to the list of damage groups
514515 /// passed into it.
515516 /// </summary>
516- private void UpdateDamageVisuals ( List < string > delta , Entity < DamageableComponent , SpriteComponent , DamageVisualsComponent > entity )
517+ private void UpdateDamageVisuals ( List < ProtoId < DamageGroupPrototype > > delta , Entity < DamageableComponent , SpriteComponent , DamageVisualsComponent > entity )
517518 {
518- var damageComponent = entity . Comp1 ;
519519 var spriteComponent = entity . Comp2 ;
520520 var damageVisComp = entity . Comp3 ;
521+ var damage = _damageable . GetAllDamage ( ( entity . Owner , entity . Comp1 ) ) ;
521522
522523 foreach ( var damageGroup in delta )
523524 {
524525 if ( ! damageVisComp . Overlay && damageGroup != damageVisComp . DamageGroup )
525526 continue ;
526527
527528 if ( ! _prototypeManager . TryIndex < DamageGroupPrototype > ( damageGroup , out var damageGroupPrototype )
528- || ! damageComponent . Damage . TryGetDamageInGroup ( damageGroupPrototype , out var damageTotal ) )
529+ || ! damage . TryGetDamageInGroup ( damageGroupPrototype , out var damageTotal ) )
529530 continue ;
530531
531532 if ( ! damageVisComp . LastThresholdPerGroup . TryGetValue ( damageGroup , out var lastThreshold )
@@ -590,7 +591,7 @@ private void ForceUpdateLayers(Entity<DamageableComponent, SpriteComponent, Dama
590591 }
591592 else if ( damageVisComp . DamageGroup != null )
592593 {
593- UpdateDamageVisuals ( new List < string > ( ) { damageVisComp . DamageGroup } , entity ) ;
594+ UpdateDamageVisuals ( new ( ) { damageVisComp . DamageGroup . Value } , entity ) ;
594595 }
595596 else if ( damageVisComp . DamageOverlay != null )
596597 {
0 commit comments