Веб-сайт самохостера Lotigara

summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKae <80987908+Novaenia@users.noreply.github.com>2025-03-23 12:48:29 +1100
committerKae <80987908+Novaenia@users.noreply.github.com>2025-03-23 12:48:29 +1100
commitcbd6409f6d1fb5e0bb531c8d306fbf3e19c8218f (patch)
treee44c15dc1cb63b18685f8093ea0b2e72c4ab2d4e
parent3d712deb0ac1eb88bad71147baa7341e0e628026 (diff)
swap indicator blinks opposite to collision indicator
(also losslessly compressed the png)
-rw-r--r--assets/opensb/interface/building/blockswap.pngbin147 -> 122 bytes
-rw-r--r--source/game/items/StarMaterialItem.cpp10
2 files changed, 8 insertions, 2 deletions
diff --git a/assets/opensb/interface/building/blockswap.png b/assets/opensb/interface/building/blockswap.png
index 83f49b4..5345192 100644
--- a/assets/opensb/interface/building/blockswap.png
+++ b/assets/opensb/interface/building/blockswap.png
Binary files differ
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)