Beter payload updating system
This commit is contained in:
@@ -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(){
|
public void updateTile(){
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -56,7 +56,7 @@ abstract class PayloadComp implements Posc, Rotc, Hitboxc, Unitc{
|
|||||||
// build.build.team = team;
|
// build.build.team = team;
|
||||||
//}
|
//}
|
||||||
pay.set(x, y, rotation);
|
pay.set(x, y, rotation);
|
||||||
pay.update(true);
|
pay.update(self(), null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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 landed(Unit unit){}
|
||||||
|
|
||||||
public void display(Unit unit, Table table){
|
public void display(Unit unit, Table table){
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ package mindustry.world.blocks.payloads;
|
|||||||
|
|
||||||
import arc.graphics.g2d.*;
|
import arc.graphics.g2d.*;
|
||||||
import arc.math.*;
|
import arc.math.*;
|
||||||
|
import arc.util.*;
|
||||||
import arc.util.io.*;
|
import arc.util.io.*;
|
||||||
import mindustry.ctype.*;
|
import mindustry.ctype.*;
|
||||||
import mindustry.game.*;
|
import mindustry.game.*;
|
||||||
@@ -43,11 +44,11 @@ public class BuildPayload implements Payload{
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void update(boolean inUnit){
|
public void update(@Nullable Unit unitHolder, @Nullable Building buildingHolder){
|
||||||
if(inUnit && (!build.block.updateInUnits || (!state.rules.unitPayloadUpdate && !build.block.alwaysUpdateInUnits))) return;
|
if(unitHolder != null && (!build.block.updateInUnits || (!state.rules.unitPayloadUpdate && !build.block.alwaysUpdateInUnits))) return;
|
||||||
|
|
||||||
build.tile = emptyTile;
|
build.tile = emptyTile;
|
||||||
build.update();
|
build.updatePayload(unitHolder, buildingHolder);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -36,9 +36,8 @@ public interface Payload extends Position{
|
|||||||
/** @return the time taken to build this payload. */
|
/** @return the time taken to build this payload. */
|
||||||
float buildTime();
|
float buildTime();
|
||||||
|
|
||||||
/** update this payload if it is a block
|
/** update this payload inside a container unit or building. either can be null. */
|
||||||
* @param inUnit whether this payload is in a unit */
|
default void update(@Nullable Unit unitHolder, @Nullable Building buildingHolder){}
|
||||||
default void update(boolean inUnit){}
|
|
||||||
|
|
||||||
/** @return whether this payload was dumped. */
|
/** @return whether this payload was dumped. */
|
||||||
default boolean dump(){
|
default boolean dump(){
|
||||||
|
|||||||
@@ -146,7 +146,7 @@ public class PayloadBlock extends Block{
|
|||||||
@Override
|
@Override
|
||||||
public void updateTile(){
|
public void updateTile(){
|
||||||
if(payload != null){
|
if(payload != null){
|
||||||
payload.update(false);
|
payload.update(null, this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -128,7 +128,7 @@ public class PayloadConveyor extends Block{
|
|||||||
if(!enabled) return;
|
if(!enabled) return;
|
||||||
|
|
||||||
if(item != null){
|
if(item != null){
|
||||||
item.update(false);
|
item.update(null, this);
|
||||||
}
|
}
|
||||||
|
|
||||||
lastInterp = curInterp;
|
lastInterp = curInterp;
|
||||||
|
|||||||
@@ -48,7 +48,7 @@ public class PayloadUnloader extends PayloadLoader{
|
|||||||
@Override
|
@Override
|
||||||
public void updateTile(){
|
public void updateTile(){
|
||||||
if(payload != null){
|
if(payload != null){
|
||||||
payload.update(false);
|
payload.update(null, this);
|
||||||
}
|
}
|
||||||
lastOutputPower = 0f;
|
lastOutputPower = 0f;
|
||||||
|
|
||||||
|
|||||||
@@ -41,6 +41,11 @@ public class UnitPayload implements Payload{
|
|||||||
showOverlay(icon.getRegion());
|
showOverlay(icon.getRegion());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void update(@Nullable Unit unitHolder, @Nullable Building buildingHolder){
|
||||||
|
unit.type.updatePayload(unit, unitHolder, buildingHolder);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public UnlockableContent content(){
|
public UnlockableContent content(){
|
||||||
return unit.type;
|
return unit.type;
|
||||||
|
|||||||
Reference in New Issue
Block a user