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