Minor SpriteFade stuff (#35385)
This commit is contained in:
@@ -20,12 +20,21 @@ public sealed class SpriteFadeSystem : EntitySystem
|
|||||||
|
|
||||||
private readonly HashSet<FadingSpriteComponent> _comps = new();
|
private readonly HashSet<FadingSpriteComponent> _comps = new();
|
||||||
|
|
||||||
|
private EntityQuery<SpriteComponent> _spriteQuery;
|
||||||
|
private EntityQuery<SpriteFadeComponent> _fadeQuery;
|
||||||
|
private EntityQuery<FadingSpriteComponent> _fadingQuery;
|
||||||
|
|
||||||
private const float TargetAlpha = 0.4f;
|
private const float TargetAlpha = 0.4f;
|
||||||
private const float ChangeRate = 1f;
|
private const float ChangeRate = 1f;
|
||||||
|
|
||||||
public override void Initialize()
|
public override void Initialize()
|
||||||
{
|
{
|
||||||
base.Initialize();
|
base.Initialize();
|
||||||
|
|
||||||
|
_spriteQuery = GetEntityQuery<SpriteComponent>();
|
||||||
|
_fadeQuery = GetEntityQuery<SpriteFadeComponent>();
|
||||||
|
_fadingQuery = GetEntityQuery<FadingSpriteComponent>();
|
||||||
|
|
||||||
SubscribeLocalEvent<FadingSpriteComponent, ComponentShutdown>(OnFadingShutdown);
|
SubscribeLocalEvent<FadingSpriteComponent, ComponentShutdown>(OnFadingShutdown);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -42,28 +51,26 @@ public sealed class SpriteFadeSystem : EntitySystem
|
|||||||
base.FrameUpdate(frameTime);
|
base.FrameUpdate(frameTime);
|
||||||
|
|
||||||
var player = _playerManager.LocalEntity;
|
var player = _playerManager.LocalEntity;
|
||||||
var spriteQuery = GetEntityQuery<SpriteComponent>();
|
|
||||||
var change = ChangeRate * frameTime;
|
var change = ChangeRate * frameTime;
|
||||||
|
|
||||||
if (TryComp(player, out TransformComponent? playerXform) &&
|
if (TryComp(player, out TransformComponent? playerXform) &&
|
||||||
_stateManager.CurrentState is GameplayState state &&
|
_stateManager.CurrentState is GameplayState state &&
|
||||||
spriteQuery.TryGetComponent(player, out var playerSprite))
|
_spriteQuery.TryGetComponent(player, out var playerSprite))
|
||||||
{
|
{
|
||||||
var fadeQuery = GetEntityQuery<SpriteFadeComponent>();
|
|
||||||
var mapPos = _transform.GetMapCoordinates(_playerManager.LocalEntity!.Value, xform: playerXform);
|
var mapPos = _transform.GetMapCoordinates(_playerManager.LocalEntity!.Value, xform: playerXform);
|
||||||
|
|
||||||
// Also want to handle large entities even if they may not be clickable.
|
// Also want to handle large entities even if they may not be clickable.
|
||||||
foreach (var ent in state.GetClickableEntities(mapPos))
|
foreach (var ent in state.GetClickableEntities(mapPos))
|
||||||
{
|
{
|
||||||
if (ent == player ||
|
if (ent == player ||
|
||||||
!fadeQuery.HasComponent(ent) ||
|
!_fadeQuery.HasComponent(ent) ||
|
||||||
!spriteQuery.TryGetComponent(ent, out var sprite) ||
|
!_spriteQuery.TryGetComponent(ent, out var sprite) ||
|
||||||
sprite.DrawDepth < playerSprite.DrawDepth)
|
sprite.DrawDepth < playerSprite.DrawDepth)
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!TryComp<FadingSpriteComponent>(ent, out var fading))
|
if (!_fadingQuery.TryComp(ent, out var fading))
|
||||||
{
|
{
|
||||||
fading = AddComp<FadingSpriteComponent>(ent);
|
fading = AddComp<FadingSpriteComponent>(ent);
|
||||||
fading.OriginalAlpha = sprite.Color.A;
|
fading.OriginalAlpha = sprite.Color.A;
|
||||||
@@ -85,7 +92,7 @@ public sealed class SpriteFadeSystem : EntitySystem
|
|||||||
if (_comps.Contains(comp))
|
if (_comps.Contains(comp))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (!spriteQuery.TryGetComponent(uid, out var sprite))
|
if (!_spriteQuery.TryGetComponent(uid, out var sprite))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
var newColor = Math.Min(sprite.Color.A + change, comp.OriginalAlpha);
|
var newColor = Math.Min(sprite.Color.A + change, comp.OriginalAlpha);
|
||||||
|
|||||||
Reference in New Issue
Block a user