diff options
author | Kae <80987908+Novaenia@users.noreply.github.com> | 2025-03-23 12:48:29 +1100 |
---|---|---|
committer | Kae <80987908+Novaenia@users.noreply.github.com> | 2025-03-23 12:48:29 +1100 |
commit | cbd6409f6d1fb5e0bb531c8d306fbf3e19c8218f (patch) | |
tree | e44c15dc1cb63b18685f8093ea0b2e72c4ab2d4e | |
parent | 3d712deb0ac1eb88bad71147baa7341e0e628026 (diff) |
swap indicator blinks opposite to collision indicator
(also losslessly compressed the png)
-rw-r--r-- | assets/opensb/interface/building/blockswap.png | bin | 147 -> 122 bytes | |||
-rw-r--r-- | source/game/items/StarMaterialItem.cpp | 10 |
2 files changed, 8 insertions, 2 deletions
diff --git a/assets/opensb/interface/building/blockswap.png b/assets/opensb/interface/building/blockswap.png Binary files differindex 83f49b4..5345192 100644 --- a/assets/opensb/interface/building/blockswap.png +++ b/assets/opensb/interface/building/blockswap.png diff --git a/source/game/items/StarMaterialItem.cpp b/source/game/items/StarMaterialItem.cpp index 2f3aece..fd32983 100644 --- a/source/game/items/StarMaterialItem.cpp +++ b/source/game/items/StarMaterialItem.cpp @@ -132,9 +132,13 @@ void MaterialItem::update(float dt, FireMode fireMode, bool shifting, HashSet<Mo void MaterialItem::render(RenderCallback* renderCallback, EntityRenderLayer) { if (m_blockSwap || m_collisionOverride != TileCollisionOverride::None) { + float pulse = (float)sin(2 * Constants::pi * 4.0 * Time::monotonicTime()); float pulseLevel = 1.f - 0.3f * 0.5f * ((float)sin(2 * Constants::pi * 4.0 * Time::monotonicTime()) + 1.f); + float pulseA = 0.85 - pulse * 0.15f; + float pulseB = 0.85 + pulse * 0.15f; Color color = owner()->favoriteColor().mix(Color::White); - color.setAlphaF(color.alphaF() * pulseLevel * 0.95f); + float alpha = color.alphaF(); + color.setAlphaF(alpha * pulseA * 0.95f); auto addIndicator = [&](String const& path) { Vec2F basePosition = Vec2F(0.5f, 0.5f); auto indicator = Drawable::makeImage(path, 1.0f / TilePixels, true, basePosition); @@ -147,9 +151,11 @@ void MaterialItem::render(RenderCallback* renderCallback, EntityRenderLayer) { }; if (m_blockSwap) { + auto prev = color; color.hueShift(0.167f); + color.setAlphaF(alpha * pulseB * 0.95f); addIndicator("/interface/building/blockswap.png"); - color.hueShift(-0.167f); + color = prev; } if (m_collisionOverride == TileCollisionOverride::Empty) |