Payload system rework (#2485)

This commit is contained in:
Anuken
2020-09-06 17:13:14 -04:00
parent 27d9f965be
commit 7b18389d45
7 changed files with 38 additions and 27 deletions
@@ -8,16 +8,34 @@ import mindustry.annotations.Annotations.*;
import mindustry.content.*;
import mindustry.entities.*;
import mindustry.gen.*;
import mindustry.type.*;
import mindustry.world.*;
import mindustry.world.blocks.payloads.*;
/** An entity that holds a payload. */
@Component
abstract class PayloadComp implements Posc, Rotc, Hitboxc{
abstract class PayloadComp implements Posc, Rotc, Hitboxc, Unitc{
@Import float x, y, rotation;
@Import UnitType type;
Seq<Payload> payloads = new Seq<>();
float payloadUsed(){
return payloads.sumf(Payload::size);
}
boolean canPickup(Unit unit){
return payloadUsed() + unit.hitSize <= type.payloadCapacity;
}
boolean canPickup(Building build){
return payloadUsed() + build.block.size * Vars.tilesize <= type.payloadCapacity;
}
boolean canPickupPayload(Payload pay){
return payloadUsed() + pay.size() <= type.payloadCapacity;
}
boolean hasPayload(){
return payloads.size > 0;
}