Beter payload updating system

This commit is contained in:
Anuken 2022-05-14 17:20:49 -04:00
parent 69a32c5ac9
commit bc65e63654
9 changed files with 23 additions and 10 deletions

View File

@ -1732,6 +1732,10 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc,
}
}
public void updatePayload(@Nullable Unit unitHolder, @Nullable Building buildingHolder){
update();
}
public void updateTile(){
}

View File

@ -56,7 +56,7 @@ abstract class PayloadComp implements Posc, Rotc, Hitboxc, Unitc{
// build.build.team = team;
//}
pay.set(x, y, rotation);
pay.update(true);
pay.update(self(), null);
}
}

View File

@ -466,6 +466,10 @@ public class UnitType extends UnlockableContent{
}
public void updatePayload(Unit unit, @Nullable Unit unitHolder, @Nullable Building buildingHolder){
}
public void landed(Unit unit){}
public void display(Unit unit, Table table){

View File

@ -2,6 +2,7 @@ package mindustry.world.blocks.payloads;
import arc.graphics.g2d.*;
import arc.math.*;
import arc.util.*;
import arc.util.io.*;
import mindustry.ctype.*;
import mindustry.game.*;
@ -43,11 +44,11 @@ public class BuildPayload implements Payload{
}
@Override
public void update(boolean inUnit){
if(inUnit && (!build.block.updateInUnits || (!state.rules.unitPayloadUpdate && !build.block.alwaysUpdateInUnits))) return;
public void update(@Nullable Unit unitHolder, @Nullable Building buildingHolder){
if(unitHolder != null && (!build.block.updateInUnits || (!state.rules.unitPayloadUpdate && !build.block.alwaysUpdateInUnits))) return;
build.tile = emptyTile;
build.update();
build.updatePayload(unitHolder, buildingHolder);
}
@Override

View File

@ -36,9 +36,8 @@ public interface Payload extends Position{
/** @return the time taken to build this payload. */
float buildTime();
/** update this payload if it is a block
* @param inUnit whether this payload is in a unit */
default void update(boolean inUnit){}
/** update this payload inside a container unit or building. either can be null. */
default void update(@Nullable Unit unitHolder, @Nullable Building buildingHolder){}
/** @return whether this payload was dumped. */
default boolean dump(){

View File

@ -146,7 +146,7 @@ public class PayloadBlock extends Block{
@Override
public void updateTile(){
if(payload != null){
payload.update(false);
payload.update(null, this);
}
}

View File

@ -128,7 +128,7 @@ public class PayloadConveyor extends Block{
if(!enabled) return;
if(item != null){
item.update(false);
item.update(null, this);
}
lastInterp = curInterp;

View File

@ -48,7 +48,7 @@ public class PayloadUnloader extends PayloadLoader{
@Override
public void updateTile(){
if(payload != null){
payload.update(false);
payload.update(null, this);
}
lastOutputPower = 0f;

View File

@ -41,6 +41,11 @@ public class UnitPayload implements Payload{
showOverlay(icon.getRegion());
}
@Override
public void update(@Nullable Unit unitHolder, @Nullable Building buildingHolder){
unit.type.updatePayload(unit, unitHolder, buildingHolder);
}
@Override
public UnlockableContent content(){
return unit.type;