Cleanup warnings in DamageVisualsSystem (#37372)
This commit is contained in:
@@ -27,6 +27,7 @@ namespace Content.Client.Damage;
|
|||||||
public sealed class DamageVisualsSystem : VisualizerSystem<DamageVisualsComponent>
|
public sealed class DamageVisualsSystem : VisualizerSystem<DamageVisualsComponent>
|
||||||
{
|
{
|
||||||
[Dependency] private readonly IPrototypeManager _prototypeManager = default!;
|
[Dependency] private readonly IPrototypeManager _prototypeManager = default!;
|
||||||
|
[Dependency] private readonly SpriteSystem _sprite = default!;
|
||||||
|
|
||||||
public override void Initialize()
|
public override void Initialize()
|
||||||
{
|
{
|
||||||
@@ -228,7 +229,7 @@ public sealed class DamageVisualsSystem : VisualizerSystem<DamageVisualsComponen
|
|||||||
// the layer key just doesn't exist, we skip it.
|
// the layer key just doesn't exist, we skip it.
|
||||||
foreach (var key in damageVisComp.TargetLayers)
|
foreach (var key in damageVisComp.TargetLayers)
|
||||||
{
|
{
|
||||||
if (!spriteComponent.LayerMapTryGet(key, out var index))
|
if (!_sprite.LayerMapTryGet((entity, spriteComponent), key, out var index, false))
|
||||||
{
|
{
|
||||||
Log.Warning($"Layer at key {key} was invalid for entity {entity}.");
|
Log.Warning($"Layer at key {key} was invalid for entity {entity}.");
|
||||||
continue;
|
continue;
|
||||||
@@ -253,7 +254,7 @@ public sealed class DamageVisualsSystem : VisualizerSystem<DamageVisualsComponen
|
|||||||
foreach (var layer in damageVisComp.TargetLayerMapKeys)
|
foreach (var layer in damageVisComp.TargetLayerMapKeys)
|
||||||
{
|
{
|
||||||
var layerCount = spriteComponent.AllLayers.Count();
|
var layerCount = spriteComponent.AllLayers.Count();
|
||||||
var index = spriteComponent.LayerMapGet(layer);
|
var index = _sprite.LayerMapGet((entity, spriteComponent), layer);
|
||||||
// var layerState = spriteComponent.LayerGetState(index).ToString()!;
|
// var layerState = spriteComponent.LayerGetState(index).ToString()!;
|
||||||
|
|
||||||
if (index + 1 != layerCount)
|
if (index + 1 != layerCount)
|
||||||
@@ -269,7 +270,7 @@ public sealed class DamageVisualsSystem : VisualizerSystem<DamageVisualsComponen
|
|||||||
{
|
{
|
||||||
foreach (var (group, sprite) in damageVisComp.DamageOverlayGroups)
|
foreach (var (group, sprite) in damageVisComp.DamageOverlayGroups)
|
||||||
{
|
{
|
||||||
AddDamageLayerToSprite(spriteComponent,
|
AddDamageLayerToSprite((entity, spriteComponent),
|
||||||
sprite,
|
sprite,
|
||||||
$"{layer}_{group}_{damageVisComp.Thresholds[1]}",
|
$"{layer}_{group}_{damageVisComp.Thresholds[1]}",
|
||||||
$"{layer}{group}",
|
$"{layer}{group}",
|
||||||
@@ -283,7 +284,7 @@ public sealed class DamageVisualsSystem : VisualizerSystem<DamageVisualsComponen
|
|||||||
// was taken.
|
// was taken.
|
||||||
else if (damageVisComp.DamageOverlay != null)
|
else if (damageVisComp.DamageOverlay != null)
|
||||||
{
|
{
|
||||||
AddDamageLayerToSprite(spriteComponent,
|
AddDamageLayerToSprite((entity, spriteComponent),
|
||||||
damageVisComp.DamageOverlay,
|
damageVisComp.DamageOverlay,
|
||||||
$"{layer}_{damageVisComp.Thresholds[1]}",
|
$"{layer}_{damageVisComp.Thresholds[1]}",
|
||||||
$"{layer}trackDamage",
|
$"{layer}trackDamage",
|
||||||
@@ -301,7 +302,7 @@ public sealed class DamageVisualsSystem : VisualizerSystem<DamageVisualsComponen
|
|||||||
{
|
{
|
||||||
foreach (var (group, sprite) in damageVisComp.DamageOverlayGroups)
|
foreach (var (group, sprite) in damageVisComp.DamageOverlayGroups)
|
||||||
{
|
{
|
||||||
AddDamageLayerToSprite(spriteComponent,
|
AddDamageLayerToSprite((entity, spriteComponent),
|
||||||
sprite,
|
sprite,
|
||||||
$"DamageOverlay_{group}_{damageVisComp.Thresholds[1]}",
|
$"DamageOverlay_{group}_{damageVisComp.Thresholds[1]}",
|
||||||
$"DamageOverlay{group}");
|
$"DamageOverlay{group}");
|
||||||
@@ -310,7 +311,7 @@ public sealed class DamageVisualsSystem : VisualizerSystem<DamageVisualsComponen
|
|||||||
}
|
}
|
||||||
else if (damageVisComp.DamageOverlay != null)
|
else if (damageVisComp.DamageOverlay != null)
|
||||||
{
|
{
|
||||||
AddDamageLayerToSprite(spriteComponent,
|
AddDamageLayerToSprite((entity, spriteComponent),
|
||||||
damageVisComp.DamageOverlay,
|
damageVisComp.DamageOverlay,
|
||||||
$"DamageOverlay_{damageVisComp.Thresholds[1]}",
|
$"DamageOverlay_{damageVisComp.Thresholds[1]}",
|
||||||
"DamageOverlay");
|
"DamageOverlay");
|
||||||
@@ -322,16 +323,19 @@ public sealed class DamageVisualsSystem : VisualizerSystem<DamageVisualsComponen
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Adds a damage tracking layer to a given sprite component.
|
/// Adds a damage tracking layer to a given sprite component.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private void AddDamageLayerToSprite(SpriteComponent spriteComponent, DamageVisualizerSprite sprite, string state, string mapKey, int? index = null)
|
private void AddDamageLayerToSprite(Entity<SpriteComponent?> spriteEnt, DamageVisualizerSprite sprite, string state, string mapKey, int? index = null)
|
||||||
{
|
{
|
||||||
var newLayer = spriteComponent.AddLayer(
|
var newLayer = _sprite.AddLayer(
|
||||||
|
spriteEnt,
|
||||||
new SpriteSpecifier.Rsi(
|
new SpriteSpecifier.Rsi(
|
||||||
new (sprite.Sprite), state
|
new(sprite.Sprite), state
|
||||||
), index);
|
),
|
||||||
spriteComponent.LayerMapSet(mapKey, newLayer);
|
index
|
||||||
|
);
|
||||||
|
_sprite.LayerMapSet(spriteEnt, mapKey, newLayer);
|
||||||
if (sprite.Color != null)
|
if (sprite.Color != null)
|
||||||
spriteComponent.LayerSetColor(newLayer, Color.FromHex(sprite.Color));
|
_sprite.LayerSetColor(spriteEnt, newLayer, Color.FromHex(sprite.Color));
|
||||||
spriteComponent.LayerSetVisible(newLayer, false);
|
_sprite.LayerSetVisible(spriteEnt, newLayer, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void OnAppearanceChange(EntityUid uid, DamageVisualsComponent damageVisComp, ref AppearanceChangeEvent args)
|
protected override void OnAppearanceChange(EntityUid uid, DamageVisualsComponent damageVisComp, ref AppearanceChangeEvent args)
|
||||||
@@ -362,18 +366,18 @@ public sealed class DamageVisualsSystem : VisualizerSystem<DamageVisualsComponen
|
|||||||
UpdateDisabledLayers(uid, spriteComponent, component, damageVisComp);
|
UpdateDisabledLayers(uid, spriteComponent, component, damageVisComp);
|
||||||
|
|
||||||
if (damageVisComp.Overlay && damageVisComp.DamageOverlayGroups != null && damageVisComp.TargetLayers == null)
|
if (damageVisComp.Overlay && damageVisComp.DamageOverlayGroups != null && damageVisComp.TargetLayers == null)
|
||||||
CheckOverlayOrdering(spriteComponent, damageVisComp);
|
CheckOverlayOrdering((uid, spriteComponent), damageVisComp);
|
||||||
|
|
||||||
if (AppearanceSystem.TryGetData<bool>(uid, DamageVisualizerKeys.ForceUpdate, out var update, component)
|
if (AppearanceSystem.TryGetData<bool>(uid, DamageVisualizerKeys.ForceUpdate, out var update, component)
|
||||||
&& update)
|
&& update)
|
||||||
{
|
{
|
||||||
ForceUpdateLayers(damageComponent, spriteComponent, damageVisComp);
|
ForceUpdateLayers((uid, damageComponent, spriteComponent, damageVisComp));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (damageVisComp.TrackAllDamage)
|
if (damageVisComp.TrackAllDamage)
|
||||||
{
|
{
|
||||||
UpdateDamageVisuals(damageComponent, spriteComponent, damageVisComp);
|
UpdateDamageVisuals((uid, damageComponent, spriteComponent, damageVisComp));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -383,7 +387,7 @@ public sealed class DamageVisualsSystem : VisualizerSystem<DamageVisualsComponen
|
|||||||
data = new DamageVisualizerGroupData(Comp<DamageableComponent>(uid).DamagePerGroup.Keys.ToList());
|
data = new DamageVisualizerGroupData(Comp<DamageableComponent>(uid).DamagePerGroup.Keys.ToList());
|
||||||
}
|
}
|
||||||
|
|
||||||
UpdateDamageVisuals(data.GroupList, damageComponent, spriteComponent, damageVisComp);
|
UpdateDamageVisuals(data.GroupList, (uid, damageComponent, spriteComponent, damageVisComp));
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -406,7 +410,7 @@ public sealed class DamageVisualsSystem : VisualizerSystem<DamageVisualsComponen
|
|||||||
damageVisComp.DisabledLayers[layer] = disabled;
|
damageVisComp.DisabledLayers[layer] = disabled;
|
||||||
if (damageVisComp.TrackAllDamage)
|
if (damageVisComp.TrackAllDamage)
|
||||||
{
|
{
|
||||||
spriteComponent.LayerSetVisible($"{layer}trackDamage", !disabled);
|
_sprite.LayerSetVisible((uid, spriteComponent), $"{layer}trackDamage", !disabled);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -415,7 +419,7 @@ public sealed class DamageVisualsSystem : VisualizerSystem<DamageVisualsComponen
|
|||||||
|
|
||||||
foreach (var damageGroup in damageVisComp.DamageOverlayGroups.Keys)
|
foreach (var damageGroup in damageVisComp.DamageOverlayGroups.Keys)
|
||||||
{
|
{
|
||||||
spriteComponent.LayerSetVisible($"{layer}{damageGroup}", !disabled);
|
_sprite.LayerSetVisible((uid, spriteComponent), $"{layer}{damageGroup}", !disabled);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -427,16 +431,16 @@ public sealed class DamageVisualsSystem : VisualizerSystem<DamageVisualsComponen
|
|||||||
/// most layer doesn't match, the sprite
|
/// most layer doesn't match, the sprite
|
||||||
/// layers are recreated and placed on top.
|
/// layers are recreated and placed on top.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private void CheckOverlayOrdering(SpriteComponent spriteComponent, DamageVisualsComponent damageVisComp)
|
private void CheckOverlayOrdering(Entity<SpriteComponent> spriteEnt, DamageVisualsComponent damageVisComp)
|
||||||
{
|
{
|
||||||
if (spriteComponent[damageVisComp.TopMostLayerKey] != spriteComponent[spriteComponent.AllLayers.Count() - 1])
|
if (spriteEnt.Comp[damageVisComp.TopMostLayerKey] != spriteEnt.Comp[spriteEnt.Comp.AllLayers.Count() - 1])
|
||||||
{
|
{
|
||||||
if (!damageVisComp.TrackAllDamage && damageVisComp.DamageOverlayGroups != null)
|
if (!damageVisComp.TrackAllDamage && damageVisComp.DamageOverlayGroups != null)
|
||||||
{
|
{
|
||||||
foreach (var (damageGroup, sprite) in damageVisComp.DamageOverlayGroups)
|
foreach (var (damageGroup, sprite) in damageVisComp.DamageOverlayGroups)
|
||||||
{
|
{
|
||||||
var threshold = damageVisComp.LastThresholdPerGroup[damageGroup];
|
var threshold = damageVisComp.LastThresholdPerGroup[damageGroup];
|
||||||
ReorderOverlaySprite(spriteComponent,
|
ReorderOverlaySprite(spriteEnt,
|
||||||
damageVisComp,
|
damageVisComp,
|
||||||
sprite,
|
sprite,
|
||||||
$"DamageOverlay{damageGroup}",
|
$"DamageOverlay{damageGroup}",
|
||||||
@@ -446,7 +450,7 @@ public sealed class DamageVisualsSystem : VisualizerSystem<DamageVisualsComponen
|
|||||||
}
|
}
|
||||||
else if (damageVisComp.TrackAllDamage && damageVisComp.DamageOverlay != null)
|
else if (damageVisComp.TrackAllDamage && damageVisComp.DamageOverlay != null)
|
||||||
{
|
{
|
||||||
ReorderOverlaySprite(spriteComponent,
|
ReorderOverlaySprite(spriteEnt,
|
||||||
damageVisComp,
|
damageVisComp,
|
||||||
damageVisComp.DamageOverlay,
|
damageVisComp.DamageOverlay,
|
||||||
$"DamageOverlay",
|
$"DamageOverlay",
|
||||||
@@ -456,21 +460,22 @@ public sealed class DamageVisualsSystem : VisualizerSystem<DamageVisualsComponen
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void ReorderOverlaySprite(SpriteComponent spriteComponent, DamageVisualsComponent damageVisComp, DamageVisualizerSprite sprite, string key, string statePrefix, FixedPoint2 threshold)
|
private void ReorderOverlaySprite(Entity<SpriteComponent> spriteEnt, DamageVisualsComponent damageVisComp, DamageVisualizerSprite sprite, string key, string statePrefix, FixedPoint2 threshold)
|
||||||
{
|
{
|
||||||
spriteComponent.LayerMapTryGet(key, out var spriteLayer);
|
_sprite.LayerMapTryGet(spriteEnt.AsNullable(), key, out var spriteLayer, false);
|
||||||
var visibility = spriteComponent[spriteLayer].Visible;
|
var visibility = spriteEnt.Comp[spriteLayer].Visible;
|
||||||
spriteComponent.RemoveLayer(spriteLayer);
|
_sprite.RemoveLayer(spriteEnt.AsNullable(), spriteLayer);
|
||||||
if (threshold == FixedPoint2.Zero) // these should automatically be invisible
|
if (threshold == FixedPoint2.Zero) // these should automatically be invisible
|
||||||
threshold = damageVisComp.Thresholds[1];
|
threshold = damageVisComp.Thresholds[1];
|
||||||
spriteLayer = spriteComponent.AddLayer(
|
spriteLayer = _sprite.AddLayer(
|
||||||
|
spriteEnt.AsNullable(),
|
||||||
new SpriteSpecifier.Rsi(
|
new SpriteSpecifier.Rsi(
|
||||||
new (sprite.Sprite),
|
new(sprite.Sprite),
|
||||||
$"{statePrefix}_{threshold}"
|
$"{statePrefix}_{threshold}"
|
||||||
),
|
),
|
||||||
spriteLayer);
|
spriteLayer);
|
||||||
spriteComponent.LayerMapSet(key, spriteLayer);
|
_sprite.LayerMapSet(spriteEnt.AsNullable(), key, spriteLayer);
|
||||||
spriteComponent.LayerSetVisible(spriteLayer, visibility);
|
_sprite.LayerSetVisible(spriteEnt.AsNullable(), spriteLayer, visibility);
|
||||||
// this is somewhat iffy since it constantly reallocates
|
// this is somewhat iffy since it constantly reallocates
|
||||||
damageVisComp.TopMostLayerKey = key;
|
damageVisComp.TopMostLayerKey = key;
|
||||||
}
|
}
|
||||||
@@ -479,8 +484,12 @@ public sealed class DamageVisualsSystem : VisualizerSystem<DamageVisualsComponen
|
|||||||
/// Updates damage visuals without tracking
|
/// Updates damage visuals without tracking
|
||||||
/// any damage groups.
|
/// any damage groups.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private void UpdateDamageVisuals(DamageableComponent damageComponent, SpriteComponent spriteComponent, DamageVisualsComponent damageVisComp)
|
private void UpdateDamageVisuals(Entity<DamageableComponent, SpriteComponent, DamageVisualsComponent> entity)
|
||||||
{
|
{
|
||||||
|
var damageComponent = entity.Comp1;
|
||||||
|
var spriteComponent = entity.Comp2;
|
||||||
|
var damageVisComp = entity.Comp3;
|
||||||
|
|
||||||
if (!CheckThresholdBoundary(damageComponent.TotalDamage, damageVisComp.LastDamageThreshold, damageVisComp, out var threshold))
|
if (!CheckThresholdBoundary(damageComponent.TotalDamage, damageVisComp.LastDamageThreshold, damageVisComp, out var threshold))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
@@ -490,12 +499,12 @@ public sealed class DamageVisualsSystem : VisualizerSystem<DamageVisualsComponen
|
|||||||
{
|
{
|
||||||
foreach (var layerMapKey in damageVisComp.TargetLayerMapKeys)
|
foreach (var layerMapKey in damageVisComp.TargetLayerMapKeys)
|
||||||
{
|
{
|
||||||
UpdateTargetLayer(spriteComponent, damageVisComp, layerMapKey, threshold);
|
UpdateTargetLayer((entity, spriteComponent), damageVisComp, layerMapKey, threshold);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
UpdateOverlay(spriteComponent, threshold);
|
UpdateOverlay((entity, spriteComponent), threshold);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -504,8 +513,12 @@ public sealed class DamageVisualsSystem : VisualizerSystem<DamageVisualsComponen
|
|||||||
/// according to the list of damage groups
|
/// according to the list of damage groups
|
||||||
/// passed into it.
|
/// passed into it.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private void UpdateDamageVisuals(List<string> delta, DamageableComponent damageComponent, SpriteComponent spriteComponent, DamageVisualsComponent damageVisComp)
|
private void UpdateDamageVisuals(List<string> delta, Entity<DamageableComponent, SpriteComponent, DamageVisualsComponent> entity)
|
||||||
{
|
{
|
||||||
|
var damageComponent = entity.Comp1;
|
||||||
|
var spriteComponent = entity.Comp2;
|
||||||
|
var damageVisComp = entity.Comp3;
|
||||||
|
|
||||||
foreach (var damageGroup in delta)
|
foreach (var damageGroup in delta)
|
||||||
{
|
{
|
||||||
if (!damageVisComp.Overlay && damageGroup != damageVisComp.DamageGroup)
|
if (!damageVisComp.Overlay && damageGroup != damageVisComp.DamageGroup)
|
||||||
@@ -525,12 +538,12 @@ public sealed class DamageVisualsSystem : VisualizerSystem<DamageVisualsComponen
|
|||||||
{
|
{
|
||||||
foreach (var layerMapKey in damageVisComp.TargetLayerMapKeys)
|
foreach (var layerMapKey in damageVisComp.TargetLayerMapKeys)
|
||||||
{
|
{
|
||||||
UpdateTargetLayer(spriteComponent, damageVisComp, layerMapKey, damageGroup, threshold);
|
UpdateTargetLayer((entity, spriteComponent, damageVisComp), layerMapKey, damageGroup, threshold);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
UpdateOverlay(spriteComponent, damageVisComp, damageGroup, threshold);
|
UpdateOverlay((entity, spriteComponent, damageVisComp), damageGroup, threshold);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -567,19 +580,21 @@ public sealed class DamageVisualsSystem : VisualizerSystem<DamageVisualsComponen
|
|||||||
/// Does different things depending on
|
/// Does different things depending on
|
||||||
/// the configuration of the visualizer.
|
/// the configuration of the visualizer.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private void ForceUpdateLayers(DamageableComponent damageComponent, SpriteComponent spriteComponent, DamageVisualsComponent damageVisComp)
|
private void ForceUpdateLayers(Entity<DamageableComponent, SpriteComponent, DamageVisualsComponent> entity)
|
||||||
{
|
{
|
||||||
|
var damageVisComp = entity.Comp3;
|
||||||
|
|
||||||
if (damageVisComp.DamageOverlayGroups != null)
|
if (damageVisComp.DamageOverlayGroups != null)
|
||||||
{
|
{
|
||||||
UpdateDamageVisuals(damageVisComp.DamageOverlayGroups.Keys.ToList(), damageComponent, spriteComponent, damageVisComp);
|
UpdateDamageVisuals(damageVisComp.DamageOverlayGroups.Keys.ToList(), entity);
|
||||||
}
|
}
|
||||||
else if (damageVisComp.DamageGroup != null)
|
else if (damageVisComp.DamageGroup != null)
|
||||||
{
|
{
|
||||||
UpdateDamageVisuals(new List<string>(){ damageVisComp.DamageGroup }, damageComponent, spriteComponent, damageVisComp);
|
UpdateDamageVisuals(new List<string>() { damageVisComp.DamageGroup }, entity);
|
||||||
}
|
}
|
||||||
else if (damageVisComp.DamageOverlay != null)
|
else if (damageVisComp.DamageOverlay != null)
|
||||||
{
|
{
|
||||||
UpdateDamageVisuals(damageComponent, spriteComponent, damageVisComp);
|
UpdateDamageVisuals(entity);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -588,16 +603,16 @@ public sealed class DamageVisualsSystem : VisualizerSystem<DamageVisualsComponen
|
|||||||
/// it assumes you're updating a layer that is tracking all
|
/// it assumes you're updating a layer that is tracking all
|
||||||
/// damage.
|
/// damage.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private void UpdateTargetLayer(SpriteComponent spriteComponent, DamageVisualsComponent damageVisComp, object layerMapKey, FixedPoint2 threshold)
|
private void UpdateTargetLayer(Entity<SpriteComponent> spriteEnt, DamageVisualsComponent damageVisComp, object layerMapKey, FixedPoint2 threshold)
|
||||||
{
|
{
|
||||||
if (damageVisComp.Overlay && damageVisComp.DamageOverlayGroups != null)
|
if (damageVisComp.Overlay && damageVisComp.DamageOverlayGroups != null)
|
||||||
{
|
{
|
||||||
if (!damageVisComp.DisabledLayers[layerMapKey])
|
if (!damageVisComp.DisabledLayers[layerMapKey])
|
||||||
{
|
{
|
||||||
var layerState = damageVisComp.LayerMapKeyStates[layerMapKey];
|
var layerState = damageVisComp.LayerMapKeyStates[layerMapKey];
|
||||||
spriteComponent.LayerMapTryGet($"{layerMapKey}trackDamage", out var spriteLayer);
|
_sprite.LayerMapTryGet(spriteEnt.AsNullable(), $"{layerMapKey}trackDamage", out var spriteLayer, false);
|
||||||
|
|
||||||
UpdateDamageLayerState(spriteComponent,
|
UpdateDamageLayerState(spriteEnt,
|
||||||
spriteLayer,
|
spriteLayer,
|
||||||
$"{layerState}",
|
$"{layerState}",
|
||||||
threshold);
|
threshold);
|
||||||
@@ -606,9 +621,9 @@ public sealed class DamageVisualsSystem : VisualizerSystem<DamageVisualsComponen
|
|||||||
else if (!damageVisComp.Overlay)
|
else if (!damageVisComp.Overlay)
|
||||||
{
|
{
|
||||||
var layerState = damageVisComp.LayerMapKeyStates[layerMapKey];
|
var layerState = damageVisComp.LayerMapKeyStates[layerMapKey];
|
||||||
spriteComponent.LayerMapTryGet(layerMapKey, out var spriteLayer);
|
_sprite.LayerMapTryGet(spriteEnt.AsNullable(), $"{layerMapKey}", out var spriteLayer, false);
|
||||||
|
|
||||||
UpdateDamageLayerState(spriteComponent,
|
UpdateDamageLayerState(spriteEnt,
|
||||||
spriteLayer,
|
spriteLayer,
|
||||||
$"{layerState}",
|
$"{layerState}",
|
||||||
threshold);
|
threshold);
|
||||||
@@ -618,16 +633,20 @@ public sealed class DamageVisualsSystem : VisualizerSystem<DamageVisualsComponen
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Updates a target layer by damage group.
|
/// Updates a target layer by damage group.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private void UpdateTargetLayer(SpriteComponent spriteComponent, DamageVisualsComponent damageVisComp, object layerMapKey, string damageGroup, FixedPoint2 threshold)
|
private void UpdateTargetLayer(Entity<SpriteComponent, DamageVisualsComponent> entity, object layerMapKey, string damageGroup, FixedPoint2 threshold)
|
||||||
{
|
{
|
||||||
|
var spriteComponent = entity.Comp1;
|
||||||
|
var damageVisComp = entity.Comp2;
|
||||||
|
|
||||||
if (damageVisComp.Overlay && damageVisComp.DamageOverlayGroups != null)
|
if (damageVisComp.Overlay && damageVisComp.DamageOverlayGroups != null)
|
||||||
{
|
{
|
||||||
if (damageVisComp.DamageOverlayGroups.ContainsKey(damageGroup) && !damageVisComp.DisabledLayers[layerMapKey])
|
if (damageVisComp.DamageOverlayGroups.ContainsKey(damageGroup) && !damageVisComp.DisabledLayers[layerMapKey])
|
||||||
{
|
{
|
||||||
var layerState = damageVisComp.LayerMapKeyStates[layerMapKey];
|
var layerState = damageVisComp.LayerMapKeyStates[layerMapKey];
|
||||||
spriteComponent.LayerMapTryGet($"{layerMapKey}{damageGroup}", out var spriteLayer);
|
_sprite.LayerMapTryGet((entity, spriteComponent), $"{layerMapKey}{damageGroup}", out var spriteLayer, false);
|
||||||
|
|
||||||
UpdateDamageLayerState(spriteComponent,
|
UpdateDamageLayerState(
|
||||||
|
(entity, spriteComponent),
|
||||||
spriteLayer,
|
spriteLayer,
|
||||||
$"{layerState}_{damageGroup}",
|
$"{layerState}_{damageGroup}",
|
||||||
threshold);
|
threshold);
|
||||||
@@ -636,9 +655,10 @@ public sealed class DamageVisualsSystem : VisualizerSystem<DamageVisualsComponen
|
|||||||
else if (!damageVisComp.Overlay)
|
else if (!damageVisComp.Overlay)
|
||||||
{
|
{
|
||||||
var layerState = damageVisComp.LayerMapKeyStates[layerMapKey];
|
var layerState = damageVisComp.LayerMapKeyStates[layerMapKey];
|
||||||
spriteComponent.LayerMapTryGet(layerMapKey, out var spriteLayer);
|
_sprite.LayerMapTryGet((entity, spriteComponent), $"{layerMapKey}", out var spriteLayer, false);
|
||||||
|
|
||||||
UpdateDamageLayerState(spriteComponent,
|
UpdateDamageLayerState(
|
||||||
|
(entity, spriteComponent),
|
||||||
spriteLayer,
|
spriteLayer,
|
||||||
$"{layerState}_{damageGroup}",
|
$"{layerState}_{damageGroup}",
|
||||||
threshold);
|
threshold);
|
||||||
@@ -648,11 +668,11 @@ public sealed class DamageVisualsSystem : VisualizerSystem<DamageVisualsComponen
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Updates an overlay that is tracking all damage.
|
/// Updates an overlay that is tracking all damage.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private void UpdateOverlay(SpriteComponent spriteComponent, FixedPoint2 threshold)
|
private void UpdateOverlay(Entity<SpriteComponent> spriteEnt, FixedPoint2 threshold)
|
||||||
{
|
{
|
||||||
spriteComponent.LayerMapTryGet($"DamageOverlay", out var spriteLayer);
|
_sprite.LayerMapTryGet(spriteEnt.AsNullable(), $"DamageOverlay", out var spriteLayer, false);
|
||||||
|
|
||||||
UpdateDamageLayerState(spriteComponent,
|
UpdateDamageLayerState(spriteEnt,
|
||||||
spriteLayer,
|
spriteLayer,
|
||||||
$"DamageOverlay",
|
$"DamageOverlay",
|
||||||
threshold);
|
threshold);
|
||||||
@@ -661,15 +681,19 @@ public sealed class DamageVisualsSystem : VisualizerSystem<DamageVisualsComponen
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Updates an overlay based on damage group.
|
/// Updates an overlay based on damage group.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private void UpdateOverlay(SpriteComponent spriteComponent, DamageVisualsComponent damageVisComp, string damageGroup, FixedPoint2 threshold)
|
private void UpdateOverlay(Entity<SpriteComponent, DamageVisualsComponent> entity, string damageGroup, FixedPoint2 threshold)
|
||||||
{
|
{
|
||||||
|
var spriteComponent = entity.Comp1;
|
||||||
|
var damageVisComp = entity.Comp2;
|
||||||
|
|
||||||
if (damageVisComp.DamageOverlayGroups != null)
|
if (damageVisComp.DamageOverlayGroups != null)
|
||||||
{
|
{
|
||||||
if (damageVisComp.DamageOverlayGroups.ContainsKey(damageGroup))
|
if (damageVisComp.DamageOverlayGroups.ContainsKey(damageGroup))
|
||||||
{
|
{
|
||||||
spriteComponent.LayerMapTryGet($"DamageOverlay{damageGroup}", out var spriteLayer);
|
_sprite.LayerMapTryGet((entity, spriteComponent), $"DamageOverlay{damageGroup}", out var spriteLayer, false);
|
||||||
|
|
||||||
UpdateDamageLayerState(spriteComponent,
|
UpdateDamageLayerState(
|
||||||
|
(entity, spriteComponent),
|
||||||
spriteLayer,
|
spriteLayer,
|
||||||
$"DamageOverlay_{damageGroup}",
|
$"DamageOverlay_{damageGroup}",
|
||||||
threshold);
|
threshold);
|
||||||
@@ -683,19 +707,19 @@ public sealed class DamageVisualsSystem : VisualizerSystem<DamageVisualsComponen
|
|||||||
/// function calls it), and what threshold
|
/// function calls it), and what threshold
|
||||||
/// was passed into it.
|
/// was passed into it.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private void UpdateDamageLayerState(SpriteComponent spriteComponent, int spriteLayer, string statePrefix, FixedPoint2 threshold)
|
private void UpdateDamageLayerState(Entity<SpriteComponent> spriteEnt, int spriteLayer, string statePrefix, FixedPoint2 threshold)
|
||||||
{
|
{
|
||||||
if (threshold == 0)
|
if (threshold == 0)
|
||||||
{
|
{
|
||||||
spriteComponent.LayerSetVisible(spriteLayer, false);
|
_sprite.LayerSetVisible(spriteEnt.AsNullable(), spriteLayer, false);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (!spriteComponent[spriteLayer].Visible)
|
if (!spriteEnt.Comp[spriteLayer].Visible)
|
||||||
{
|
{
|
||||||
spriteComponent.LayerSetVisible(spriteLayer, true);
|
_sprite.LayerSetVisible(spriteEnt.AsNullable(), spriteLayer, true);
|
||||||
}
|
}
|
||||||
spriteComponent.LayerSetState(spriteLayer, $"{statePrefix}_{threshold}");
|
_sprite.LayerSetRsiState(spriteEnt.AsNullable(), spriteLayer, $"{statePrefix}_{threshold}");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user