diff --git a/core/assets-raw/sprites/blocks/distribution/cross-full.png b/core/assets-raw/sprites/blocks/distribution/cross-full.png new file mode 100644 index 0000000000..916e18cfd2 Binary files /dev/null and b/core/assets-raw/sprites/blocks/distribution/cross-full.png differ diff --git a/core/assets-raw/sprites/blocks/distribution/inverted-sorter.png b/core/assets-raw/sprites/blocks/distribution/inverted-sorter.png index e023e20061..47e4ed20c9 100644 Binary files a/core/assets-raw/sprites/blocks/distribution/inverted-sorter.png and b/core/assets-raw/sprites/blocks/distribution/inverted-sorter.png differ diff --git a/core/assets-raw/sprites/blocks/distribution/sorter.png b/core/assets-raw/sprites/blocks/distribution/sorter.png index a4c8b37e59..8bbe0fb50a 100644 Binary files a/core/assets-raw/sprites/blocks/distribution/sorter.png and b/core/assets-raw/sprites/blocks/distribution/sorter.png differ diff --git a/core/assets-raw/sprites/blocks/production/disassembler-bottom.png b/core/assets-raw/sprites/blocks/production/disassembler-bottom.png new file mode 100644 index 0000000000..7337b1d716 Binary files /dev/null and b/core/assets-raw/sprites/blocks/production/disassembler-bottom.png differ diff --git a/core/assets-raw/sprites/blocks/production/disassembler-liquid.png b/core/assets-raw/sprites/blocks/production/disassembler-liquid.png deleted file mode 100644 index 88006fc498..0000000000 Binary files a/core/assets-raw/sprites/blocks/production/disassembler-liquid.png and /dev/null differ diff --git a/core/assets-raw/sprites/blocks/production/disassembler-spinner.png b/core/assets-raw/sprites/blocks/production/disassembler-spinner.png index 8a7c2bd606..63758c0e82 100644 Binary files a/core/assets-raw/sprites/blocks/production/disassembler-spinner.png and b/core/assets-raw/sprites/blocks/production/disassembler-spinner.png differ diff --git a/core/assets-raw/sprites/blocks/production/disassembler.png b/core/assets-raw/sprites/blocks/production/disassembler.png index 4e4a4d3433..b99ebbd598 100644 Binary files a/core/assets-raw/sprites/blocks/production/disassembler.png and b/core/assets-raw/sprites/blocks/production/disassembler.png differ diff --git a/core/assets-raw/sprites/blocks/production/melter-bottom.png b/core/assets-raw/sprites/blocks/production/melter-bottom.png new file mode 100644 index 0000000000..a2dd7b5e0c Binary files /dev/null and b/core/assets-raw/sprites/blocks/production/melter-bottom.png differ diff --git a/core/assets-raw/sprites/blocks/production/melter-liquid.png b/core/assets-raw/sprites/blocks/production/melter-liquid.png deleted file mode 100644 index 19d66fa18a..0000000000 Binary files a/core/assets-raw/sprites/blocks/production/melter-liquid.png and /dev/null differ diff --git a/core/assets-raw/sprites/blocks/production/melter.png b/core/assets-raw/sprites/blocks/production/melter.png index 304f7119a5..90e833e2f5 100644 Binary files a/core/assets-raw/sprites/blocks/production/melter.png and b/core/assets-raw/sprites/blocks/production/melter.png differ diff --git a/core/assets-raw/sprites/blocks/production/separator-bottom.png b/core/assets-raw/sprites/blocks/production/separator-bottom.png new file mode 100644 index 0000000000..a100086fe3 Binary files /dev/null and b/core/assets-raw/sprites/blocks/production/separator-bottom.png differ diff --git a/core/assets-raw/sprites/blocks/production/separator-liquid.png b/core/assets-raw/sprites/blocks/production/separator-liquid.png deleted file mode 100644 index 0f81574062..0000000000 Binary files a/core/assets-raw/sprites/blocks/production/separator-liquid.png and /dev/null differ diff --git a/core/assets-raw/sprites/blocks/production/separator-spinner.png b/core/assets-raw/sprites/blocks/production/separator-spinner.png index e09e119c3d..310c92c020 100644 Binary files a/core/assets-raw/sprites/blocks/production/separator-spinner.png and b/core/assets-raw/sprites/blocks/production/separator-spinner.png differ diff --git a/core/assets-raw/sprites/blocks/production/separator.png b/core/assets-raw/sprites/blocks/production/separator.png index cefbb02633..20c9e6b72f 100644 Binary files a/core/assets-raw/sprites/blocks/production/separator.png and b/core/assets-raw/sprites/blocks/production/separator.png differ diff --git a/core/assets-raw/sprites/blocks/sandbox/item-source.png b/core/assets-raw/sprites/blocks/sandbox/item-source.png index 98dc16ac3c..21c254cba5 100644 Binary files a/core/assets-raw/sprites/blocks/sandbox/item-source.png and b/core/assets-raw/sprites/blocks/sandbox/item-source.png differ diff --git a/core/src/mindustry/content/Blocks.java b/core/src/mindustry/content/Blocks.java index f306522c57..d087f4ae94 100644 --- a/core/src/mindustry/content/Blocks.java +++ b/core/src/mindustry/content/Blocks.java @@ -8,8 +8,8 @@ import mindustry.entities.*; import mindustry.entities.abilities.*; import mindustry.entities.bullet.*; import mindustry.entities.effect.*; -import mindustry.entities.part.*; import mindustry.entities.part.DrawPart.*; +import mindustry.entities.part.*; import mindustry.entities.pattern.*; import mindustry.gen.*; import mindustry.graphics.*; @@ -1042,7 +1042,7 @@ public class Blocks{ craftTime = 10f; hasLiquids = hasPower = true; - drawer = new DrawMulti(new DrawDefault(), new DrawLiquidRegion()); + drawer = new DrawMulti(new DrawRegion("-bottom"), new DrawLiquidTile(), new DrawDefault()); consumePower(1f); consumeItem(Items.scrap, 1); @@ -1062,6 +1062,8 @@ public class Blocks{ consumePower(1.1f); consumeLiquid(Liquids.slag, 4f / 60f); + + drawer = new DrawMulti(new DrawRegion("-bottom"), new DrawLiquidTile(), new DrawRegion("-spinner", 3), new DrawDefault()); }}; disassembler = new Separator("disassembler"){{ @@ -1080,6 +1082,8 @@ public class Blocks{ consumePower(4f); consumeItem(Items.scrap); consumeLiquid(Liquids.slag, 0.12f); + + drawer = new DrawMulti(new DrawRegion("-bottom"), new DrawLiquidTile(), new DrawRegion("-spinner", 3), new DrawDefault()); }}; sporePress = new GenericCrafter("spore-press"){{ diff --git a/core/src/mindustry/world/blocks/distribution/Sorter.java b/core/src/mindustry/world/blocks/distribution/Sorter.java index b37195173c..a400ef8c20 100644 --- a/core/src/mindustry/world/blocks/distribution/Sorter.java +++ b/core/src/mindustry/world/blocks/distribution/Sorter.java @@ -1,5 +1,6 @@ package mindustry.world.blocks.distribution; +import arc.*; import arc.graphics.g2d.*; import arc.math.*; import arc.scene.ui.layout.*; @@ -49,6 +50,11 @@ public class Sorter extends Block{ return build == null || build.sortItem == null ? 0 : build.sortItem.color.rgba(); } + @Override + protected TextureRegion[] icons(){ + return new TextureRegion[]{Core.atlas.find("source-bottom"), region}; + } + public class SorterBuild extends Building{ public @Nullable Item sortItem; @@ -63,15 +69,16 @@ public class Sorter extends Block{ @Override public void draw(){ - super.draw(); if(sortItem == null){ - Draw.rect("cross", x, y); + Draw.rect("cross-full", x, y); }else{ Draw.color(sortItem.color); - Draw.rect("center", x, y); + Fill.square(x, y, tilesize/2f - 0.00001f); Draw.color(); } + + super.draw(); } @Override diff --git a/core/src/mindustry/world/blocks/production/Separator.java b/core/src/mindustry/world/blocks/production/Separator.java index 79d3741691..e4c2a2a146 100644 --- a/core/src/mindustry/world/blocks/production/Separator.java +++ b/core/src/mindustry/world/blocks/production/Separator.java @@ -1,17 +1,16 @@ package mindustry.world.blocks.production; -import arc.*; import arc.graphics.g2d.*; import arc.math.*; import arc.util.*; import arc.util.io.*; -import mindustry.annotations.Annotations.*; +import mindustry.entities.units.*; import mindustry.gen.*; -import mindustry.graphics.*; import mindustry.logic.*; import mindustry.type.*; import mindustry.world.*; import mindustry.world.consumers.*; +import mindustry.world.draw.*; import mindustry.world.meta.*; /** @@ -23,9 +22,7 @@ public class Separator extends Block{ public ItemStack[] results; public float craftTime; - public @Load("@-liquid") TextureRegion liquidRegion; - public @Load("@-spinner") TextureRegion spinnerRegion; - public float spinnerSpeed = 3f; + public DrawBlock drawer = new DrawDefault(); public Separator(String name){ super(name); @@ -51,6 +48,23 @@ public class Separator extends Block{ consItems = findConsumer(c -> c instanceof ConsumeItems); } + @Override + public void load(){ + super.load(); + + drawer.load(this); + } + + @Override + public void drawPlanRegion(BuildPlan plan, Eachable<BuildPlan> list){ + drawer.drawPlan(this, plan, list); + } + + @Override + public TextureRegion[] icons(){ + return drawer.finalIcons(this); + } + public class SeparatorBuild extends Building{ public float progress; public float totalProgress; @@ -79,6 +93,7 @@ public class Separator extends Block{ return total < itemCapacity && enabled; } + /* @Override public void draw(){ super.draw(); @@ -88,6 +103,32 @@ public class Separator extends Block{ if(Core.atlas.isFound(spinnerRegion)){ Draw.rect(spinnerRegion, x, y, totalProgress * spinnerSpeed); } + }*/ + + @Override + public void draw(){ + drawer.draw(this); + } + + @Override + public void drawLight(){ + super.drawLight(); + drawer.drawLight(this); + } + + @Override + public float warmup(){ + return warmup; + } + + @Override + public float progress(){ + return progress; + } + + @Override + public float totalProgress(){ + return totalProgress; } @Override diff --git a/core/src/mindustry/world/blocks/sandbox/ItemSource.java b/core/src/mindustry/world/blocks/sandbox/ItemSource.java index 06afbd3e66..0a7461a7ec 100644 --- a/core/src/mindustry/world/blocks/sandbox/ItemSource.java +++ b/core/src/mindustry/world/blocks/sandbox/ItemSource.java @@ -1,5 +1,6 @@ package mindustry.world.blocks.sandbox; +import arc.*; import arc.graphics.g2d.*; import arc.scene.ui.layout.*; import arc.util.*; @@ -45,6 +46,11 @@ public class ItemSource extends Block{ stats.add(Stat.output, itemsPerSecond, StatUnit.itemsSecond); } + @Override + protected TextureRegion[] icons(){ + return new TextureRegion[]{Core.atlas.find("source-bottom"), region}; + } + @Override public void drawPlanConfig(BuildPlan plan, Eachable<BuildPlan> list){ drawPlanConfigCenter(plan, plan.config, "center", true); @@ -61,15 +67,15 @@ public class ItemSource extends Block{ @Override public void draw(){ - super.draw(); - if(outputItem == null){ - Draw.rect("cross", x, y); + Draw.rect("cross-full", x, y); }else{ Draw.color(outputItem.color); - Draw.rect("center", x, y); + Fill.square(x, y, tilesize/2f - 0.00001f); Draw.color(); } + + super.draw(); } @Override diff --git a/core/src/mindustry/world/draw/DrawRegion.java b/core/src/mindustry/world/draw/DrawRegion.java index 492310eafb..26416abaa5 100644 --- a/core/src/mindustry/world/draw/DrawRegion.java +++ b/core/src/mindustry/world/draw/DrawRegion.java @@ -21,6 +21,11 @@ public class DrawRegion extends DrawBlock{ this.suffix = suffix; } + public DrawRegion(String suffix, float rotateSpeed){ + this.suffix = suffix; + this.rotateSpeed = rotateSpeed; + } + public DrawRegion(){ }