Payload tweaks

This commit is contained in:
Anuken
2020-12-16 13:35:55 -05:00
parent d0cba1aff2
commit 3db04da20a
4 changed files with 25 additions and 10 deletions

View File

@@ -1154,7 +1154,6 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc,
return false;
}
public float handleDamage(float amount){
return amount;
}
@@ -1175,6 +1174,10 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc,
return true;
}
public void pickedUp(){
}
public void removeFromProximity(){
onProximityRemoved();
tmpTiles.clear();

View File

@@ -58,6 +58,7 @@ abstract class PayloadComp implements Posc, Rotc, Hitboxc, Unitc{
}
void pickup(Building tile){
tile.pickedUp();
tile.tile.remove();
payloads.add(new BuildPayload(tile));
Fx.unitPickup.at(tile);

View File

@@ -195,14 +195,14 @@ public abstract class InputHandler implements InputProcessor, GestureListener{
if(tile != null && tile.team == unit.team
&& unit.within(tile, tilesize * tile.block.size * 1.2f + tilesize * 5f)){
//pick up block directly
if(tile.block.buildVisibility != BuildVisibility.hidden && tile.canPickup() && pay.canPickup(tile)){
//pick up block's payload
Payload current = tile.getPayload();
if(current != null && pay.canPickupPayload(current)){
Call.pickedBuildPayload(unit, tile, false);
//pick up whole building directly
}else if(tile.block.buildVisibility != BuildVisibility.hidden && tile.canPickup() && pay.canPickup(tile)){
Call.pickedBuildPayload(unit, tile, true);
}else{ //pick up block payload
Payload current = tile.getPayload();
if(current != null && pay.canPickupPayload(current)){
Call.pickedBuildPayload(unit, tile, false);
}
}
}
}
@@ -450,7 +450,7 @@ public abstract class InputHandler implements InputProcessor, GestureListener{
Unit unit = player.unit();
if(!(unit instanceof Payloadc pay)) return;
Unit target = Units.closest(player.team(), pay.x(), pay.y(), unit.type.hitSize * 2.5f, u -> u.isAI() && u.isGrounded() && pay.canPickup(u) && u.within(unit, u.hitSize + unit.hitSize * 1.2f));
Unit target = Units.closest(player.team(), pay.x(), pay.y(), unit.type.hitSize * 2f, u -> u.isAI() && u.isGrounded() && pay.canPickup(u) && u.within(unit, u.hitSize + unit.hitSize));
if(target != null){
Call.requestUnitPayload(player, target);
}else{

View File

@@ -55,6 +55,7 @@ public class PayloadAcceptor extends Block{
public @Nullable T payload;
public Vec2 payVector = new Vec2();
public float payRotation;
public boolean carried;
@Override
public boolean acceptPayload(Building source, Payload payload){
@@ -75,6 +76,16 @@ public class PayloadAcceptor extends Block{
return payload;
}
@Override
public void pickedUp(){
carried = true;
}
@Override
public void drawTeamTop(){
carried = false;
}
@Override
public Payload takePayload(){
T t = payload;
@@ -85,7 +96,7 @@ public class PayloadAcceptor extends Block{
@Override
public void onRemoved(){
super.onRemoved();
if(payload != null) payload.dump();
if(payload != null && !carried) payload.dump();
}
public boolean blends(int direction){