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

View File

@@ -58,6 +58,7 @@ abstract class PayloadComp implements Posc, Rotc, Hitboxc, Unitc{
} }
void pickup(Building tile){ void pickup(Building tile){
tile.pickedUp();
tile.tile.remove(); tile.tile.remove();
payloads.add(new BuildPayload(tile)); payloads.add(new BuildPayload(tile));
Fx.unitPickup.at(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 if(tile != null && tile.team == unit.team
&& unit.within(tile, tilesize * tile.block.size * 1.2f + tilesize * 5f)){ && 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); 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(); Unit unit = player.unit();
if(!(unit instanceof Payloadc pay)) return; 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){ if(target != null){
Call.requestUnitPayload(player, target); Call.requestUnitPayload(player, target);
}else{ }else{

View File

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