mirror of
https://github.com/curioustorvald/Terrarum.git
synced 2026-03-07 12:21:52 +09:00
jukebox: lamp for play mech chamber
This commit is contained in:
BIN
assets/mods/basegame/sprites/fixtures/jukebox_illum.tga
LFS
Normal file
BIN
assets/mods/basegame/sprites/fixtures/jukebox_illum.tga
LFS
Normal file
Binary file not shown.
BIN
assets/mods/basegame/sprites/fixtures/jukebox_innerlamp.tga
LFS
Normal file
BIN
assets/mods/basegame/sprites/fixtures/jukebox_innerlamp.tga
LFS
Normal file
Binary file not shown.
@@ -35,6 +35,7 @@ object SoftClp : TerrarumAudioFilter() {
|
||||
* @return -0.5..0.5
|
||||
*/
|
||||
private fun clipfun0(x0: Double): Double {
|
||||
// val p = 0.277777 // knee of around -1.94dB
|
||||
val p = 0.44444 // knee of around -6.02dB
|
||||
val p1 = sqrt(1.0 - 2.0 * p)
|
||||
|
||||
|
||||
@@ -1,6 +1,12 @@
|
||||
package net.torvald.terrarum.modulebasegame.gameactors
|
||||
|
||||
import com.badlogic.gdx.Gdx
|
||||
import com.badlogic.gdx.graphics.Color
|
||||
import com.badlogic.gdx.graphics.Texture
|
||||
import com.badlogic.gdx.graphics.g2d.SpriteBatch
|
||||
import com.badlogic.gdx.graphics.g2d.TextureRegion
|
||||
import com.jme3.math.FastMath
|
||||
import net.torvald.spriteanimation.SheetSpriteAnimation
|
||||
import net.torvald.terrarum.App.printdbg
|
||||
import net.torvald.terrarum.INGAME
|
||||
import net.torvald.terrarum.ModMgr
|
||||
@@ -9,6 +15,8 @@ import net.torvald.terrarum.audio.AudioMixer
|
||||
import net.torvald.terrarum.audio.AudioMixer.DEFAULT_FADEOUT_LEN
|
||||
import net.torvald.terrarum.audio.dsp.Convolv
|
||||
import net.torvald.terrarum.audio.dsp.NullFilter
|
||||
import net.torvald.terrarum.blendNormalStraightAlpha
|
||||
import net.torvald.terrarum.blendScreen
|
||||
import net.torvald.terrarum.gameactors.AVKey
|
||||
import net.torvald.terrarum.langpack.Lang
|
||||
import net.torvald.terrarum.modulebasegame.MusicContainer
|
||||
@@ -39,6 +47,8 @@ class FixtureJukebox : Electric {
|
||||
}
|
||||
}
|
||||
|
||||
@Transient private val backLamp: SheetSpriteAnimation
|
||||
|
||||
init {
|
||||
val itemImage = FixtureItemBase.getItemImageFromSingleImage("basegame", "sprites/fixtures/jukebox.tga")
|
||||
|
||||
@@ -53,6 +63,12 @@ class FixtureJukebox : Electric {
|
||||
|
||||
setWireSinkAt(0, 2, "appliance_power")
|
||||
setWireConsumptionAt(0, 2, Vector2(350.0, 0.0))
|
||||
|
||||
val backLampTex = Texture(ModMgr.getGdxFile("basegame", "sprites/fixtures/jukebox_innerlamp.tga"))
|
||||
backLamp = SheetSpriteAnimation(this).also {
|
||||
it.setSpriteImage(TextureRegionPack(backLampTex, TILE_SIZE * 2, TILE_SIZE * 3))
|
||||
it.setRowsAndFrames(1, 1)
|
||||
}
|
||||
}
|
||||
|
||||
private var waitAkku = 0f
|
||||
@@ -88,6 +104,24 @@ class FixtureJukebox : Electric {
|
||||
}
|
||||
}
|
||||
|
||||
@Transient private var lampDecay = 0f
|
||||
|
||||
override fun drawBody(frameDelta: Float, batch: SpriteBatch) {
|
||||
blendNormalStraightAlpha(batch)
|
||||
super.drawBody(frameDelta, batch)
|
||||
|
||||
if (isVisible && musicNowPlaying != null) {
|
||||
val vol0 = (musicTracks[musicNowPlaying]?.processor?.maxSigLevel?.average() ?: 0.0).toFloat()
|
||||
val vol = FastMath.interpolateLinear(0.8f, vol0, lampDecay)
|
||||
|
||||
blendScreen(batch)
|
||||
backLamp.colourFilter = Color(0f, vol.coerceIn(0f, 1f), 0f, 1f)
|
||||
drawSpriteInGoodPosition(frameDelta, backLamp, batch)
|
||||
|
||||
lampDecay = vol
|
||||
}
|
||||
}
|
||||
|
||||
private fun forceStop() {
|
||||
musicNowPlaying?.let {
|
||||
stopAudio(it)
|
||||
|
||||
Binary file not shown.
Reference in New Issue
Block a user