UnitCreateEvent / UnitDeployEvent split

This commit is contained in:
Anuken 2021-01-07 10:08:28 -05:00
parent c420ad1a16
commit f231849a42
5 changed files with 19 additions and 17 deletions

View File

@ -351,10 +351,22 @@ public class EventType{
}
}
/** Called when a unit is created in a reconstructor or factory. */
public static class UnitCreateEvent{
public final Unit unit;
public final Building spawner;
public UnitCreateEvent(Unit unit){
public UnitCreateEvent(Unit unit, Building spawner){
this.unit = unit;
this.spawner = spawner;
}
}
/** Called when a unit is dumped from any payload block. */
public static class UnitUnloadEvent{
public final Unit unit;
public UnitUnloadEvent(Unit unit){
this.unit = unit;
}
}

View File

@ -1,5 +1,6 @@
package mindustry.world.blocks.payloads;
import arc.*;
import arc.graphics.*;
import arc.graphics.g2d.*;
import arc.math.*;
@ -9,6 +10,7 @@ import arc.util.io.*;
import mindustry.*;
import mindustry.entities.EntityCollisions.*;
import mindustry.entities.*;
import mindustry.game.EventType.*;
import mindustry.gen.*;
import mindustry.graphics.*;
import mindustry.ui.*;
@ -67,6 +69,7 @@ public class UnitPayload implements Payload{
//prevents stacking
unit.vel.add(Mathf.range(0.5f), Mathf.range(0.5f));
unit.add();
Events.fire(new UnitUnloadEvent(unit));
return true;
}

View File

@ -179,7 +179,7 @@ public class Reconstructor extends UnitBlock{
Effect.shake(2f, 3f, this);
Fx.producesmoke.at(this);
consume();
Events.fire(new UnitCreateEvent(payload.unit));
Events.fire(new UnitCreateEvent(payload.unit, this));
}
}
}

View File

@ -36,21 +36,6 @@ public class UnitBlock extends PayloadAcceptor{
public void spawned(){
progress = 0f;
Tmp.v1.trns(rotdeg(), size * tilesize/2f);
Fx.smeltsmoke.at(x + Tmp.v1.x, y + Tmp.v1.y);
if(!net.client() && payload != null){
Unit unit = payload.unit;
unit.set(x, y);
unit.rotation(rotdeg());
unit.vel().trns(rotdeg(), payloadSpeed * 2f).add(Mathf.range(0.3f), Mathf.range(0.3f));
unit.trns(Tmp.v1.trns(rotdeg(), size * tilesize/2f));
unit.trns(unit.vel());
unit.add();
Events.fire(new UnitCreateEvent(unit));
}
payload = null;
}

View File

@ -12,6 +12,7 @@ import arc.util.io.*;
import mindustry.*;
import mindustry.entities.*;
import mindustry.entities.units.*;
import mindustry.game.EventType.*;
import mindustry.gen.*;
import mindustry.graphics.*;
import mindustry.logic.*;
@ -228,6 +229,7 @@ public class UnitFactory extends UnitBlock{
payload = new UnitPayload(plan.unit.create(team));
payVector.setZero();
consume();
Events.fire(new UnitCreateEvent(payload.unit, this));
}
progress = Mathf.clamp(progress, 0, plan.time);