Payload tweaks
This commit is contained in:
@@ -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();
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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{
|
||||
|
||||
@@ -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){
|
||||
|
||||
Reference in New Issue
Block a user