From db7e5678328cc31cebb92b357f6a6ed59115c2e0 Mon Sep 17 00:00:00 2001 From: Anuken Date: Fri, 29 Apr 2022 12:10:49 -0400 Subject: [PATCH] All stat stuff converted to non-enums --- core/src/mindustry/content/Blocks.java | 4 +- core/src/mindustry/mod/ClassMap.java | 5 +- .../type/weapons/RepairBeamWeapon.java | 2 +- .../ui/dialogs/ContentInfoDialog.java | 2 +- .../{RepairPoint.java => RepairTurret.java} | 4 +- .../world/consumers/ConsumeCoolant.java | 2 +- core/src/mindustry/world/meta/Stat.java | 177 ++++++++++-------- core/src/mindustry/world/meta/StatCat.java | 37 +++- core/src/mindustry/world/meta/StatUnit.java | 54 +++--- 9 files changed, 163 insertions(+), 124 deletions(-) rename core/src/mindustry/world/blocks/units/{RepairPoint.java => RepairTurret.java} (99%) diff --git a/core/src/mindustry/content/Blocks.java b/core/src/mindustry/content/Blocks.java index e3c6b2eb9e..a6c7572a20 100644 --- a/core/src/mindustry/content/Blocks.java +++ b/core/src/mindustry/content/Blocks.java @@ -4112,7 +4112,7 @@ public class Blocks{ ); }}; - repairPoint = new RepairPoint("repair-point"){{ + repairPoint = new RepairTurret("repair-point"){{ requirements(Category.units, with(Items.lead, 30, Items.copper, 30, Items.silicon, 20)); repairSpeed = 0.45f; repairRadius = 60f; @@ -4121,7 +4121,7 @@ public class Blocks{ pulseRadius = 5f; }}; - repairTurret = new RepairPoint("repair-turret"){{ + repairTurret = new RepairTurret("repair-turret"){{ requirements(Category.units, with(Items.silicon, 90, Items.thorium, 80, Items.plastanium, 60)); size = 2; length = 6f; diff --git a/core/src/mindustry/mod/ClassMap.java b/core/src/mindustry/mod/ClassMap.java index 9cd66f8d28..08c3d3cad2 100644 --- a/core/src/mindustry/mod/ClassMap.java +++ b/core/src/mindustry/mod/ClassMap.java @@ -1,6 +1,7 @@ package mindustry.mod; import arc.struct.*; +import mindustry.world.blocks.units.*; import mindustry.world.draw.*; /** Generated class. Maps simple class names to concrete classes. For use in JSON mods. */ @@ -379,8 +380,8 @@ public class ClassMap{ classes.put("EffectDroneAI", mindustry.world.blocks.units.DroneCenter.EffectDroneAI.class); classes.put("Reconstructor", mindustry.world.blocks.units.Reconstructor.class); classes.put("ReconstructorBuild", mindustry.world.blocks.units.Reconstructor.ReconstructorBuild.class); - classes.put("RepairPoint", mindustry.world.blocks.units.RepairPoint.class); - classes.put("RepairPointBuild", mindustry.world.blocks.units.RepairPoint.RepairPointBuild.class); + classes.put("RepairPoint", RepairTurret.class); + classes.put("RepairPointBuild", RepairTurret.RepairPointBuild.class); classes.put("UnitAssembler", mindustry.world.blocks.units.UnitAssembler.class); classes.put("AssemblerUnitPlan", mindustry.world.blocks.units.UnitAssembler.AssemblerUnitPlan.class); classes.put("UnitAssemblerBuild", mindustry.world.blocks.units.UnitAssembler.UnitAssemblerBuild.class); diff --git a/core/src/mindustry/type/weapons/RepairBeamWeapon.java b/core/src/mindustry/type/weapons/RepairBeamWeapon.java index d33920322a..fdd7d28692 100644 --- a/core/src/mindustry/type/weapons/RepairBeamWeapon.java +++ b/core/src/mindustry/type/weapons/RepairBeamWeapon.java @@ -168,7 +168,7 @@ public class RepairBeamWeapon extends Weapon{ wy = unit.y + Angles.trnsy(weaponRotation, x, y); float z = Draw.z(); - RepairPoint.drawBeam(wx, wy, unit.rotation + mount.rotation, shootY, unit.id, mount.target == null || controllable ? null : (Sized)mount.target, unit.team, heal.strength, + RepairTurret.drawBeam(wx, wy, unit.rotation + mount.rotation, shootY, unit.id, mount.target == null || controllable ? null : (Sized)mount.target, unit.team, heal.strength, pulseStroke, pulseRadius, beamWidth + Mathf.absin(widthSinScl, widthSinMag), heal.lastEnd, heal.offset, laserColor, laserTopColor, laser, laserEnd, laserTop, laserTopEnd); Draw.z(z); diff --git a/core/src/mindustry/ui/dialogs/ContentInfoDialog.java b/core/src/mindustry/ui/dialogs/ContentInfoDialog.java index 5478af3861..2ba4b45c7c 100644 --- a/core/src/mindustry/ui/dialogs/ContentInfoDialog.java +++ b/core/src/mindustry/ui/dialogs/ContentInfoDialog.java @@ -61,7 +61,7 @@ public class ContentInfoDialog extends BaseDialog{ if(map.size == 0) continue; if(stats.useCategories){ - table.add("@category." + cat.name()).color(Pal.accent).fillX(); + table.add("@category." + cat.name).color(Pal.accent).fillX(); table.row(); } diff --git a/core/src/mindustry/world/blocks/units/RepairPoint.java b/core/src/mindustry/world/blocks/units/RepairTurret.java similarity index 99% rename from core/src/mindustry/world/blocks/units/RepairPoint.java rename to core/src/mindustry/world/blocks/units/RepairTurret.java index 4c13a157b9..5734e19251 100644 --- a/core/src/mindustry/world/blocks/units/RepairPoint.java +++ b/core/src/mindustry/world/blocks/units/RepairTurret.java @@ -20,7 +20,7 @@ import mindustry.world.meta.*; import static mindustry.Vars.*; -public class RepairPoint extends Block{ +public class RepairTurret extends Block{ static final Rect rect = new Rect(); static final Rand rand = new Rand(); @@ -50,7 +50,7 @@ public class RepairPoint extends Block{ public Color laserColor = Color.valueOf("98ffa9"), laserTopColor = Color.white.cpy(); - public RepairPoint(String name){ + public RepairTurret(String name){ super(name); update = true; solid = true; diff --git a/core/src/mindustry/world/consumers/ConsumeCoolant.java b/core/src/mindustry/world/consumers/ConsumeCoolant.java index f59557facb..0afdd55a09 100644 --- a/core/src/mindustry/world/consumers/ConsumeCoolant.java +++ b/core/src/mindustry/world/consumers/ConsumeCoolant.java @@ -5,7 +5,7 @@ public class ConsumeCoolant extends ConsumeLiquidFilter{ public float maxTemp = 0.5f, maxFlammability = 0.1f; public ConsumeCoolant(float amount){ - this.filter = liquid -> liquid.coolant && liquid.temperature <= maxTemp && liquid.flammability < maxFlammability; + this.filter = liquid -> liquid.coolant && !liquid.gas && liquid.temperature <= maxTemp && liquid.flammability < maxFlammability; this.amount = amount; } diff --git a/core/src/mindustry/world/meta/Stat.java b/core/src/mindustry/world/meta/Stat.java index 86826219ee..c99a4168b6 100644 --- a/core/src/mindustry/world/meta/Stat.java +++ b/core/src/mindustry/world/meta/Stat.java @@ -1,107 +1,122 @@ package mindustry.world.meta; import arc.*; +import arc.struct.*; import java.util.*; /** Describes one type of stat for content. */ -public enum Stat{ - health, - armor, - size, - displaySize, - buildTime, - buildCost, - memoryCapacity, - explosiveness, - flammability, - radioactivity, - charge, - heatCapacity, - viscosity, - temperature, - flying, - speed, - buildSpeed, - mineSpeed, - mineTier, - payloadCapacity, - baseDeflectChance, - lightningChance, - lightningDamage, - abilities, - canBoost, - maxUnits, +public class Stat implements Comparable{ + public static final Seq all = new Seq<>(); - damageMultiplier, - healthMultiplier, - speedMultiplier, - reloadMultiplier, - buildSpeedMultiplier, - reactive, - healing, - immunities, + public static final Stat - itemCapacity(StatCat.items), - itemsMoved(StatCat.items), - launchTime(StatCat.items), - maxConsecutive(StatCat.items), + health = new Stat("health"), + armor = new Stat("armor"), + size = new Stat("size"), + displaySize = new Stat("displaySize"), + buildTime = new Stat("buildTime"), + buildCost = new Stat("buildCost"), + memoryCapacity = new Stat("memoryCapacity"), + explosiveness = new Stat("explosiveness"), + flammability = new Stat("flammability"), + radioactivity = new Stat("radioactivity"), + charge = new Stat("charge"), + heatCapacity = new Stat("heatCapacity"), + viscosity = new Stat("viscosity"), + temperature = new Stat("temperature"), + flying = new Stat("flying"), + speed = new Stat("speed"), + buildSpeed = new Stat("buildSpeed"), + mineSpeed = new Stat("mineSpeed"), + mineTier = new Stat("mineTier"), + payloadCapacity = new Stat("payloadCapacity"), + baseDeflectChance = new Stat("baseDeflectChance"), + lightningChance = new Stat("lightningChance"), + lightningDamage = new Stat("lightningDamage"), + abilities = new Stat("abilities"), + canBoost = new Stat("canBoost"), + maxUnits = new Stat("maxUnits"), - liquidCapacity(StatCat.liquids), + damageMultiplier = new Stat("damageMultiplier"), + healthMultiplier = new Stat("healthMultiplier"), + speedMultiplier = new Stat("speedMultiplier"), + reloadMultiplier = new Stat("reloadMultiplier"), + buildSpeedMultiplier = new Stat("buildSpeedMultiplier"), + reactive = new Stat("reactive"), + healing = new Stat("healing"), + immunities = new Stat("immunities"), - powerCapacity(StatCat.power), - powerUse(StatCat.power), - powerDamage(StatCat.power), - powerRange(StatCat.power), - powerConnections(StatCat.power), - basePowerGeneration(StatCat.power), + itemCapacity = new Stat("itemCapacity", StatCat.items), + itemsMoved = new Stat("itemsMoved", StatCat.items), + launchTime = new Stat("launchTime", StatCat.items), + maxConsecutive = new Stat("maxConsecutive", StatCat.items), - tiles(StatCat.crafting), - input(StatCat.crafting), - output(StatCat.crafting), - productionTime(StatCat.crafting), - maxEfficiency(StatCat.crafting), - drillTier(StatCat.crafting), - drillSpeed(StatCat.crafting), - linkRange(StatCat.crafting), - instructions(StatCat.crafting), + liquidCapacity = new Stat("liquidCapacity", StatCat.liquids), - weapons(StatCat.function), - bullet(StatCat.function), + powerCapacity = new Stat("powerCapacity", StatCat.power), + powerUse = new Stat("powerUse", StatCat.power), + powerDamage = new Stat("powerDamage", StatCat.power), + powerRange = new Stat("powerRange", StatCat.power), + powerConnections = new Stat("powerConnections", StatCat.power), + basePowerGeneration = new Stat("basePowerGeneration", StatCat.power), - speedIncrease(StatCat.function), - repairTime(StatCat.function), - repairSpeed(StatCat.function), - range(StatCat.function), - shootRange(StatCat.function), - inaccuracy(StatCat.function), - shots(StatCat.function), - reload(StatCat.function), - powerShot(StatCat.function), - targetsAir(StatCat.function), - targetsGround(StatCat.function), - damage(StatCat.function), - ammo(StatCat.function), - ammoUse(StatCat.function), - shieldHealth(StatCat.function), - cooldownTime(StatCat.function), + tiles = new Stat("tiles", StatCat.crafting), + input = new Stat("input", StatCat.crafting), + output = new Stat("output", StatCat.crafting), + productionTime = new Stat("productionTime", StatCat.crafting), + maxEfficiency = new Stat("maxEfficiency", StatCat.crafting), + drillTier = new Stat("drillTier", StatCat.crafting), + drillSpeed = new Stat("drillSpeed", StatCat.crafting), + linkRange = new Stat("linkRange", StatCat.crafting), + instructions = new Stat("instructions", StatCat.crafting), - booster(StatCat.optional), - boostEffect(StatCat.optional), - affinities(StatCat.optional), - opposites(StatCat.optional); + weapons = new Stat("weapons", StatCat.function), + bullet = new Stat("bullet", StatCat.function), + + speedIncrease = new Stat("speedIncrease", StatCat.function), + repairTime = new Stat("repairTime", StatCat.function), + repairSpeed = new Stat("repairSpeed", StatCat.function), + range = new Stat("range", StatCat.function), + shootRange = new Stat("shootRange", StatCat.function), + inaccuracy = new Stat("inaccuracy", StatCat.function), + shots = new Stat("shots", StatCat.function), + reload = new Stat("reload", StatCat.function), + powerShot = new Stat("powerShot", StatCat.function), + targetsAir = new Stat("targetsAir", StatCat.function), + targetsGround = new Stat("targetsGround", StatCat.function), + damage = new Stat("damage", StatCat.function), + ammo = new Stat("ammo", StatCat.function), + ammoUse = new Stat("ammoUse", StatCat.function), + shieldHealth = new Stat("shieldHealth", StatCat.function), + cooldownTime = new Stat("cooldownTime", StatCat.function), + + booster = new Stat("booster", StatCat.optional), + boostEffect = new Stat("boostEffect", StatCat.optional), + affinities = new Stat("affinities", StatCat.optional), + opposites = new Stat("opposites", StatCat.optional); public final StatCat category; + public final String name; + public final int id; - Stat(StatCat category){ + public Stat(String name, StatCat category){ this.category = category; + this.name = name; + id = all.size; + all.add(this); } - Stat(){ - this.category = StatCat.general; + public Stat(String name){ + this(name, StatCat.general); } public String localized(){ - return Core.bundle.get("stat." + name().toLowerCase(Locale.ROOT)); + return Core.bundle.get("stat." + name.toLowerCase(Locale.ROOT)); + } + + @Override + public int compareTo(Stat o){ + return id - o.id; } } diff --git a/core/src/mindustry/world/meta/StatCat.java b/core/src/mindustry/world/meta/StatCat.java index 0398ff7b5d..af825e794a 100644 --- a/core/src/mindustry/world/meta/StatCat.java +++ b/core/src/mindustry/world/meta/StatCat.java @@ -1,18 +1,37 @@ package mindustry.world.meta; import arc.*; +import arc.struct.*; /** A specific category for a stat. */ -public enum StatCat{ - general, - power, - liquids, - items, - crafting, - function, - optional; +public class StatCat implements Comparable{ + public static final Seq all = new Seq<>(); + + public static final StatCat + + general = new StatCat("general"), + power = new StatCat("power"), + liquids = new StatCat("liquids"), + items = new StatCat("items"), + crafting = new StatCat("crafting"), + function = new StatCat("function"), + optional = new StatCat("optional"); + + public final String name; + public final int id; + + public StatCat(String name){ + this.name = name; + id = all.size; + all.add(this); + } public String localized(){ - return Core.bundle.get("category." + name()); + return Core.bundle.get("category." + name); + } + + @Override + public int compareTo(StatCat o){ + return id - o.id; } } diff --git a/core/src/mindustry/world/meta/StatUnit.java b/core/src/mindustry/world/meta/StatUnit.java index 1ee6a594db..d0c75ae789 100644 --- a/core/src/mindustry/world/meta/StatUnit.java +++ b/core/src/mindustry/world/meta/StatUnit.java @@ -7,40 +7,44 @@ import java.util.*; /** * Defines a unit of measurement for block stats. */ -public enum StatUnit{ - blocks, - blocksSquared, - tilesSecond, - powerSecond, - liquidSecond, - itemsSecond, - liquidUnits, - powerUnits, - heatUnits, - degrees, - seconds, - minutes, - perSecond(false), - perMinute(false), - perShot(false), - timesSpeed(false), - percent(false), - shieldHealth, - none, - items; +public class StatUnit{ + public static final StatUnit + + blocks = new StatUnit("blocks"), + blocksSquared = new StatUnit("blocksSquared"), + tilesSecond = new StatUnit("tilesSecond"), + powerSecond = new StatUnit("powerSecond"), + liquidSecond = new StatUnit("liquidSecond"), + itemsSecond = new StatUnit("itemsSecond"), + liquidUnits = new StatUnit("liquidUnits"), + powerUnits = new StatUnit("powerUnits"), + heatUnits = new StatUnit("heatUnits"), + degrees = new StatUnit("degrees"), + seconds = new StatUnit("seconds"), + minutes = new StatUnit("minutes"), + perSecond = new StatUnit("perSecond", false), + perMinute = new StatUnit("perMinute", false), + perShot = new StatUnit("perShot", false), + timesSpeed = new StatUnit("timesSpeed", false), + percent = new StatUnit("percent", false), + shieldHealth = new StatUnit("shieldHealth"), + none = new StatUnit("none"), + items = new StatUnit("items"); public final boolean space; + public final String name; - StatUnit(boolean space){ + public StatUnit(String name, boolean space){ + this.name = name; this.space = space; } - StatUnit(){ - this(true); + public StatUnit(String name){ + this(name, true); } public String localized(){ if(this == none) return ""; - return Core.bundle.get("unit." + name().toLowerCase(Locale.ROOT)); + return Core.bundle.get("unit." + name.toLowerCase(Locale.ROOT)); } }