New unit death, wreck and creation noises
This commit is contained in:
@@ -184,6 +184,7 @@ public class AssetsProcess extends BaseProcessor{
|
||||
|
||||
if(classname.equals("Sounds")){
|
||||
type.addField(FieldSpec.builder(ClassName.bestGuess(rtype), "none", Modifier.STATIC, Modifier.PUBLIC).initializer("new " + rtype + "()").build());
|
||||
type.addField(FieldSpec.builder(ClassName.bestGuess(rtype), "unset", Modifier.STATIC, Modifier.PUBLIC).initializer("new " + rtype + "()").build());
|
||||
}
|
||||
|
||||
type.addMethod(loadBegin.build());
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -6253,6 +6253,7 @@ public class Blocks{
|
||||
consumePower(13f);
|
||||
consumeItems(with(Items.silicon, 850, Items.titanium, 750, Items.plastanium, 650));
|
||||
consumeLiquid(Liquids.cryofluid, 1f);
|
||||
createSound = Sounds.unitCreateBig;
|
||||
|
||||
constructTime = 60f * 60f * 1.5f;
|
||||
liquidCapacity = 60f;
|
||||
@@ -6278,6 +6279,7 @@ public class Blocks{
|
||||
|
||||
constructTime = 60f * 60f * 4;
|
||||
liquidCapacity = 180f;
|
||||
createSound = Sounds.unitCreateBig;
|
||||
|
||||
upgrades.addAll(
|
||||
new UnitType[]{UnitTypes.antumbra, UnitTypes.eclipse},
|
||||
|
||||
@@ -1037,6 +1037,7 @@ public class UnitTypes{
|
||||
omniMovement = false;
|
||||
rotateSpeed = 5f;
|
||||
circleTargetRadius = 60f;
|
||||
wreckSoundVolume = 0.7f;
|
||||
|
||||
weapons.add(new Weapon(){{
|
||||
y = 1f;
|
||||
@@ -1323,6 +1324,7 @@ public class UnitTypes{
|
||||
range = 50f;
|
||||
isEnemy = false;
|
||||
controlSelectGlobal = false;
|
||||
wreckSoundVolume = deathSoundVolume = 0.7f;
|
||||
|
||||
ammoType = new PowerAmmoType(500);
|
||||
|
||||
@@ -1348,6 +1350,7 @@ public class UnitTypes{
|
||||
ammoType = new PowerAmmoType(900);
|
||||
mineTier = 2;
|
||||
mineSpeed = 3.5f;
|
||||
wreckSoundVolume = 0.9f;
|
||||
|
||||
abilities.add(new RepairFieldAbility(5f, 60f * 8, 50f));
|
||||
|
||||
@@ -2445,6 +2448,8 @@ public class UnitTypes{
|
||||
engineOffset = 6f;
|
||||
hitSize = 8f;
|
||||
alwaysUnlocked = true;
|
||||
wreckSoundVolume = 0.8f;
|
||||
deathSoundVolume = 0.7f;
|
||||
|
||||
weapons.add(new Weapon("small-basic-weapon"){{
|
||||
reload = 17f;
|
||||
|
||||
@@ -854,7 +854,7 @@ abstract class UnitComp implements Healthc, Physicsc, Hitboxc, Statusc, Teamc, I
|
||||
Effect.scorch(x, y, (int)(hitSize / 5));
|
||||
}
|
||||
Effect.shake(shake, shake, this);
|
||||
type.deathSound.at(this);
|
||||
type.deathSound.at(this, 1f, type.deathSoundVolume);
|
||||
|
||||
Events.fire(new UnitDestroyEvent(self()));
|
||||
|
||||
@@ -935,6 +935,8 @@ abstract class UnitComp implements Healthc, Physicsc, Hitboxc, Statusc, Teamc, I
|
||||
//don't waste time when the unit is already on the ground, just destroy it
|
||||
if(!type.flying || !type.createWreck){
|
||||
destroy();
|
||||
}else{
|
||||
type.wreckSound.at(this, 1f, type.wreckSoundVolume);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -380,7 +380,7 @@ public class AIController implements UnitController{
|
||||
if(arrive && length > 0){
|
||||
Tmp.v3.set(-unit.vel.x / unit.type.accel * 2f, -unit.vel.y / unit.type.accel * 2f).add((target.getX() - unit.x), (target.getY() - unit.y));
|
||||
|
||||
if(unit.type.omniMovement){
|
||||
if(unit.type.omniMovement || unit.type.rotateMoveFirst){
|
||||
vec.add(Tmp.v3).limit(speed * length);
|
||||
}else{
|
||||
//directly move the unit to prevent a backwards movement vector from messing things up
|
||||
|
||||
@@ -295,7 +295,13 @@ public class UnitType extends UnlockableContent implements Senseable{
|
||||
/** override for unit shield colour. */
|
||||
public @Nullable Color shieldColor;
|
||||
/** sound played when this unit explodes (*not* when it is shot down) */
|
||||
public Sound deathSound = Sounds.bang;
|
||||
public Sound deathSound = Sounds.unset;
|
||||
/** volume of death sound */
|
||||
public float deathSoundVolume = 1f;
|
||||
/** sound played when the unit wreck is shot down */
|
||||
public Sound wreckSound = Sounds.unset;
|
||||
/** volume of wreck falling sound */
|
||||
public float wreckSoundVolume = 1f;
|
||||
/** sound played on loop when this unit is around. */
|
||||
public Sound loopSound = Sounds.none;
|
||||
/** volume of loop sound */
|
||||
@@ -897,6 +903,17 @@ public class UnitType extends UnlockableContent implements Senseable{
|
||||
envEnabled |= Env.space;
|
||||
}
|
||||
|
||||
if(deathSound == Sounds.unset){
|
||||
deathSound =
|
||||
hitSize < 12f ? Sounds.unitExplode1 :
|
||||
hitSize < 22f ? Sounds.unitExplode2 :
|
||||
Sounds.unitExplode3;
|
||||
}
|
||||
|
||||
if(wreckSound == Sounds.unset){
|
||||
wreckSound = hitSize >= 22f ? Sounds.wreckFallBig : Sounds.wreckFall;
|
||||
}
|
||||
|
||||
if(lightRadius == -1){
|
||||
lightRadius = Math.max(60f, hitSize * 2.3f);
|
||||
}
|
||||
|
||||
@@ -9,7 +9,7 @@ import mindustry.graphics.*;
|
||||
|
||||
public class PayloadVoid extends PayloadBlock{
|
||||
public Effect incinerateEffect = Fx.blastExplosion;
|
||||
public Sound incinerateSound = Sounds.bang;
|
||||
public Sound incinerateSound = Sounds.unitExplode1;
|
||||
|
||||
public PayloadVoid(String name){
|
||||
super(name);
|
||||
|
||||
@@ -3,6 +3,7 @@ package mindustry.world.blocks.units;
|
||||
import arc.*;
|
||||
import arc.Graphics.*;
|
||||
import arc.Graphics.Cursor.*;
|
||||
import arc.audio.*;
|
||||
import arc.graphics.g2d.*;
|
||||
import arc.math.*;
|
||||
import arc.math.geom.*;
|
||||
@@ -34,6 +35,9 @@ public class Reconstructor extends UnitBlock{
|
||||
public Seq<UnitType[]> upgrades = new Seq<>();
|
||||
public int[] capacities = {};
|
||||
|
||||
public Sound createSound = Sounds.unitCreate;
|
||||
public float createSoundVolume = 1f;
|
||||
|
||||
public Reconstructor(String name){
|
||||
super(name);
|
||||
regionRotated1 = 1;
|
||||
@@ -324,6 +328,7 @@ public class Reconstructor extends UnitBlock{
|
||||
payload.unit.command().command(command == null && payload.unit.type.defaultCommand != null ? payload.unit.type.defaultCommand : command);
|
||||
}
|
||||
|
||||
createSound.at(this, 1f + Mathf.range(0.06f), createSoundVolume);
|
||||
progress %= 1f;
|
||||
Effect.shake(2f, 3f, this);
|
||||
Fx.producesmoke.at(this);
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package mindustry.world.blocks.units;
|
||||
|
||||
import arc.*;
|
||||
import arc.audio.*;
|
||||
import arc.graphics.*;
|
||||
import arc.graphics.g2d.*;
|
||||
import arc.math.*;
|
||||
@@ -45,6 +46,9 @@ public class UnitAssembler extends PayloadBlock{
|
||||
|
||||
public Seq<AssemblerUnitPlan> plans = new Seq<>(4);
|
||||
|
||||
public Sound createSound = Sounds.unitCreateBig;
|
||||
public float createSoundVolume = 1f;
|
||||
|
||||
protected @Nullable ConsumePayloadDynamic consPayload;
|
||||
protected @Nullable ConsumeItemDynamic consItem;
|
||||
|
||||
@@ -60,6 +64,8 @@ public class UnitAssembler extends PayloadBlock{
|
||||
group = BlockGroup.units;
|
||||
commandable = true;
|
||||
quickRotate = false;
|
||||
ambientSound = Sounds.respawning;
|
||||
ambientSoundVolume = 0.13f;
|
||||
}
|
||||
|
||||
public Rect getRect(Rect rect, float x, float y, int rotation){
|
||||
@@ -536,8 +542,10 @@ public class UnitAssembler extends PayloadBlock{
|
||||
Units.notifyUnitSpawn(unit);
|
||||
}
|
||||
|
||||
createSound.at(spawn.x, spawn.y, 1f + Mathf.range(0.06f), createSoundVolume);
|
||||
|
||||
progress = 0f;
|
||||
Fx.unitAssemble.at(spawn.x, spawn.y, 0f, plan.unit);
|
||||
Fx.unitAssemble.at(spawn.x, spawn.y, rotdeg() - 90f, plan.unit);
|
||||
blocks.clear();
|
||||
}
|
||||
|
||||
@@ -662,6 +670,7 @@ public class UnitAssembler extends PayloadBlock{
|
||||
float rot = payload.angleTo(spawn);
|
||||
Fx.shootPayloadDriver.at(payload.x(), payload.y(), rot);
|
||||
Fx.payloadDeposit.at(payload.x(), payload.y(), rot, new YeetData(spawn.cpy(), payload.content()));
|
||||
Sounds.shootPayload.at(x, y, 1f + Mathf.range(0.1f), 1f);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package mindustry.world.blocks.units;
|
||||
|
||||
import arc.*;
|
||||
import arc.audio.*;
|
||||
import arc.graphics.*;
|
||||
import arc.graphics.g2d.*;
|
||||
import arc.math.*;
|
||||
@@ -34,6 +35,8 @@ public class UnitFactory extends UnitBlock{
|
||||
public int[] capacities = {};
|
||||
|
||||
public Seq<UnitPlan> plans = new Seq<>(4);
|
||||
public Sound createSound = Sounds.unitCreate;
|
||||
public float createSoundVolume = 1f;
|
||||
|
||||
public UnitFactory(String name){
|
||||
super(name);
|
||||
@@ -417,6 +420,7 @@ public class UnitFactory extends UnitBlock{
|
||||
unit.command().command(command == null && unit.type.defaultCommand != null ? unit.type.defaultCommand : command);
|
||||
}
|
||||
|
||||
createSound.at(this, 1f + Mathf.range(0.06f), createSoundVolume);
|
||||
payload = new UnitPayload(unit);
|
||||
payVector.setZero();
|
||||
consume();
|
||||
|
||||
Reference in New Issue
Block a user