Made setStats accept an object instead of using an instance field

This commit is contained in:
Anuken
2026-09-21 15:48:14 -04:00
parent 318ca1cc8e
commit 8396d5c9fa
82 changed files with 167 additions and 189 deletions

View File

@@ -22,9 +22,6 @@ import static mindustry.Vars.*;
/** Base interface for an unlockable content type. */
public abstract class UnlockableContent extends MappableContent{
/** Stat storage for this content. Initialized on demand. */
@NoPatch
public Stats stats = new Stats();
/** Localized, formal name. Never null. Set to internal name if not found in bundle. */
public String localizedName;
/** Localized description & details. May be null. */
@@ -119,9 +116,6 @@ public abstract class UnlockableContent extends MappableContent{
@Override
public void afterPatch(){
super.afterPatch();
//reset stats
stats = new Stats();
}
public boolean isBanned(){
@@ -141,13 +135,12 @@ public abstract class UnlockableContent extends MappableContent{
}
/** Initializes stats on demand. Called every time the block stats are shown. */
public void setStats(){
}
public void setStats(Stats stats){}
public Stats computeStats(){
this.stats = new Stats();
setStats();
return this.stats;
var stats = new Stats();
setStats(stats);
return stats;
}
/** Display any extra info after details. */

View File

@@ -101,7 +101,7 @@ public class Item extends UnlockableContent implements Senseable{
}
@Override
public void setStats(){
public void setStats(Stats stats){
stats.addPercent(Stat.explosiveness, explosiveness);
stats.addPercent(Stat.flammability, flammability);
stats.addPercent(Stat.radioactivity, radioactivity);

View File

@@ -159,7 +159,7 @@ public class Liquid extends UnlockableContent implements Senseable{
}
@Override
public void setStats(){
public void setStats(Stats stats){
stats.addPercent(Stat.explosiveness, explosiveness);
stats.addPercent(Stat.flammability, flammability);
stats.addPercent(Stat.temperature, temperature);

View File

@@ -94,7 +94,7 @@ public class StatusEffect extends UnlockableContent{
}
@Override
public void setStats(){
public void setStats(Stats stats){
if(damageMultiplier != 1) stats.addMultModifier(Stat.damageMultiplier, damageMultiplier);
if(healthMultiplier != 1) stats.addMultModifier(Stat.healthMultiplier, healthMultiplier);
if(speedMultiplier != 1) stats.addMultModifier(Stat.speedMultiplier, speedMultiplier);

View File

@@ -788,7 +788,7 @@ public class UnitType extends UnlockableContent implements Senseable{
}
@Override
public void setStats(){
public void setStats(Stats stats){
stats.add(Stat.health, health);
stats.add(Stat.armor, armor);
stats.add(Stat.speed, speed * 60f / tilesize, StatUnit.tilesSecond);

View File

@@ -637,13 +637,17 @@ public class Block extends UnlockableContent implements Senseable{
}
@Override
public void setStats(){
super.setStats();
public void setStats(Stats stats){
super.setStats(stats);
stats.useCategories = true;
stats.add(Stat.size, "@x@", size, size);
if(unitCapModifier != 0){
stats.add(Stat.maxUnits, (unitCapModifier < 0 ? "-" : "+") + Math.abs(unitCapModifier));
}
if(synthetic()){
stats.add(Stat.health, health, StatUnit.none);
if(armor > 0){
@@ -725,10 +729,6 @@ public class Block extends UnlockableContent implements Senseable{
);
}
if(unitCapModifier != 0){
stats.add(Stat.maxUnits, (unitCapModifier < 0 ? "-" : "+") + Math.abs(unitCapModifier));
}
//liquids added last
if(hasLiquids){
//TODO liquids need to be handled VERY carefully. there are several potential possibilities:

View File

@@ -201,11 +201,6 @@ public class Tile implements Position, QuadTreeObject, Displayable{
this.block = block;
}
@SuppressWarnings("unchecked")
public <T extends Block> T cblock(){
return (T)block;
}
public Team team(){
return build == null ? Team.derelict : build.team;
}

View File

@@ -116,8 +116,8 @@ public class LandingPad extends Block{
}
@Override
public void setStats(){
super.setStats();
public void setStats(Stats stats){
super.setStats(stats);
stats.add(Stat.cooldownTime, (cooldownTime+arrivalDuration)/60f, StatUnit.seconds);
}

View File

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

View File

@@ -78,8 +78,8 @@ public class BuildTurret extends BaseTurret{
}
@Override
public void setStats(){
super.setStats();
public void setStats(Stats stats){
super.setStats(stats);
stats.addPercent(Stat.buildSpeed, buildSpeed);
}

View File

@@ -105,11 +105,11 @@ public class ForceProjector extends Block{
}
@Override
public void setStats(){
public void setStats(Stats stats){
boolean consItems = itemConsumer != null;
if(consItems) stats.timePeriod = phaseUseTime;
super.setStats();
super.setStats(stats);
stats.add(Stat.shieldHealth, shieldHealth, StatUnit.none);
stats.add(Stat.range, radius / tilesize, StatUnit.blocks);
stats.add(Stat.regenerationRate, cooldownNormal * 60f, StatUnit.perSecond);

View File

@@ -55,9 +55,9 @@ public class MendProjector extends Block{
}
@Override
public void setStats(){
public void setStats(Stats stats){
stats.timePeriod = useTime;
super.setStats();
super.setStats(stats);
stats.add(Stat.repairTime, (int)(100f / healPercent * reload / 60f), StatUnit.seconds);
stats.add(Stat.range, range / tilesize, StatUnit.blocks);

View File

@@ -60,9 +60,9 @@ public class OverdriveProjector extends Block{
}
@Override
public void setStats(){
public void setStats(Stats stats){
stats.timePeriod = useTime;
super.setStats();
super.setStats(stats);
stats.add(Stat.speedIncrease, "+" + (int)(speedBoost * 100f - 100) + "%");
stats.add(Stat.range, range / tilesize, StatUnit.blocks);

View File

@@ -88,9 +88,9 @@ public class RegenProjector extends Block{
}
@Override
public void setStats(){
public void setStats(Stats stats){
stats.timePeriod = optionalUseTime;
super.setStats();
super.setStats(stats);
stats.add(Stat.repairTime, (int)(1f / (healPercent / 100f) / 60f), StatUnit.seconds);
stats.add(Stat.range, range, StatUnit.blocks);

View File

@@ -28,8 +28,8 @@ public class ShieldWall extends Wall{
}
@Override
public void setStats(){
super.setStats();
public void setStats(Stats stats){
super.setStats(stats);
stats.add(Stat.shieldHealth, shieldHealth);
}

View File

@@ -38,12 +38,12 @@ public class ShockMine extends Block{
}
@Override
public void setStats(){
super.setStats();
public void setStats(Stats stats){
super.setStats(stats);
stats.add(Stat.damage, table -> {
table.add((String)(Core.bundle.format("bullet.lightning", tendrils, Strings.autoFixed(damage, 2)).replace("[stat]", "[white]")));
});
}
}
public class ShockMineBuild extends Building{

View File

@@ -48,8 +48,8 @@ public class ShockwaveTower extends Block{
}
@Override
public void setStats(){
super.setStats();
public void setStats(Stats stats){
super.setStats(stats);
stats.add(Stat.damage, bulletDamage, StatUnit.none);
stats.add(Stat.range, range / tilesize, StatUnit.blocks);

View File

@@ -50,8 +50,8 @@ public class Wall extends Block{
}
@Override
public void setStats(){
super.setStats();
public void setStats(Stats stats){
super.setStats(stats);
if(chanceDeflect > 0f) stats.add(Stat.baseDeflectChance, chanceDeflect, StatUnit.none);
if(lightningChance > 0f){

View File

@@ -90,8 +90,8 @@ public class BaseTurret extends Block{
}
@Override
public void setStats(){
super.setStats();
public void setStats(Stats stats){
super.setStats(stats);
stats.add(Stat.shootRange, range / tilesize, StatUnit.blocks);
if(activationTime > 0) stats.add(Stat.activationTime, activationTime / 60f, StatUnit.seconds);

View File

@@ -29,8 +29,8 @@ public class ContinuousLiquidTurret extends ContinuousTurret{
}
@Override
public void setStats(){
super.setStats();
public void setStats(Stats stats){
super.setStats(stats);
//mirror stats onto each bullet (purely visual)
ammoTypes.each((l, b) -> b.statLiquidConsumed = liquidConsumed);

View File

@@ -26,8 +26,8 @@ public class ContinuousTurret extends Turret{
}
@Override
public void setStats(){
super.setStats();
public void setStats(Stats stats){
super.setStats(stats);
stats.add(Stat.ammo, StatValues.ammo(ObjectMap.of(this, shootType)));
stats.remove(Stat.reload);

View File

@@ -46,8 +46,8 @@ public class ItemTurret extends Turret{
}
@Override
public void setStats(){
super.setStats();
public void setStats(Stats stats){
super.setStats(stats);
stats.remove(Stat.itemCapacity);
stats.add(Stat.ammo, StatValues.ammo(ammoTypes, name));

View File

@@ -23,8 +23,8 @@ public class LaserTurret extends PowerTurret{
}
@Override
public void setStats(){
super.setStats();
public void setStats(Stats stats){
super.setStats(stats);
stats.remove(Stat.booster);
if(coolant != null){

View File

@@ -34,8 +34,8 @@ public class LiquidTurret extends Turret{
}
@Override
public void setStats(){
super.setStats();
public void setStats(Stats stats){
super.setStats(stats);
stats.add(Stat.ammo, StatValues.ammo(ammoTypes, name));
}

View File

@@ -48,8 +48,8 @@ public class PayloadAmmoTurret extends Turret{
}
@Override
public void setStats(){
super.setStats();
public void setStats(Stats stats){
super.setStats(stats);
stats.remove(Stat.itemCapacity);
stats.add(Stat.ammo, StatValues.ammo(ammoTypes, true));

View File

@@ -48,8 +48,8 @@ public class PointDefenseTurret extends ReloadTurret{
}
@Override
public void setStats(){
super.setStats();
public void setStats(Stats stats){
super.setStats(stats);
stats.add(Stat.reload, 60f / reload, StatUnit.perSecond);
stats.add(Stat.damage, bulletDamage, StatUnit.none);

View File

@@ -14,8 +14,8 @@ public class PowerTurret extends Turret{
}
@Override
public void setStats(){
super.setStats();
public void setStats(Stats stats){
super.setStats(stats);
stats.add(Stat.ammo, StatValues.ammo(ObjectMap.of(this, shootType)));
}

View File

@@ -14,8 +14,8 @@ public class ReloadTurret extends BaseTurret{
}
@Override
public void setStats(){
super.setStats();
public void setStats(Stats stats){
super.setStats(stats);
if(coolant != null){
stats.replace(Stat.booster, StatValues.boosters(reload, coolant.amount, coolantMultiplier, true, coolant::consumes));

View File

@@ -54,8 +54,8 @@ public class TractorBeamTurret extends BaseTurret{
}
@Override
public void setStats(){
super.setStats();
public void setStats(Stats stats){
super.setStats(stats);
stats.add(Stat.targetsAir, targetAir);
stats.add(Stat.targetsGround, targetGround);

View File

@@ -182,8 +182,8 @@ public class Turret extends ReloadTurret{
}
@Override
public void setStats(){
super.setStats();
public void setStats(Stats stats){
super.setStats(stats);
stats.add(Stat.inaccuracy, (int)inaccuracy, StatUnit.degrees);
stats.add(Stat.reload, 60f / (reload + (!reloadWhileCharging ? shoot.firstShotDelay : 0f)) * shoot.shots, StatUnit.perSecond);
@@ -792,7 +792,7 @@ public class Turret extends ReloadTurret{
bulletX = x + Angles.trnsx(rotation - 90, shootX + xOffset + xSpread, shootY + yOffset),
bulletY = y + Angles.trnsy(rotation - 90, shootX + xOffset + xSpread, shootY + yOffset),
shootAngle = rotation + angleOffset + Mathf.range(inaccuracy + type.inaccuracy);
float baseLife = (1f - lifeRnd) + Mathf.random(lifeRnd) + extraLife,
lifeScl = type.scaleLife ? Mathf.clamp((baseLife + scaleLifetimeOffset) * Mathf.dst(bulletX, bulletY, targetPos.x, targetPos.y) / type.range, minRange() / type.range, range() / type.range) : baseLife;

View File

@@ -19,10 +19,10 @@ public class BufferedItemBridge extends ItemBridge{
hasItems = true;
canOverdrive = true;
}
@Override
public void setStats(){
super.setStats();
public void setStats(Stats stats){
super.setStats(stats);
//Hard to calculate, fps and overdive reliant. Movement speed taken from testing
stats.add(Stat.itemsMoved, displayedSpeed, StatUnit.itemsSecond);

View File

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

View File

@@ -56,8 +56,8 @@ public class DirectionalUnloader extends Block{
}
@Override
public void setStats(){
super.setStats();
public void setStats(Stats stats){
super.setStats(stats);
stats.add(Stat.speed, 60f / speed, StatUnit.itemsSecond);
}

View File

@@ -56,8 +56,8 @@ public class Duct extends Block implements Autotiler{
}
@Override
public void setStats(){
super.setStats();
public void setStats(Stats stats){
super.setStats(stats);
stats.add(Stat.itemsMoved, 60f / speed, StatUnit.itemsSecond);
}

View File

@@ -2,7 +2,6 @@ package mindustry.world.blocks.distribution;
import mindustry.gen.*;
import mindustry.type.*;
import mindustry.world.*;
import mindustry.world.meta.*;
public class DuctBridge extends DirectionBridge{
@@ -18,8 +17,8 @@ public class DuctBridge extends DirectionBridge{
}
@Override
public void setStats(){
super.setStats();
public void setStats(Stats stats){
super.setStats(stats);
stats.add(Stat.itemsMoved, 60f / speed, StatUnit.itemsSecond);
}

View File

@@ -38,8 +38,8 @@ public class DuctJunction extends Block{
}
@Override
public void setStats(){
super.setStats();
public void setStats(Stats stats){
super.setStats(stats);
//4 tems is misleading
stats.remove(Stat.itemCapacity);
}

View File

@@ -45,8 +45,8 @@ public class DuctRouter extends Block{
}
@Override
public void setStats(){
super.setStats();
public void setStats(Stats stats){
super.setStats(stats);
stats.add(Stat.itemsMoved, 60f / speed * itemCapacity, StatUnit.itemsSecond);
}

View File

@@ -71,8 +71,8 @@ public class ItemBridge extends Block{
}
@Override
public void setStats(){
super.setStats();
public void setStats(Stats stats){
super.setStats(stats);
if(transportTime != 0f){
stats.add(Stat.itemsMoved, 60f / transportTime, StatUnit.itemsSecond);
}

View File

@@ -27,8 +27,8 @@ public class Junction extends Block{
}
@Override
public void setStats(){
super.setStats();
public void setStats(Stats stats){
super.setStats(stats);
//(60f / speed * capacity) returns 13.84 which is not the actual value (non linear, depends on fps)
stats.add(Stat.itemsMoved, displayedSpeed, StatUnit.itemsSecond);

View File

@@ -66,8 +66,8 @@ public class MassDriver extends Block{
}
@Override
public void setStats(){
super.setStats();
public void setStats(Stats stats){
super.setStats(stats);
stats.add(Stat.shootRange, range / tilesize, StatUnit.blocks);
stats.add(Stat.reload, table -> {

View File

@@ -38,8 +38,8 @@ public class OverflowDuct extends Block{
}
@Override
public void setStats(){
super.setStats();
public void setStats(Stats stats){
super.setStats(stats);
stats.add(Stat.itemsMoved, 60f / speed, StatUnit.itemsSecond);
}

View File

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

View File

@@ -27,8 +27,8 @@ public class HeatProducer extends GenericCrafter{
}
@Override
public void setStats(){
super.setStats();
public void setStats(Stats stats){
super.setStats(stats);
stats.add(Stat.output, heatOutput, StatUnit.heatUnits);
}

View File

@@ -18,8 +18,8 @@ public class LiquidJunction extends LiquidBlock{
}
@Override
public void setStats(){
super.setStats();
public void setStats(Stats stats){
super.setStats(stats);
stats.remove(Stat.liquidCapacity);
}

View File

@@ -172,8 +172,8 @@ public class LogicBlock extends Block{
}
@Override
public void setStats(){
super.setStats();
public void setStats(Stats stats){
super.setStats(stats);
if(!privileged){
stats.add(Stat.linkRange, range / 8, StatUnit.blocks);

View File

@@ -68,8 +68,8 @@ public class LogicDisplay extends Block{
}
@Override
public void setStats(){
super.setStats();
public void setStats(Stats stats){
super.setStats(stats);
stats.add(Stat.displaySize, "@x@", displaySize, displaySize);
}

View File

@@ -1,6 +1,5 @@
package mindustry.world.blocks.logic;
import arc.util.*;
import arc.util.io.*;
import mindustry.gen.*;
import mindustry.io.*;
@@ -27,8 +26,8 @@ public class MemoryBlock extends Block{
}
@Override
public void setStats(){
super.setStats();
public void setStats(Stats stats){
super.setStats(stats);
stats.add(Stat.memoryCapacity, memoryCapacity, StatUnit.none);
}

View File

@@ -39,8 +39,8 @@ public class Constructor extends BlockProducer{
}
@Override
public void setStats(){
super.setStats();
public void setStats(Stats stats){
super.setStats(stats);
stats.add(Stat.output, "@x@ ~ @x@", minBlockSize, minBlockSize, maxBlockSize, maxBlockSize);
stats.addPercent(Stat.buildSpeed, buildSpeed);

View File

@@ -58,8 +58,8 @@ public class PayloadConveyor extends Block{
}
@Override
public void setStats(){
super.setStats();
public void setStats(Stats stats){
super.setStats(stats);
stats.add(Stat.payloadCapacity, StatValues.squared(payloadLimit, StatUnit.blocksSquared));
}

View File

@@ -78,8 +78,8 @@ public class PayloadMassDriver extends PayloadBlock{
}
@Override
public void setStats(){
super.setStats();
public void setStats(Stats stats){
super.setStats(stats);
stats.add(Stat.payloadCapacity, StatValues.squared(maxPayloadSize, StatUnit.blocksSquared));
stats.add(Stat.reload, 60f / (chargeTime + reload), StatUnit.perSecond);

View File

@@ -55,8 +55,8 @@ public class BeamNode extends PowerBlock{
}
@Override
public void setStats(){
super.setStats();
public void setStats(Stats stats){
super.setStats(stats);
stats.add(Stat.powerRange, range, StatUnit.blocks);
}

View File

@@ -80,9 +80,9 @@ public class ConsumeGenerator extends PowerGenerator{
}
@Override
public void setStats(){
public void setStats(Stats stats){
stats.timePeriod = itemDuration;
super.setStats();
super.setStats(stats);
if(hasItems){
stats.add(Stat.productionTime, itemDuration / 60f, StatUnit.seconds);

View File

@@ -24,8 +24,8 @@ public class HeaterGenerator extends ConsumeGenerator{
}
@Override
public void setStats(){
super.setStats();
public void setStats(Stats stats){
super.setStats(stats);
stats.add(Stat.output, heatOutput, StatUnit.heatUnits);
}

View File

@@ -43,7 +43,6 @@ public class ImpactReactor extends PowerGenerator{
@Override
public void setBars(){
stats.timePeriod = itemDuration;
super.setBars();
addBar("power", (GeneratorBuild entity) -> new Bar(() ->
@@ -54,9 +53,9 @@ public class ImpactReactor extends PowerGenerator{
}
@Override
public void setStats(){
public void setStats(Stats stats){
stats.timePeriod = itemDuration;
super.setStats();
super.setStats(stats);
if(hasItems){
stats.add(Stat.productionTime, itemDuration / 60f, StatUnit.seconds);

View File

@@ -74,9 +74,9 @@ public class NuclearReactor extends PowerGenerator{
}
@Override
public void setStats(){
public void setStats(Stats stats){
stats.timePeriod = itemDuration;
super.setStats();
super.setStats(stats);
stats.add(Stat.meltdownTime, table -> {
float avg = (itemDuration / 60f) / (1f + heatConsumeRate / 2f);

View File

@@ -77,8 +77,8 @@ public class PowerGenerator extends PowerDistributor{
}
@Override
public void setStats(){
super.setStats();
public void setStats(Stats stats){
super.setStats(stats);
stats.add(generationType, powerProduction * 60.0f, StatUnit.powerSecond);
}

View File

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

View File

@@ -16,8 +16,8 @@ public class SolarGenerator extends PowerGenerator{
}
@Override
public void setStats(){
super.setStats();
public void setStats(Stats stats){
super.setStats(stats);
stats.remove(generationType);
stats.add(generationType, powerProduction * 60.0f, StatUnit.powerSecond);
}

View File

@@ -53,8 +53,8 @@ public class ThermalGenerator extends PowerGenerator{
}
@Override
public void setStats(){
super.setStats();
public void setStats(Stats stats){
super.setStats(stats);
stats.add(Stat.tiles, attribute, floating, size * size * displayEfficiencyScale, !displayEfficiency);
stats.remove(generationType);

View File

@@ -64,8 +64,8 @@ public class VariableReactor extends PowerGenerator{
}
@Override
public void setStats(){
super.setStats();
public void setStats(Stats stats){
super.setStats(stats);
stats.add(Stat.input, maxHeat, StatUnit.heatUnits);
}

View File

@@ -74,10 +74,10 @@ public class AttributeCrafter extends GenericCrafter{
}
@Override
public void setStats(){
super.setStats();
public void setStats(Stats stats){
super.setStats(stats);
if(outputScale > 0f){
stats.add(baseEfficiency <= 0.0001f ? Stat.tiles :
stats.add(baseEfficiency <= 0.0001f ? Stat.tiles :
Stat.affinities, attribute, floating, boostScale * size * size, outputScale * size * size, Seq.with(outputItems), craftTime, !displayEfficiency);
}else{
stats.add(baseEfficiency <= 0.0001f ? Stat.tiles : Stat.affinities, attribute, floating, boostScale * size * size, !displayEfficiency);

View File

@@ -116,8 +116,8 @@ public class BeamDrill extends Block{
}
@Override
public void setStats(){
super.setStats();
public void setStats(Stats stats){
super.setStats(stats);
stats.add(Stat.drillTier, StatValues.drillables(drillTime, 0f, size, drillMultipliers, b ->
(b instanceof Floor f && f.wallOre && f.itemDrop != null && f.itemDrop.hardness <= tier && (blockedItems == null || !blockedItems.contains(f.itemDrop))) ||

View File

@@ -56,8 +56,8 @@ public class BurstDrill extends Drill{
}
@Override
public void setStats(){
super.setStats();
public void setStats(Stats stats){
super.setStats(stats);
if(liquidBoostIntensity != 1 && findConsumer(f -> f instanceof ConsumeLiquidBase && f.booster) instanceof ConsumeLiquidBase consBase){
stats.remove(Stat.booster);

View File

@@ -185,8 +185,8 @@ public class Drill extends Block{
}
@Override
public void setStats(){
super.setStats();
public void setStats(Stats stats){
super.setStats(stats);
stats.add(Stat.drillTier, StatValues.drillables(drillTime, hardnessDrillMultiplier, size * size, drillMultipliers, b -> b instanceof Floor f && !f.wallOre && f.itemDrop != null &&
f.itemDrop.hardness <= tier && (blockedItems == null || !blockedItems.contains(f.itemDrop)) && (indexer.isBlockPresent(f) || state.isMenu())));

View File

@@ -16,9 +16,9 @@ public class Fracker extends SolidPump{
}
@Override
public void setStats(){
public void setStats(Stats stats){
stats.timePeriod = itemUseTime;
super.setStats();
super.setStats(stats);
stats.add(Stat.productionTime, itemUseTime / 60f, StatUnit.seconds);
}

View File

@@ -4,7 +4,6 @@ import arc.graphics.g2d.*;
import arc.math.*;
import arc.math.geom.*;
import arc.struct.*;
import arc.struct.*;
import arc.util.*;
import arc.util.io.*;
import mindustry.content.*;
@@ -62,9 +61,9 @@ public class GenericCrafter extends Block{
}
@Override
public void setStats(){
public void setStats(Stats stats){
stats.timePeriod = craftTime;
super.setStats();
super.setStats(stats);
if((hasItems && itemCapacity > 0) || outputItems != null){
stats.add(Stat.productionTime, craftTime / 60f, StatUnit.seconds);
}

View File

@@ -33,8 +33,8 @@ public class HeatCrafter extends GenericCrafter{
}
@Override
public void setStats(){
super.setStats();
public void setStats(Stats stats){
super.setStats(stats);
stats.add(Stat.input, heatRequirement, StatUnit.heatUnits);
stats.add(Stat.maxEfficiency, (int)(maxEfficiency * 100f), StatUnit.percent);

View File

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

View File

@@ -34,9 +34,9 @@ public class Separator extends Block{
}
@Override
public void setStats(){
public void setStats(Stats stats){
stats.timePeriod = craftTime;
super.setStats();
super.setStats(stats);
int[] sum = {0};
for(var r : results) sum[0] += r.amount;

View File

@@ -55,8 +55,8 @@ public class SolidPump extends Pump{
}
@Override
public void setStats(){
super.setStats();
public void setStats(Stats stats){
super.setStats(stats);
stats.remove(Stat.output);
stats.add(Stat.output, result, 60f * pumpAmount, true);

View File

@@ -73,8 +73,8 @@ public class WallCrafter extends Block{
}
@Override
public void setStats(){
super.setStats();
public void setStats(Stats stats){
super.setStats(stats);
stats.add(Stat.output, output);
stats.add(Stat.tiles, StatValues.blocks(attribute, floating, 1f, true, false));

View File

@@ -42,8 +42,8 @@ public class ItemSource extends Block{
}
@Override
public void setStats(){
super.setStats();
public void setStats(Stats stats){
super.setStats(stats);
stats.add(Stat.output, itemsPerSecond, StatUnit.itemsSecond);
}

View File

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

View File

@@ -122,8 +122,8 @@ public class CoreBlock extends StorageBlock{
}
@Override
public void setStats(){
super.setStats();
public void setStats(Stats stats){
super.setStats(stats);
stats.add(Stat.unitType, table -> {
table.row();

View File

@@ -58,8 +58,8 @@ public class Unloader extends Block{
}
@Override
public void setStats(){
super.setStats();
public void setStats(Stats stats){
super.setStats(stats);
stats.add(Stat.speed, 60f / speed, StatUnit.itemsSecond);
}

View File

@@ -89,9 +89,9 @@ public class Reconstructor extends UnitBlock{
}
@Override
public void setStats(){
public void setStats(Stats stats){
stats.timePeriod = constructTime;
super.setStats();
super.setStats(stats);
stats.add(Stat.productionTime, constructTime / 60f, StatUnit.seconds);
stats.add(Stat.output, table -> {

View File

@@ -33,8 +33,8 @@ public class RepairTower extends Block{
}
@Override
public void setStats(){
super.setStats();
public void setStats(Stats stats){
super.setStats(stats);
stats.add(Stat.range, range / tilesize, StatUnit.blocks);
stats.add(Stat.repairSpeed, healAmount * 60f, StatUnit.perSecond);

View File

@@ -68,8 +68,8 @@ public class RepairTurret extends Block{
}
@Override
public void setStats(){
super.setStats();
public void setStats(Stats stats){
super.setStats(stats);
stats.add(Stat.range, repairRadius / tilesize, StatUnit.blocks);
stats.add(Stat.repairSpeed, repairSpeed * 60f, StatUnit.perSecond);

View File

@@ -203,8 +203,8 @@ public class UnitAssembler extends PayloadBlock{
}
@Override
public void setStats(){
super.setStats();
public void setStats(Stats stats){
super.setStats(stats);
stats.add(Stat.output, table -> {
table.row();

View File

@@ -29,8 +29,8 @@ public class UnitAssemblerModule extends PayloadBlock{
}
@Override
public void setStats(){
super.setStats();
public void setStats(Stats stats){
super.setStats(stats);
stats.add(Stat.moduleTier, tier);
}

View File

@@ -143,8 +143,8 @@ public class UnitFactory extends UnitBlock{
}
@Override
public void setStats(){
super.setStats();
public void setStats(Stats stats){
super.setStats(stats);
stats.remove(Stat.itemCapacity);
@@ -265,7 +265,7 @@ public class UnitFactory extends UnitBlock{
if(build != null && build.team == this.team){
commandPos.set(build);
}
}
}
}
@Override

View File

@@ -173,9 +173,6 @@ public class PatcherTests{
@Test
void unitWeapons() throws Exception{
UnitTypes.dagger.stats.add(Stat.charge, 999);
assertNotNull(UnitTypes.dagger.stats.toMap().get(StatCat.general).get(Stat.charge));
apply("""
unit.dagger.weapons.+: {
name: navanax-weapon
@@ -193,9 +190,6 @@ public class PatcherTests{
assertEquals(999, UnitTypes.dagger.weapons.get(2).bullet.lightningLength);
Vars.logic.reset();
UnitTypes.dagger.computeStats();
assertNull(UnitTypes.dagger.stats.toMap().get(StatCat.general).get(Stat.charge));
}
@Test