116 lines
3.1 KiB
Java
116 lines
3.1 KiB
Java
package mindustry.audio;
|
|
|
|
import arc.*;
|
|
import arc.audio.*;
|
|
import arc.struct.*;
|
|
import mindustry.*;
|
|
|
|
import static mindustry.gen.Sounds.*;
|
|
|
|
/** Sets up priorities and groups for various sounds. */
|
|
public class SoundPriority{
|
|
static int lastGroup = 1;
|
|
|
|
public static void init(){
|
|
//launching should not get interrupted by the loading screen
|
|
coreLaunch.setBus(Vars.control.sound.uiBus);
|
|
|
|
max(7, beamPlasma, shootMeltdown, beamMeltdown);
|
|
|
|
//priority 3: absolutely do not interrupt these
|
|
set(
|
|
3f,
|
|
acceleratorLaunch, acceleratorCharge, coreLand, coreLaunch
|
|
);
|
|
|
|
//priority 2: long weapon loops and big explosions
|
|
set(
|
|
2f,
|
|
beamMeltdown,
|
|
beamLustre,
|
|
beamPlasma,
|
|
explosionReactor,
|
|
explosionReactor2,
|
|
explosionReactorNeoplasm,
|
|
explosionCore,
|
|
blockExplodeElectricBig, blockExplodeExplosive, blockExplodeExplosiveAlt
|
|
);
|
|
|
|
//priority 1.5: big weapon sounds, not loops
|
|
set(
|
|
1.5f,
|
|
shootMeltdown,
|
|
shootSublimate,
|
|
shootForeshadow,
|
|
shootConquer,
|
|
shootCorvus,
|
|
chargeCorvus,
|
|
chargeVela,
|
|
chargeLancer,
|
|
shootReign,
|
|
shootEclipse,
|
|
shootArtillerySapBig,
|
|
shootToxopidShotgun,
|
|
beamPlasmaSmall,
|
|
shootNavanax,
|
|
explosionNavanax
|
|
);
|
|
|
|
//priority 1: ambient noises
|
|
set(
|
|
1f,
|
|
loopConveyor,
|
|
loopSmelter,
|
|
loopDrill,
|
|
loopExtract,
|
|
loopFlux,
|
|
loopHum,
|
|
loopBio,
|
|
loopTech,
|
|
loopUnitBuilding
|
|
);
|
|
|
|
//very loud
|
|
shootLancer.setMaxConcurrent(5);
|
|
|
|
sameGroup(shootFlame, shootFlamePlasma);
|
|
sameGroup(shootMissile, shootMissileShort, shootMissilePlasmaShort);
|
|
sameGroup(shootArc, shootPulsar);
|
|
|
|
for(var sound : Core.assets.getAll(Sound.class, new Seq<>())){
|
|
sound.setMinConcurrentInterrupt(Math.min(0.25f, sound.getLength() * 0.5f));
|
|
}
|
|
|
|
mechStepSmall.setMinConcurrentInterrupt(0.5f);
|
|
mechStep.setMinConcurrentInterrupt(0.5f);
|
|
walkerStep.setMinConcurrentInterrupt(0.6f);
|
|
mechStepHeavy.setMinConcurrentInterrupt(0.6f);
|
|
|
|
shieldHit.setMaxConcurrent(4);
|
|
|
|
max(5, mechStep, mechStepHeavy, walkerStep, walkerStepSmall, walkerStepTiny);
|
|
|
|
//repair sounds are lower priority and generally not important
|
|
set(-1f, blockHeal, healWave);
|
|
|
|
//step sounds are low priority
|
|
set(-2f, mechStep, mechStepHeavy, walkerStep, walkerStepSmall, walkerStepTiny, mechStepSmall);
|
|
|
|
explosionCore.setFalloffOffset(100f);
|
|
blockExplodeElectricBig.setFalloffOffset(70f);
|
|
}
|
|
|
|
static void max(int max, Sound... sounds){
|
|
for(var s : sounds) s.setMaxConcurrent(max);
|
|
}
|
|
|
|
static void sameGroup(Sound... sounds){
|
|
int id = lastGroup ++;
|
|
for(var s : sounds) s.setConcurrentGroup(id);
|
|
}
|
|
|
|
static void set(float value, Sound... sounds){
|
|
for(var s : sounds) s.setPriority(value);
|
|
}
|
|
}
|