Unified stat system

This commit is contained in:
Anuken
2020-10-19 11:12:40 -04:00
parent 59e1fd1eb6
commit 2ff749bd17
101 changed files with 1815 additions and 1815 deletions

View File

@@ -42,7 +42,7 @@ public class LaunchPad extends Block{
public void setStats(){
super.setStats();
stats.add(BlockStat.launchTime, launchTime / 60f, StatUnit.seconds);
stats.add(Stat.launchTime, launchTime / 60f, StatUnit.seconds);
}
@Override

View File

@@ -61,11 +61,11 @@ public class ForceProjector extends Block{
@Override
public void setStats(){
super.setStats();
stats.add(BlockStat.shieldHealth, breakage, StatUnit.none);
stats.add(BlockStat.cooldownTime, (int) (breakage / cooldownBrokenBase / 60f), StatUnit.seconds);
stats.add(BlockStat.powerUse, basePowerDraw * 60f, StatUnit.powerSecond);
stats.add(BlockStat.boostEffect, phaseRadiusBoost / tilesize, StatUnit.blocks);
stats.add(BlockStat.boostEffect, phaseShieldBoost, StatUnit.shieldHealth);
stats.add(Stat.shieldHealth, breakage, StatUnit.none);
stats.add(Stat.cooldownTime, (int) (breakage / cooldownBrokenBase / 60f), StatUnit.seconds);
stats.add(Stat.powerUse, basePowerDraw * 60f, StatUnit.powerSecond);
stats.add(Stat.boostEffect, phaseRadiusBoost / tilesize, StatUnit.blocks);
stats.add(Stat.boostEffect, phaseShieldBoost, StatUnit.shieldHealth);
}
@Override

View File

@@ -44,11 +44,11 @@ public class MendProjector extends Block{
public void setStats(){
super.setStats();
stats.add(BlockStat.repairTime, (int)(100f / healPercent * reload / 60f), StatUnit.seconds);
stats.add(BlockStat.range, range / tilesize, StatUnit.blocks);
stats.add(Stat.repairTime, (int)(100f / healPercent * reload / 60f), StatUnit.seconds);
stats.add(Stat.range, range / tilesize, StatUnit.blocks);
stats.add(BlockStat.boostEffect, phaseRangeBoost / tilesize, StatUnit.blocks);
stats.add(BlockStat.boostEffect, (phaseBoost + healPercent) / healPercent, StatUnit.timesSpeed);
stats.add(Stat.boostEffect, phaseRangeBoost / tilesize, StatUnit.blocks);
stats.add(Stat.boostEffect, (phaseBoost + healPercent) / healPercent, StatUnit.timesSpeed);
}
@Override

View File

@@ -51,13 +51,13 @@ public class OverdriveProjector extends Block{
public void setStats(){
super.setStats();
stats.add(BlockStat.speedIncrease, (int)(100f * speedBoost), StatUnit.percent);
stats.add(BlockStat.range, range / tilesize, StatUnit.blocks);
stats.add(BlockStat.productionTime, useTime / 60f, StatUnit.seconds);
stats.add(Stat.speedIncrease, (int)(100f * speedBoost), StatUnit.percent);
stats.add(Stat.range, range / tilesize, StatUnit.blocks);
stats.add(Stat.productionTime, useTime / 60f, StatUnit.seconds);
if(hasBoost){
stats.add(BlockStat.boostEffect, phaseRangeBoost / tilesize, StatUnit.blocks);
stats.add(BlockStat.boostEffect, (int)((speedBoost + speedBoostPhase) * 100f), StatUnit.percent);
stats.add(Stat.boostEffect, phaseRangeBoost / tilesize, StatUnit.blocks);
stats.add(Stat.boostEffect, (int)((speedBoost + speedBoostPhase) * 100f), StatUnit.percent);
}
}

View File

@@ -48,7 +48,7 @@ public abstract class BaseTurret extends Block{
public void setStats(){
super.setStats();
stats.add(BlockStat.shootRange, range / tilesize, StatUnit.blocks);
stats.add(Stat.shootRange, range / tilesize, StatUnit.blocks);
}
public class BaseTurretBuild extends Building implements Ranged{

View File

@@ -35,8 +35,8 @@ public class ItemTurret extends Turret{
public void setStats(){
super.setStats();
stats.remove(BlockStat.itemCapacity);
stats.add(BlockStat.ammo, new AmmoListValue<>(ammoTypes));
stats.remove(Stat.itemCapacity);
stats.add(Stat.ammo, new AmmoListValue<>(ammoTypes));
consumes.add(new ConsumeItemFilter(i -> ammoTypes.containsKey(i)){
@Override
public void build(Building tile, Table table){
@@ -54,7 +54,7 @@ public class ItemTurret extends Turret{
}
@Override
public void display(BlockStats stats){
public void display(Stats stats){
//don't display
}
});

View File

@@ -33,11 +33,11 @@ public class LaserTurret extends PowerTurret{
public void setStats(){
super.setStats();
stats.remove(BlockStat.booster);
stats.add(BlockStat.input, new BoosterListValue(reloadTime, consumes.<ConsumeLiquidBase>get(ConsumeType.liquid).amount, coolantMultiplier, false, l -> consumes.liquidfilters.get(l.id)));
stats.remove(BlockStat.damage);
stats.remove(Stat.booster);
stats.add(Stat.input, new BoosterListValue(reloadTime, consumes.<ConsumeLiquidBase>get(ConsumeType.liquid).amount, coolantMultiplier, false, l -> consumes.liquidfilters.get(l.id)));
stats.remove(Stat.damage);
//damages every 5 ticks, at least in meltdown's case
stats.add(BlockStat.damage, shootType.damage * 60f / 5f, StatUnit.perSecond);
stats.add(Stat.damage, shootType.damage * 60f / 5f, StatUnit.perSecond);
}
public class LaserTurretBuild extends PowerTurretBuild{

View File

@@ -36,7 +36,7 @@ public class LiquidTurret extends Turret{
public void setStats(){
super.setStats();
stats.add(BlockStat.ammo, new AmmoListValue<>(ammoTypes));
stats.add(Stat.ammo, new AmmoListValue<>(ammoTypes));
consumes.add(new ConsumeLiquidFilter(i -> ammoTypes.containsKey(i), 1f){
@Override
public boolean valid(Building entity){
@@ -49,7 +49,7 @@ public class LiquidTurret extends Turret{
}
@Override
public void display(BlockStats stats){
public void display(Stats stats){
}
});

View File

@@ -48,7 +48,7 @@ public class PointDefenseTurret extends ReloadTurret{
public void setStats(){
super.setStats();
stats.add(BlockStat.reload, 60f / reloadTime, StatUnit.none);
stats.add(Stat.reload, 60f / reloadTime, StatUnit.none);
}
public class PointDefenseBuild extends ReloadTurretBuild{

View File

@@ -16,7 +16,7 @@ public class PowerTurret extends Turret{
@Override
public void setStats(){
super.setStats();
stats.add(BlockStat.damage, shootType.damage, StatUnit.none);
stats.add(Stat.damage, shootType.damage, StatUnit.none);
}
@Override

View File

@@ -21,7 +21,7 @@ public abstract class ReloadTurret extends BaseTurret{
super.setStats();
if(acceptCoolant){
stats.add(BlockStat.booster, new BoosterListValue(reloadTime, consumes.<ConsumeLiquidBase>get(ConsumeType.liquid).amount, coolantMultiplier, true, l -> consumes.liquidfilters.get(l.id)));
stats.add(Stat.booster, new BoosterListValue(reloadTime, consumes.<ConsumeLiquidBase>get(ConsumeType.liquid).amount, coolantMultiplier, true, l -> consumes.liquidfilters.get(l.id)));
}
}

View File

@@ -50,9 +50,9 @@ public class TractorBeamTurret extends BaseTurret{
public void setStats(){
super.setStats();
stats.add(BlockStat.targetsAir, targetAir);
stats.add(BlockStat.targetsGround, targetGround);
stats.add(BlockStat.damage, damage * 60f, StatUnit.perSecond);
stats.add(Stat.targetsAir, targetAir);
stats.add(Stat.targetsGround, targetGround);
stats.add(Stat.damage, damage * 60f, StatUnit.perSecond);
}
public class TractorBeamBuild extends BaseTurretBuild{

View File

@@ -101,13 +101,13 @@ public abstract class Turret extends ReloadTurret{
public void setStats(){
super.setStats();
stats.add(BlockStat.inaccuracy, (int)inaccuracy, StatUnit.degrees);
stats.add(BlockStat.reload, 60f / reloadTime * shots, StatUnit.none);
stats.add(BlockStat.targetsAir, targetAir);
stats.add(BlockStat.targetsGround, targetGround);
stats.add(Stat.inaccuracy, (int)inaccuracy, StatUnit.degrees);
stats.add(Stat.reload, 60f / reloadTime * shots, StatUnit.none);
stats.add(Stat.targetsAir, targetAir);
stats.add(Stat.targetsGround, targetGround);
if(acceptCoolant){
stats.add(BlockStat.booster, new BoosterListValue(reloadTime, consumes.<ConsumeLiquidBase>get(ConsumeType.liquid).amount, coolantMultiplier, true, l -> consumes.liquidfilters.get(l.id)));
stats.add(Stat.booster, new BoosterListValue(reloadTime, consumes.<ConsumeLiquidBase>get(ConsumeType.liquid).amount, coolantMultiplier, true, l -> consumes.liquidfilters.get(l.id)));
}
}

View File

@@ -52,7 +52,7 @@ public class Conveyor extends Block implements Autotiler{
super.setStats();
//have to add a custom calculated speed, since the actual movement speed is apparently not linear
stats.add(BlockStat.itemsMoved, displayedSpeed, StatUnit.itemsSecond);
stats.add(Stat.itemsMoved, displayedSpeed, StatUnit.itemsSecond);
}
@Override

View File

@@ -53,7 +53,7 @@ public class StackConveyor extends Block implements Autotiler{
public void setStats(){
super.setStats();
stats.add(BlockStat.itemsMoved, Mathf.round(itemCapacity * speed * 60), StatUnit.itemsSecond);
stats.add(Stat.itemsMoved, Mathf.round(itemCapacity * speed * 60), StatUnit.itemsSecond);
}
@Override

View File

@@ -14,7 +14,7 @@ public class LiquidJunction extends LiquidBlock{
@Override
public void setStats(){
super.setStats();
stats.remove(BlockStat.liquidCapacity);
stats.remove(Stat.liquidCapacity);
}
@Override

View File

@@ -117,8 +117,8 @@ public class LogicBlock extends Block{
public void setStats(){
super.setStats();
stats.add(BlockStat.linkRange, range / 8, StatUnit.blocks);
stats.add(BlockStat.instructions, instructionsPerTick * 60, StatUnit.perSecond);
stats.add(Stat.linkRange, range / 8, StatUnit.blocks);
stats.add(Stat.instructions, instructionsPerTick * 60, StatUnit.perSecond);
}
@Override

View File

@@ -38,7 +38,7 @@ public class LogicDisplay extends Block{
public void setStats(){
super.setStats();
stats.add(BlockStat.displaySize, "@x@", displaySize, displaySize);
stats.add(Stat.displaySize, "@x@", displaySize, displaySize);
}
public class LogicDisplayBuild extends Building{

View File

@@ -18,7 +18,7 @@ public class MemoryBlock extends Block{
public void setStats(){
super.setStats();
stats.add(BlockStat.memoryCapacity, memoryCapacity, StatUnit.none);
stats.add(Stat.memoryCapacity, memoryCapacity, StatUnit.none);
}
public class MemoryBuild extends Building{

View File

@@ -55,7 +55,7 @@ public class ImpactReactor extends PowerGenerator{
super.setStats();
if(hasItems){
stats.add(BlockStat.productionTime, itemDuration / 60f, StatUnit.seconds);
stats.add(Stat.productionTime, itemDuration / 60f, StatUnit.seconds);
}
}

View File

@@ -72,7 +72,7 @@ public class ItemLiquidGenerator extends PowerGenerator{
super.setStats();
if(hasItems){
stats.add(BlockStat.productionTime, itemDuration / 60f, StatUnit.seconds);
stats.add(Stat.productionTime, itemDuration / 60f, StatUnit.seconds);
}
}

View File

@@ -56,7 +56,7 @@ public class NuclearReactor extends PowerGenerator{
super.setStats();
if(hasItems){
stats.add(BlockStat.productionTime, itemDuration / 60f, StatUnit.seconds);
stats.add(Stat.productionTime, itemDuration / 60f, StatUnit.seconds);
}
}

View File

@@ -12,7 +12,7 @@ import mindustry.world.meta.*;
public class PowerGenerator extends PowerDistributor{
/** The amount of power produced per tick in case of an efficiency of 1.0, which represents 100%. */
public float powerProduction;
public BlockStat generationType = BlockStat.basePowerGeneration;
public Stat generationType = Stat.basePowerGeneration;
public PowerGenerator(String name){
super(name);

View File

@@ -124,8 +124,8 @@ public class PowerNode extends PowerBlock{
public void setStats(){
super.setStats();
stats.add(BlockStat.powerRange, laserRange, StatUnit.blocks);
stats.add(BlockStat.powerConnections, maxNodes, StatUnit.none);
stats.add(Stat.powerRange, laserRange, StatUnit.blocks);
stats.add(Stat.powerConnections, maxNodes, StatUnit.none);
}
@Override

View File

@@ -22,7 +22,7 @@ public class ThermalGenerator extends PowerGenerator{
public void setStats(){
super.setStats();
stats.add(BlockStat.tiles, attribute, floating);
stats.add(Stat.tiles, attribute, floating);
}
@Override

View File

@@ -37,7 +37,7 @@ public class AttributeSmelter extends GenericSmelter{
public void setStats(){
super.setStats();
stats.add(BlockStat.affinities, attribute, boostScale);
stats.add(Stat.affinities, attribute, boostScale);
}
public class AttributeSmelterBuild extends SmelterBuild{

View File

@@ -42,7 +42,7 @@ public class Cultivator extends GenericCrafter{
public void setStats(){
super.setStats();
stats.add(BlockStat.affinities, attribute);
stats.add(Stat.affinities, attribute);
}
@Override

View File

@@ -16,7 +16,9 @@ import mindustry.graphics.*;
import mindustry.type.*;
import mindustry.ui.*;
import mindustry.world.*;
import mindustry.world.blocks.environment.*;
import mindustry.world.meta.*;
import mindustry.world.meta.values.*;
import static mindustry.Vars.*;
@@ -135,29 +137,11 @@ public class Drill extends Block{
public void setStats(){
super.setStats();
stats.add(BlockStat.drillTier, table -> {
Seq<Block> list = content.blocks().select(b -> b.isFloor() && b.asFloor().itemDrop != null && b.asFloor().itemDrop.hardness <= tier);
stats.add(Stat.drillTier, new BlockFilterValue(b -> b instanceof Floor f && f.itemDrop != null && f.itemDrop.hardness <= tier));
table.table(l -> {
l.left();
for(int i = 0; i < list.size; i++){
Block item = list.get(i);
l.image(item.icon(Cicon.small)).size(8 * 3).padRight(2).padLeft(2).padTop(3).padBottom(3);
l.add(item.localizedName).left().padLeft(1).padRight(4);
if(i % 5 == 4){
l.row();
}
}
});
});
stats.add(BlockStat.drillSpeed, 60f / drillTime * size * size, StatUnit.itemsSecond);
stats.add(Stat.drillSpeed, 60f / drillTime * size * size, StatUnit.itemsSecond);
if(liquidBoostIntensity != 1){
stats.add(BlockStat.boostEffect, liquidBoostIntensity * liquidBoostIntensity, StatUnit.timesSpeed);
stats.add(Stat.boostEffect, liquidBoostIntensity * liquidBoostIntensity, StatUnit.timesSpeed);
}
}

View File

@@ -21,7 +21,7 @@ public class Fracker extends SolidPump{
public void setStats(){
super.setStats();
stats.add(BlockStat.productionTime, itemUseTime / 60f, StatUnit.seconds);
stats.add(Stat.productionTime, itemUseTime / 60f, StatUnit.seconds);
}
@Override

View File

@@ -43,14 +43,14 @@ public class GenericCrafter extends Block{
}
super.setStats();
stats.add(BlockStat.productionTime, craftTime / 60f, StatUnit.seconds);
stats.add(Stat.productionTime, craftTime / 60f, StatUnit.seconds);
if(outputItem != null){
stats.add(BlockStat.output, outputItem);
stats.add(Stat.output, outputItem);
}
if(outputLiquid != null){
stats.add(BlockStat.output, outputLiquid.liquid, outputLiquid.amount, false);
stats.add(Stat.output, outputLiquid.liquid, outputLiquid.amount, false);
}
}

View File

@@ -26,8 +26,8 @@ public class LiquidConverter extends GenericCrafter{
@Override
public void setStats(){
super.setStats();
stats.remove(BlockStat.output);
stats.add(BlockStat.output, outputLiquid.liquid, outputLiquid.amount * craftTime, false);
stats.remove(Stat.output);
stats.add(Stat.output, outputLiquid.liquid, outputLiquid.amount * craftTime, false);
}
public class LiquidConverterBuild extends GenericCrafterBuild{

View File

@@ -26,7 +26,7 @@ public class Pump extends LiquidBlock{
@Override
public void setStats(){
super.setStats();
stats.add(BlockStat.output, 60f * pumpAmount * size * size, StatUnit.liquidSecond);
stats.add(Stat.output, 60f * pumpAmount * size * size, StatUnit.liquidSecond);
}
@Override

View File

@@ -41,14 +41,14 @@ public class Separator extends Block{
super.setStats();
stats.add(BlockStat.output, new ItemFilterValue(item -> {
stats.add(Stat.output, new ItemFilterValue(item -> {
for(ItemStack i : results){
if(item == i.item) return true;
}
return false;
}));
stats.add(BlockStat.productionTime, craftTime / 60f, StatUnit.seconds);
stats.add(Stat.productionTime, craftTime / 60f, StatUnit.seconds);
}
public class SeparatorBuild extends Building{

View File

@@ -53,10 +53,10 @@ public class SolidPump extends Pump{
public void setStats(){
super.setStats();
stats.remove(BlockStat.output);
stats.add(BlockStat.output, result, 60f * pumpAmount, true);
stats.remove(Stat.output);
stats.add(Stat.output, result, 60f * pumpAmount, true);
if(attribute != null){
stats.add(baseEfficiency > 0.0001f ? BlockStat.affinities : BlockStat.tiles, attribute);
stats.add(baseEfficiency > 0.0001f ? Stat.affinities : Stat.tiles, attribute);
}
}

View File

@@ -11,8 +11,8 @@ public class PowerVoid extends PowerBlock{
}
@Override
public void init(){
super.init();
stats.remove(BlockStat.powerUse);
public void setStats(){
super.setStats();
stats.remove(Stat.powerUse);
}
}

View File

@@ -77,12 +77,16 @@ public class CoreBlock extends StorageBlock{
public void setStats(){
super.setStats();
stats.add(BlockStat.buildTime, 0, StatUnit.seconds);
stats.add(Stat.buildTime, 0, StatUnit.seconds);
}
bars.add("capacity", (CoreBuild e) ->
new Bar(
() -> Core.bundle.format("bar.capacity", UI.formatAmount(e.storageCapacity)),
() -> Pal.items,
@Override
public void setBars(){
super.setBars();
bars.add("capacity", (CoreBuild e) -> new Bar(
() -> Core.bundle.format("bar.capacity", UI.formatAmount(e.storageCapacity)),
() -> Pal.items,
() -> e.items.total() / ((float)e.storageCapacity * content.items().count(i -> i.unlockedNow()))
));
}

View File

@@ -63,8 +63,8 @@ public class Reconstructor extends UnitBlock{
public void setStats(){
super.setStats();
stats.add(BlockStat.productionTime, constructTime / 60f, StatUnit.seconds);
stats.add(BlockStat.output, table -> {
stats.add(Stat.productionTime, constructTime / 60f, StatUnit.seconds);
stats.add(Stat.output, table -> {
table.row();
for(var upgrade : upgrades){
float size = 8*3;

View File

@@ -42,7 +42,7 @@ public class RepairPoint extends Block{
@Override
public void setStats(){
super.setStats();
stats.add(BlockStat.range, repairRadius / tilesize, StatUnit.blocks);
stats.add(Stat.range, repairRadius / tilesize, StatUnit.blocks);
}
@Override

View File

@@ -87,7 +87,7 @@ public class UnitFactory extends UnitBlock{
public void setStats(){
super.setStats();
stats.remove(BlockStat.itemCapacity);
stats.remove(Stat.itemCapacity);
}
@Override