Payload cleanup / Reconstructor implementation

This commit is contained in:
Anuken
2022-02-26 22:49:30 -05:00
parent 966161f98a
commit 5689a55e54
33 changed files with 93 additions and 20 deletions

View File

@@ -1,11 +1,11 @@
package mindustry.world.blocks.payloads;
import arc.*;
import arc.graphics.g2d.*;
import arc.math.*;
import arc.math.geom.*;
import arc.util.*;
import arc.util.io.*;
import mindustry.annotations.Annotations.*;
import mindustry.gen.*;
import mindustry.graphics.*;
import mindustry.world.*;
@@ -16,9 +16,8 @@ import static mindustry.Vars.*;
public class PayloadBlock extends Block{
public float payloadSpeed = 0.7f, payloadRotateSpeed = 5f;
public @Load(value = "@-top", fallback = "factory-top-@size") TextureRegion topRegion;
public @Load(value = "@-out", fallback = "factory-out-@size") TextureRegion outRegion;
public @Load(value = "@-in", fallback = "factory-in-@size") TextureRegion inRegion;
public String regionSuffix = "";
public TextureRegion topRegion, outRegion, inRegion;
public PayloadBlock(String name){
super(name);
@@ -29,6 +28,15 @@ public class PayloadBlock extends Block{
envEnabled |= Env.space | Env.underwater;
}
@Override
public void load(){
super.load();
topRegion = Core.atlas.find(name + "-top", "factory-top-" + size + regionSuffix);
outRegion = Core.atlas.find(name + "-out", "factory-out-" + size + regionSuffix);
inRegion = Core.atlas.find(name + "-in", "factory-in-" + size + regionSuffix);
}
public static boolean blends(Building build, int direction){
int size = build.block.size;
int trns = build.block.size/2 + 1;
@@ -164,9 +172,9 @@ public class PayloadBlock extends Block{
updatePayload();
if(rotate){
payRotation = Angles.moveToward(payRotation, rotate ? rotdeg() : 90f, payloadRotateSpeed * edelta());
payRotation = Angles.moveToward(payRotation, rotate ? rotdeg() : 90f, payloadRotateSpeed * delta());
}
payVector.approach(Vec2.ZERO, payloadSpeed * edelta());
payVector.approach(Vec2.ZERO, payloadSpeed * delta());
return hasArrived();
}
@@ -179,7 +187,7 @@ public class PayloadBlock extends Block{
Vec2 dest = Tmp.v1.trns(rotdeg(), size * tilesize/2f);
payRotation = Angles.moveToward(payRotation, rotdeg(), payloadRotateSpeed * edelta());
payVector.approach(dest, payloadSpeed * delta());
payVector.approach(dest, payloadSpeed * edelta());
Building front = front();
boolean canDump = front == null || !front.tile().solid();