diff --git a/core/assets/sounds/block/acceleratorCharge.ogg b/core/assets/sounds/block/acceleratorCharge.ogg new file mode 100644 index 0000000000..d693261dd7 Binary files /dev/null and b/core/assets/sounds/block/acceleratorCharge.ogg differ diff --git a/core/assets/sounds/block/acceleratorConstruct.ogg b/core/assets/sounds/block/acceleratorConstruct.ogg new file mode 100644 index 0000000000..ea6061bf0c Binary files /dev/null and b/core/assets/sounds/block/acceleratorConstruct.ogg differ diff --git a/core/assets/sounds/block/acceleratorLaunch.ogg b/core/assets/sounds/block/acceleratorLaunch.ogg new file mode 100644 index 0000000000..4fe0e0122e Binary files /dev/null and b/core/assets/sounds/block/acceleratorLaunch.ogg differ diff --git a/core/assets/sounds/block/acceleratorLightning1.ogg b/core/assets/sounds/block/acceleratorLightning1.ogg new file mode 100644 index 0000000000..368b7e5261 Binary files /dev/null and b/core/assets/sounds/block/acceleratorLightning1.ogg differ diff --git a/core/assets/sounds/block/acceleratorLightning2.ogg b/core/assets/sounds/block/acceleratorLightning2.ogg new file mode 100644 index 0000000000..f4810f7813 Binary files /dev/null and b/core/assets/sounds/block/acceleratorLightning2.ogg differ diff --git a/core/src/mindustry/audio/SoundPriority.java b/core/src/mindustry/audio/SoundPriority.java index 535d1df26a..e052608b1a 100644 --- a/core/src/mindustry/audio/SoundPriority.java +++ b/core/src/mindustry/audio/SoundPriority.java @@ -13,6 +13,12 @@ public class SoundPriority{ public static void init(){ max(7, beamPlasma, shootMeltdown, beamMeltdown); + //priority 3: absolutely do not interrupt these + set( + 3f, + acceleratorLaunch, acceleratorCharge + ); + //priority 2: long weapon loops and big explosions set( 2f, diff --git a/core/src/mindustry/world/blocks/campaign/Accelerator.java b/core/src/mindustry/world/blocks/campaign/Accelerator.java index 5d76e37bde..c274d84d47 100644 --- a/core/src/mindustry/world/blocks/campaign/Accelerator.java +++ b/core/src/mindustry/world/blocks/campaign/Accelerator.java @@ -40,9 +40,12 @@ public class Accelerator extends Block{ /** Override for planets that this block can launch to. If null, the planet's launch candidates are used. */ public @Nullable Seq launchCandidates; - //TODO: launching needs audio! - public Music launchMusic = Musics.coreLaunch; + public Sound lightningSound = new RandomSound(Sounds.acceleratorLightning1, Sounds.acceleratorLightning2, Sounds.shootArc); + public float lightningSoundVolume = 0.9f; + public Sound chargeSound = Sounds.acceleratorCharge; + public Sound launchSound = Sounds.acceleratorLaunch; + public Sound constructSound = Sounds.acceleratorConstruct; public float launchDuration = 120f; public float chargeDuration = 220f; public float buildDuration = 120f; @@ -340,11 +343,14 @@ public class Accelerator extends Block{ } }); Core.scene.add(image); + chargeSound.at(this); + constructSound.at(this); Time.run(chargeDuration, () -> { Fx.coreLaunchConstruct.at(x, y, launchBlock.size); Fx.launchAccelerator.at(x, y); Effect.shake(10f, 14f, this); + launchSound.at(this); for(int i = 0; i < launchLightning; i++){ float a = Mathf.random(360f); @@ -410,6 +416,7 @@ public class Accelerator extends Block{ if(in > launchDuration){ if(Mathf.chanceDelta(lightningLaunchChance * Interp.pow3In.apply(chargeFout))){ float a = Mathf.random(360f); + lightningSound.at(this, 1f + Mathf.range(0.1f), lightningSoundVolume); Lightning.create(team, lightningColor, lightningDamage, x + Angles.trnsx(a, lightningOffset), y + Angles.trnsy(a, lightningOffset), a, Mathf.random(lightningLengthMin, lightningLengthMax)); } } diff --git a/gradle.properties b/gradle.properties index e3c461c710..24020d2b5c 100644 --- a/gradle.properties +++ b/gradle.properties @@ -26,4 +26,4 @@ org.gradle.caching=true org.gradle.internal.http.socketTimeout=100000 org.gradle.internal.http.connectionTimeout=100000 android.enableR8.fullMode=false -archash=d19597009c +archash=ce729c4fe4