From a6c9bd3182653175313bd68b4a4d6868b8ecb55e Mon Sep 17 00:00:00 2001 From: Anuken Date: Sat, 30 Mar 2019 23:23:57 -0400 Subject: [PATCH] Class cleanup --- .../io/anuke/mindustry/content/Blocks.java | 72 +++++++++++++++++-- core/src/io/anuke/mindustry/world/Block.java | 6 +- .../world/blocks/production/Compressor.java | 48 ------------- .../world/blocks/production/Drill.java | 15 ++-- .../blocks/production/GenericCrafter.java | 11 +++ .../world/blocks/production/LiquidMixer.java | 47 ------------ .../production/PlastaniumCompressor.java | 33 --------- .../world/blocks/production/Pulverizer.java | 35 --------- .../world/blocks/production/Separator.java | 13 +--- 9 files changed, 91 insertions(+), 189 deletions(-) delete mode 100644 core/src/io/anuke/mindustry/world/blocks/production/Compressor.java delete mode 100644 core/src/io/anuke/mindustry/world/blocks/production/LiquidMixer.java delete mode 100644 core/src/io/anuke/mindustry/world/blocks/production/PlastaniumCompressor.java delete mode 100644 core/src/io/anuke/mindustry/world/blocks/production/Pulverizer.java diff --git a/core/src/io/anuke/mindustry/content/Blocks.java b/core/src/io/anuke/mindustry/content/Blocks.java index 9734406b8c..a4152fb2bb 100644 --- a/core/src/io/anuke/mindustry/content/Blocks.java +++ b/core/src/io/anuke/mindustry/content/Blocks.java @@ -33,6 +33,7 @@ import io.anuke.mindustry.world.blocks.units.UnitFactory; import io.anuke.mindustry.world.consumers.ConsumeItemFilter; import io.anuke.mindustry.world.consumers.ConsumeLiquidFilter; import io.anuke.mindustry.world.meta.Attribute; +import io.anuke.mindustry.world.modules.LiquidModule; import static io.anuke.mindustry.Vars.state; import static io.anuke.mindustry.Vars.world; @@ -426,7 +427,7 @@ public class Blocks implements ContentList{ consumes.power(0.60f); }}; - plastaniumCompressor = new PlastaniumCompressor("plastanium-compressor"){{ + plastaniumCompressor = new GenericCrafter("plastanium-compressor"){{ requirements(Category.crafting, ItemStack.with(Items.silicon, 160, Items.lead, 230, Items.graphite, 120, Items.titanium, 160)); hasItems = true; liquidCapacity = 60f; @@ -441,6 +442,18 @@ public class Blocks implements ContentList{ consumes.liquid(Liquids.oil, 0.25f); consumes.power(3f); consumes.item(Items.titanium, 2); + + int topRegion = reg("-top"); + + drawer = tile -> { + super.draw(tile); + + GenericCrafterEntity entity = tile.entity(); + + Draw.alpha(Mathf.absin(entity.totalProgress, 3f, 0.9f) * entity.warmup); + Draw.rect(reg(topRegion), tile.drawx(), tile.drawy()); + Draw.reset(); + }; }}; phaseWeaver = new GenericCrafter("phase-weaver"){{ @@ -453,7 +466,7 @@ public class Blocks implements ContentList{ consumes.items(new ItemStack(Items.thorium, 4), new ItemStack(Items.sand, 10)); consumes.power(5f); - int bottomRegion = addr(name + "-bottom"), weaveRegion = addr(name + "-weave"); + int bottomRegion = reg("-bottom"), weaveRegion = reg("-weave"); drawer = tile -> { GenericCrafterEntity entity = tile.entity(); @@ -499,7 +512,7 @@ public class Blocks implements ContentList{ consumes.items(new ItemStack(Items.titanium, 2), new ItemStack(Items.lead, 4), new ItemStack(Items.silicon, 3), new ItemStack(Items.copper, 3)); }}; - cryofluidMixer = new LiquidMixer("cryofluidmixer"){{ + cryofluidMixer = new GenericCrafter("cryofluidmixer"){{ requirements(Category.crafting, ItemStack.with(Items.lead, 130, Items.silicon, 80, Items.thorium, 90)); outputLiquid = new LiquidStack(Liquids.cryofluid, 0.3f); craftTime = 5f; @@ -514,6 +527,27 @@ public class Blocks implements ContentList{ consumes.power(1f); consumes.item(Items.titanium); consumes.liquid(Liquids.water, 0.3f); + + int liquidRegion = reg("-liquid"), topRegion = reg("-top"), bottomRegion = reg("-bottom"); + + drawIcons = () -> new TextureRegion[]{Core.atlas.find(name + "-bottom"), Core.atlas.find(name + "-top")}; + + drawer = tile -> { + LiquidModule mod = tile.entity.liquids; + + int rotation = rotate ? tile.getRotation() * 90 : 0; + + Draw.rect(reg(bottomRegion), tile.drawx(), tile.drawy(), rotation); + + if(mod.total() > 0.001f){ + Draw.color(outputLiquid.liquid.color); + Draw.alpha(mod.get(outputLiquid.liquid) / liquidCapacity); + Draw.rect(reg(liquidRegion), tile.drawx(), tile.drawy(), rotation); + Draw.color(); + } + + Draw.rect(reg(topRegion), tile.drawx(), tile.drawy(), rotation); + }; }}; blastMixer = new GenericCrafter("blast-mixer"){{ @@ -584,7 +618,7 @@ public class Blocks implements ContentList{ consumes.liquid(Liquids.water, 0.15f); }}; - sporePress = new Compressor("spore-press"){{ + sporePress = new GenericCrafter("spore-press"){{ requirements(Category.crafting, ItemStack.with(Items.lead, 70, Items.silicon, 60)); liquidCapacity = 60f; craftTime = 20f; @@ -595,9 +629,28 @@ public class Blocks implements ContentList{ consumes.item(Items.sporePod, 1); consumes.power(0.60f); + + int[] frameRegions = new int[3]; + for(int i = 0; i < 3; i++){ + frameRegions[i] = reg("-frame" + i); + } + + int liquidRegion = reg("-liquid"); + int topRegion =reg("-top"); + + drawer = tile -> { + GenericCrafterEntity entity = tile.entity(); + + Draw.rect(region, tile.drawx(), tile.drawy()); + Draw.rect(reg(frameRegions[(int) Mathf.absin(entity.totalProgress, 5f, 2.999f)]), tile.drawx(), tile.drawy()); + Draw.color(Color.CLEAR, tile.entity.liquids.current().color, tile.entity.liquids.total() / liquidCapacity); + Draw.rect(reg(liquidRegion), tile.drawx(), tile.drawy()); + Draw.color(); + Draw.rect(reg(topRegion), tile.drawx(), tile.drawy()); + }; }}; - pulverizer = new Pulverizer("pulverizer"){{ + pulverizer = new GenericCrafter("pulverizer"){{ requirements(Category.crafting, ItemStack.with(Items.copper, 60, Items.lead, 50)); outputItem = new ItemStack(Items.sand, 1); craftEffect = Fx.pulverize; @@ -607,6 +660,15 @@ public class Blocks implements ContentList{ consumes.item(Items.scrap, 1); consumes.power(0.50f); + + int rotatorRegion = reg("-rotator"); + + drawer = tile -> { + GenericCrafterEntity entity = tile.entity(); + + Draw.rect(region, tile.drawx(), tile.drawy()); + Draw.rect(reg(rotatorRegion), tile.drawx(), tile.drawy(), entity.totalProgress * 2f); + }; }}; incinerator = new Incinerator("incinerator"){{ diff --git a/core/src/io/anuke/mindustry/world/Block.java b/core/src/io/anuke/mindustry/world/Block.java index 48eca8064f..b87c6f286b 100644 --- a/core/src/io/anuke/mindustry/world/Block.java +++ b/core/src/io/anuke/mindustry/world/Block.java @@ -334,9 +334,9 @@ public class Block extends BlockStorage{ } } - /**Adds a region by name to be loaded. Returns an ID to looks this region up by in {@link #reg(int)}.*/ - protected int addr(String name){ - cacheRegionStrings.add(name); + /**Adds a region by name to be loaded, with the final name "{name}-suffix". Returns an ID to looks this region up by in {@link #reg(int)}.*/ + protected int reg(String suffix){ + cacheRegionStrings.add(name + suffix); return cacheRegionStrings.size - 1; } diff --git a/core/src/io/anuke/mindustry/world/blocks/production/Compressor.java b/core/src/io/anuke/mindustry/world/blocks/production/Compressor.java deleted file mode 100644 index 3f3da8ab92..0000000000 --- a/core/src/io/anuke/mindustry/world/blocks/production/Compressor.java +++ /dev/null @@ -1,48 +0,0 @@ -package io.anuke.mindustry.world.blocks.production; - -import io.anuke.arc.Core; -import io.anuke.arc.graphics.Color; -import io.anuke.arc.graphics.g2d.Draw; -import io.anuke.arc.graphics.g2d.TextureRegion; -import io.anuke.arc.math.Mathf; -import io.anuke.mindustry.world.Tile; - -public class Compressor extends GenericCrafter{ - protected TextureRegion liquidRegion, topRegion; - protected TextureRegion[] frameRegions; - - public Compressor(String name){ - super(name); - hasLiquids = true; - } - - @Override - public void load(){ - super.load(); - - frameRegions = new TextureRegion[3]; - for(int i = 0; i < 3; i++){ - frameRegions[i] = Core.atlas.find(name + "-frame" + i); - } - - liquidRegion = Core.atlas.find(name + "-liquid"); - topRegion = Core.atlas.find(name + "-top"); - } - - @Override - public void draw(Tile tile){ - GenericCrafterEntity entity = tile.entity(); - - Draw.rect(region, tile.drawx(), tile.drawy()); - Draw.rect(frameRegions[(int) Mathf.absin(entity.totalProgress, 5f, 2.999f)], tile.drawx(), tile.drawy()); - Draw.color(Color.CLEAR, tile.entity.liquids.current().color, tile.entity.liquids.total() / liquidCapacity); - Draw.rect(liquidRegion, tile.drawx(), tile.drawy()); - Draw.color(); - Draw.rect(topRegion, tile.drawx(), tile.drawy()); - } - - @Override - public TextureRegion[] generateIcons(){ - return new TextureRegion[]{Core.atlas.find(name), Core.atlas.find(name + "-top")}; - } -} diff --git a/core/src/io/anuke/mindustry/world/blocks/production/Drill.java b/core/src/io/anuke/mindustry/world/blocks/production/Drill.java index 7b4713aeb7..4de14c8b72 100644 --- a/core/src/io/anuke/mindustry/world/blocks/production/Drill.java +++ b/core/src/io/anuke/mindustry/world/blocks/production/Drill.java @@ -33,7 +33,6 @@ public class Drill extends Block{ protected final static float hardnessDrillMultiplier = 50f; protected final int timerDump = timers++; - protected final Array drawTiles = new Array<>(); protected final ObjectIntMap oreCount = new ObjectIntMap<>(); protected final Array itemArray = new Array<>(); @@ -270,14 +269,14 @@ public class Drill extends Block{ } public static class DrillEntity extends TileEntity{ - public float progress; - public int index; - public float warmup; - public float drillTime; - public float lastDrillSpeed; + float progress; + int index; + float warmup; + float drillTime; + float lastDrillSpeed; - public int dominantItems; - public Item dominantItem; + int dominantItems; + Item dominantItem; } } diff --git a/core/src/io/anuke/mindustry/world/blocks/production/GenericCrafter.java b/core/src/io/anuke/mindustry/world/blocks/production/GenericCrafter.java index f7d94cd6c2..6951b1d107 100644 --- a/core/src/io/anuke/mindustry/world/blocks/production/GenericCrafter.java +++ b/core/src/io/anuke/mindustry/world/blocks/production/GenericCrafter.java @@ -1,6 +1,8 @@ package io.anuke.mindustry.world.blocks.production; import io.anuke.arc.function.Consumer; +import io.anuke.arc.function.Supplier; +import io.anuke.arc.graphics.g2d.TextureRegion; import io.anuke.arc.math.Mathf; import io.anuke.arc.util.Time; import io.anuke.mindustry.content.Fx; @@ -31,6 +33,7 @@ public class GenericCrafter extends Block{ protected float updateEffectChance = 0.04f; protected Consumer drawer = null; + protected Supplier drawIcons = null; public GenericCrafter(String name){ super(name); @@ -62,6 +65,12 @@ public class GenericCrafter extends Block{ } } + + @Override + public TextureRegion[] generateIcons(){ + return drawIcons == null ? super.generateIcons() : drawIcons.get(); + } + @Override public void update(Tile tile){ GenericCrafterEntity entity = tile.entity(); @@ -122,6 +131,8 @@ public class GenericCrafter extends Block{ return itemCapacity; } + + public static class GenericCrafterEntity extends TileEntity{ public float progress; public float totalProgress; diff --git a/core/src/io/anuke/mindustry/world/blocks/production/LiquidMixer.java b/core/src/io/anuke/mindustry/world/blocks/production/LiquidMixer.java deleted file mode 100644 index 6d2596890e..0000000000 --- a/core/src/io/anuke/mindustry/world/blocks/production/LiquidMixer.java +++ /dev/null @@ -1,47 +0,0 @@ -package io.anuke.mindustry.world.blocks.production; - -import io.anuke.arc.Core; -import io.anuke.arc.graphics.g2d.Draw; -import io.anuke.arc.graphics.g2d.TextureRegion; -import io.anuke.mindustry.world.Tile; -import io.anuke.mindustry.world.modules.LiquidModule; - -public class LiquidMixer extends GenericCrafter{ - protected TextureRegion liquidRegion, bottomRegion, topRegion; - - public LiquidMixer(String name){ - super(name); - } - - @Override - public void load(){ - super.load(); - - liquidRegion = Core.atlas.find(name + "-liquid"); - topRegion = Core.atlas.find(name + "-top"); - bottomRegion = Core.atlas.find(name + "-bottom"); - } - - @Override - public TextureRegion[] generateIcons(){ - return new TextureRegion[]{Core.atlas.find(name + "-bottom"), Core.atlas.find(name + "-top")}; - } - - @Override - public void draw(Tile tile){ - LiquidModule mod = tile.entity.liquids; - - int rotation = rotate ? tile.getRotation() * 90 : 0; - - Draw.rect(bottomRegion, tile.drawx(), tile.drawy(), rotation); - - if(mod.total() > 0.001f){ - Draw.color(outputLiquid.liquid.color); - Draw.alpha(mod.get(outputLiquid.liquid) / liquidCapacity); - Draw.rect(liquidRegion, tile.drawx(), tile.drawy(), rotation); - Draw.color(); - } - - Draw.rect(topRegion, tile.drawx(), tile.drawy(), rotation); - } -} diff --git a/core/src/io/anuke/mindustry/world/blocks/production/PlastaniumCompressor.java b/core/src/io/anuke/mindustry/world/blocks/production/PlastaniumCompressor.java deleted file mode 100644 index 1c76b5b821..0000000000 --- a/core/src/io/anuke/mindustry/world/blocks/production/PlastaniumCompressor.java +++ /dev/null @@ -1,33 +0,0 @@ -package io.anuke.mindustry.world.blocks.production; - -import io.anuke.arc.Core; -import io.anuke.arc.graphics.g2d.TextureRegion; -import io.anuke.mindustry.world.Tile; -import io.anuke.arc.graphics.g2d.Draw; -import io.anuke.arc.math.Mathf; - -public class PlastaniumCompressor extends GenericCrafter{ - protected TextureRegion topRegion; - - public PlastaniumCompressor(String name){ - super(name); - } - - @Override - public void load(){ - super.load(); - - topRegion = Core.atlas.find(name + "-top"); - } - - @Override - public void draw(Tile tile){ - super.draw(tile); - - GenericCrafterEntity entity = tile.entity(); - - Draw.alpha(Mathf.absin(entity.totalProgress, 3f, 0.9f) * entity.warmup); - Draw.rect(topRegion, tile.drawx(), tile.drawy()); - Draw.reset(); - } -} diff --git a/core/src/io/anuke/mindustry/world/blocks/production/Pulverizer.java b/core/src/io/anuke/mindustry/world/blocks/production/Pulverizer.java deleted file mode 100644 index d15d024647..0000000000 --- a/core/src/io/anuke/mindustry/world/blocks/production/Pulverizer.java +++ /dev/null @@ -1,35 +0,0 @@ -package io.anuke.mindustry.world.blocks.production; - -import io.anuke.arc.Core; -import io.anuke.arc.graphics.g2d.TextureRegion; -import io.anuke.mindustry.world.Tile; -import io.anuke.arc.graphics.g2d.Draw; - -public class Pulverizer extends GenericCrafter{ - protected TextureRegion rotatorRegion; - - public Pulverizer(String name){ - super(name); - hasItems = true; - } - - @Override - public void load(){ - super.load(); - - rotatorRegion = Core.atlas.find(name + "-rotator"); - } - - @Override - public void draw(Tile tile){ - GenericCrafterEntity entity = tile.entity(); - - Draw.rect(region, tile.drawx(), tile.drawy()); - Draw.rect(rotatorRegion, tile.drawx(), tile.drawy(), entity.totalProgress * 2f); - } - - @Override - public TextureRegion[] generateIcons(){ - return new TextureRegion[]{Core.atlas.find(name), Core.atlas.find(name + "-rotator")}; - } -} diff --git a/core/src/io/anuke/mindustry/world/blocks/production/Separator.java b/core/src/io/anuke/mindustry/world/blocks/production/Separator.java index 8adc08f827..911e1a71ff 100644 --- a/core/src/io/anuke/mindustry/world/blocks/production/Separator.java +++ b/core/src/io/anuke/mindustry/world/blocks/production/Separator.java @@ -1,10 +1,8 @@ package io.anuke.mindustry.world.blocks.production; -import io.anuke.arc.Core; import io.anuke.arc.graphics.Color; import io.anuke.arc.graphics.g2d.Draw; import io.anuke.arc.graphics.g2d.Lines; -import io.anuke.arc.graphics.g2d.TextureRegion; import io.anuke.arc.math.Mathf; import io.anuke.mindustry.entities.type.TileEntity; import io.anuke.mindustry.type.Item; @@ -30,7 +28,7 @@ public class Separator extends Block{ protected float spinnerSpeed = 2f; protected Color color = Color.valueOf("858585"); - protected TextureRegion liquidRegion; + protected int liquidRegion; public Separator(String name){ super(name); @@ -38,13 +36,8 @@ public class Separator extends Block{ solid = true; hasItems = true; hasLiquids = true; - } - @Override - public void load(){ - super.load(); - - liquidRegion = Core.atlas.find(name + "-liquid"); + liquidRegion = reg("liquid"); } @Override @@ -67,7 +60,7 @@ public class Separator extends Block{ Draw.color(tile.entity.liquids.current().color); Draw.alpha(tile.entity.liquids.total() / liquidCapacity); - Draw.rect(liquidRegion, tile.drawx(), tile.drawy()); + Draw.rect(reg(liquidRegion), tile.drawx(), tile.drawy()); Draw.color(color); Lines.stroke(spinnerThickness);