From f231849a42c1a44dc9f9794ba0c515d2cf75d6af Mon Sep 17 00:00:00 2001 From: Anuken Date: Thu, 7 Jan 2021 10:08:28 -0500 Subject: [PATCH] UnitCreateEvent / UnitDeployEvent split --- core/src/mindustry/game/EventType.java | 14 +++++++++++++- .../world/blocks/payloads/UnitPayload.java | 3 +++ .../world/blocks/units/Reconstructor.java | 2 +- .../mindustry/world/blocks/units/UnitBlock.java | 15 --------------- .../mindustry/world/blocks/units/UnitFactory.java | 2 ++ 5 files changed, 19 insertions(+), 17 deletions(-) diff --git a/core/src/mindustry/game/EventType.java b/core/src/mindustry/game/EventType.java index 3efe48932e..405398c370 100644 --- a/core/src/mindustry/game/EventType.java +++ b/core/src/mindustry/game/EventType.java @@ -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; } } diff --git a/core/src/mindustry/world/blocks/payloads/UnitPayload.java b/core/src/mindustry/world/blocks/payloads/UnitPayload.java index c02ca68f5d..cb04b5f36d 100644 --- a/core/src/mindustry/world/blocks/payloads/UnitPayload.java +++ b/core/src/mindustry/world/blocks/payloads/UnitPayload.java @@ -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; } diff --git a/core/src/mindustry/world/blocks/units/Reconstructor.java b/core/src/mindustry/world/blocks/units/Reconstructor.java index 3f65908068..849e999059 100644 --- a/core/src/mindustry/world/blocks/units/Reconstructor.java +++ b/core/src/mindustry/world/blocks/units/Reconstructor.java @@ -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)); } } } diff --git a/core/src/mindustry/world/blocks/units/UnitBlock.java b/core/src/mindustry/world/blocks/units/UnitBlock.java index 5de6fd135b..ac38d3452f 100644 --- a/core/src/mindustry/world/blocks/units/UnitBlock.java +++ b/core/src/mindustry/world/blocks/units/UnitBlock.java @@ -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; } diff --git a/core/src/mindustry/world/blocks/units/UnitFactory.java b/core/src/mindustry/world/blocks/units/UnitFactory.java index 1a257d9565..9f62c198e6 100644 --- a/core/src/mindustry/world/blocks/units/UnitFactory.java +++ b/core/src/mindustry/world/blocks/units/UnitFactory.java @@ -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);