Cleanup
This commit is contained in:
@@ -162,6 +162,8 @@ public class Block extends UnlockableContent{
|
||||
public float buildCost;
|
||||
/** Whether this block is visible and can currently be built. */
|
||||
public BuildVisibility buildVisibility = BuildVisibility.hidden;
|
||||
/** Defines when this block can be placed. */
|
||||
public BuildPlaceability buildPlaceability = BuildPlaceability.always;
|
||||
/** Multiplier for speed of building this block. */
|
||||
public float buildCostMultiplier = 1f;
|
||||
/** Whether this block has instant transfer.*/
|
||||
@@ -298,7 +300,7 @@ public class Block extends UnlockableContent{
|
||||
public void setStats(){
|
||||
stats.add(BlockStat.size, "@x@", size, size);
|
||||
stats.add(BlockStat.health, health, StatUnit.none);
|
||||
if(isBuildable()){
|
||||
if(canBeBuilt()){
|
||||
stats.add(BlockStat.buildTime, buildCost / 60, StatUnit.seconds);
|
||||
stats.add(BlockStat.buildCost, new ItemListValue(false, requirements));
|
||||
}
|
||||
@@ -465,6 +467,15 @@ public class Block extends UnlockableContent{
|
||||
return buildVisibility.visible() && !isHidden();
|
||||
}
|
||||
|
||||
public boolean isPlaceable(){
|
||||
return isVisible() && buildPlaceability.placeable() && !state.rules.bannedBlocks.contains(this);
|
||||
}
|
||||
|
||||
/** @return a message detailing why this block can't be placed. */
|
||||
public String unplaceableMessage(){
|
||||
return state.rules.bannedBlocks.contains(this) ? Core.bundle.get("banned") : buildPlaceability.message();
|
||||
}
|
||||
|
||||
public boolean isFloor(){
|
||||
return this instanceof Floor;
|
||||
}
|
||||
@@ -481,7 +492,7 @@ public class Block extends UnlockableContent{
|
||||
return id == 0;
|
||||
}
|
||||
|
||||
public boolean isBuildable(){
|
||||
public boolean canBeBuilt(){
|
||||
return buildVisibility != BuildVisibility.hidden && buildVisibility != BuildVisibility.debugOnly;
|
||||
}
|
||||
|
||||
|
||||
@@ -63,11 +63,8 @@ public class Build{
|
||||
|
||||
/** Returns whether a tile can be placed at this location by this team. */
|
||||
public static boolean validPlace(Team team, int x, int y, Block type, int rotation){
|
||||
if(type == null || !type.isVisible() || type.isHidden()){
|
||||
return false;
|
||||
}
|
||||
|
||||
if(state.rules.bannedBlocks.contains(type) && !(state.rules.waves && team == state.rules.waveTeam)){
|
||||
//the wave team can build whatever they want as long as it's visible - banned blocks are not applicable
|
||||
if(type == null || (!type.isPlaceable() && !(state.rules.waves && team == state.rules.waveTeam && type.isVisible()))){
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
@@ -3,6 +3,7 @@ package mindustry.world.blocks.campaign;
|
||||
import mindustry.*;
|
||||
import mindustry.gen.*;
|
||||
import mindustry.world.*;
|
||||
import mindustry.world.meta.*;
|
||||
|
||||
import static mindustry.Vars.state;
|
||||
|
||||
@@ -15,6 +16,7 @@ public class CoreLauncher extends Block{
|
||||
hasItems = true;
|
||||
configurable = true;
|
||||
update = true;
|
||||
buildPlaceability = BuildPlaceability.sectorCaptured;
|
||||
}
|
||||
|
||||
public class CoreLauncherEntity extends TileEntity{
|
||||
|
||||
32
core/src/mindustry/world/meta/BuildPlaceability.java
Normal file
32
core/src/mindustry/world/meta/BuildPlaceability.java
Normal file
@@ -0,0 +1,32 @@
|
||||
package mindustry.world.meta;
|
||||
|
||||
import arc.*;
|
||||
import arc.func.*;
|
||||
import mindustry.*;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* Like BuildVisiblity, but defines whether a block can be *placed*, with an extra message.
|
||||
* This is like defining a conditionally banned block.
|
||||
* */
|
||||
public enum BuildPlaceability{
|
||||
always(() -> true),
|
||||
sectorCaptured(() -> Vars.state.rules.sector != null && Vars.state.rules.sector.isCaptured());
|
||||
|
||||
private final Boolp placeability;
|
||||
|
||||
BuildPlaceability(Boolp placeability){
|
||||
this.placeability = placeability;
|
||||
}
|
||||
|
||||
public boolean placeable(){
|
||||
return placeability.get();
|
||||
}
|
||||
|
||||
/** @return why this block is banned. */
|
||||
public String message(){
|
||||
return Core.bundle.get("unplaceable." + name().toLowerCase(Locale.ROOT));
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user