SoundEffect - An Effect that produces sound when created. (#9178)

* SoundEffect

* Add to ClassMap

* Loading via prov does not work

* MEEP, that's not how you random
This commit is contained in:
MEEPofFaith 2023-10-19 10:55:04 -07:00 committed by GitHub
parent 34782e943c
commit 2522b16738
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 39 additions and 0 deletions

View File

@ -0,0 +1,38 @@
package mindustry.entities.effect;
import arc.*;
import arc.audio.*;
import arc.func.*;
import arc.graphics.*;
import arc.math.*;
import arc.struct.*;
import arc.util.*;
import mindustry.entities.*;
import mindustry.game.EventType.*;
import mindustry.gen.*;
/** Plays a sound effect when created and simultaneously renders an effect. */
public class SoundEffect extends Effect{
public Sound sound = Sounds.none;
public float minPitch = 0.8f;
public float maxPitch = 1.2f;
public float minVolume = 1f;
public float maxVolume = 1f;
public Effect effect;
public SoundEffect(){
}
public SoundEffect(Sound sound, Effect effect){
this.sound = sound;
this.effect = effect;
}
@Override
public void create(float x, float y, float rotation, Color color, Object data){
if(!shouldCreate()) return;
sound.at(x, y, Mathf.random(minPitch, maxPitch), Mathf.random(minVolume, maxVolume));
effect.create(x, y, rotation, color, data);
}
}

View File

@ -66,6 +66,7 @@ public class ClassMap{
classes.put("ParticleEffect", mindustry.entities.effect.ParticleEffect.class);
classes.put("RadialEffect", mindustry.entities.effect.RadialEffect.class);
classes.put("SeqEffect", mindustry.entities.effect.SeqEffect.class);
classes.put("SoundEffect", mindustry.entities.effect.SoundEffect.class);
classes.put("WaveEffect", mindustry.entities.effect.WaveEffect.class);
classes.put("WrapEffect", mindustry.entities.effect.WrapEffect.class);
classes.put("DrawPart", mindustry.entities.part.DrawPart.class);