From 57e5acdbd775c4d99a06b7387b65018e0aa34325 Mon Sep 17 00:00:00 2001 From: Anuken Date: Thu, 9 Dec 2021 17:16:32 -0500 Subject: [PATCH] Vent condenser block --- .../pressure-turbine-rotator-blur-green.png | Bin 12575 -> 0 bytes .../blocks/production/electric-heater.png | Bin 0 -> 1045 bytes ...eater-heat.png => eletric-heater-heat.png} | Bin .../blocks/production/slag-heater-bottom.png | Bin 223 -> 0 bytes .../sprites/blocks/production/slag-heater.png | Bin 1113 -> 0 bytes .../vent-condenser-rotator-blur.png | Bin 0 -> 11923 bytes .../production/vent-condenser-rotator.png | Bin 0 -> 825 bytes .../blocks/production/vent-condenser.png | Bin 0 -> 2371 bytes .../turrets/fracture/fracture-glow-heat.png | Bin 0 -> 7932 bytes .../blocks/turrets/fracture/fracture-heat.png | Bin 0 -> 3606 bytes .../turrets/{ => fracture}/fracture.png | Bin .../sprites/effects/square-shadow.png | Bin 0 -> 2220 bytes core/assets/icons/icons.properties | 3 + core/assets/logicids.dat | Bin 3728 -> 3748 bytes core/src/mindustry/content/Blocks.java | 118 +++++++++++------- .../src/mindustry/content/ErekirTechTree.java | 30 ++--- core/src/mindustry/content/TechTree.java | 8 ++ core/src/mindustry/content/UnitTypes.java | 2 +- core/src/mindustry/type/UnitType.java | 9 +- .../mindustry/ui/dialogs/ResearchDialog.java | 2 +- .../world/blocks/heat/HeatConductor.java | 80 ++++++++++++ .../world/blocks/power/ThermalGenerator.java | 16 +-- .../blocks/production/AttributeCrafter.java | 17 ++- .../blocks/production/GenericCrafter.java | 7 +- core/src/mindustry/world/draw/DrawRegion.java | 2 + core/src/mindustry/world/draw/DrawTurret.java | 3 + 26 files changed, 222 insertions(+), 75 deletions(-) delete mode 100644 core/assets-raw/sprites/blocks/power/pressure-turbine-rotator-blur-green.png create mode 100644 core/assets-raw/sprites/blocks/production/electric-heater.png rename core/assets-raw/sprites/blocks/production/{slag-heater-heat.png => eletric-heater-heat.png} (100%) delete mode 100644 core/assets-raw/sprites/blocks/production/slag-heater-bottom.png delete mode 100644 core/assets-raw/sprites/blocks/production/slag-heater.png create mode 100644 core/assets-raw/sprites/blocks/production/vent-condenser-rotator-blur.png create mode 100644 core/assets-raw/sprites/blocks/production/vent-condenser-rotator.png create mode 100644 core/assets-raw/sprites/blocks/production/vent-condenser.png create mode 100644 core/assets-raw/sprites/blocks/turrets/fracture/fracture-glow-heat.png create mode 100644 core/assets-raw/sprites/blocks/turrets/fracture/fracture-heat.png rename core/assets-raw/sprites/blocks/turrets/{ => fracture}/fracture.png (100%) create mode 100644 core/assets-raw/sprites/effects/square-shadow.png create mode 100644 core/src/mindustry/world/blocks/heat/HeatConductor.java diff --git a/core/assets-raw/sprites/blocks/power/pressure-turbine-rotator-blur-green.png b/core/assets-raw/sprites/blocks/power/pressure-turbine-rotator-blur-green.png deleted file mode 100644 index 448225de089e6cc21025f4344b3d5b4ffd4dc8d8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12575 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 ZDI8t53`Wz|K1-zlX-Nf%8ZpD*{{uR^$gcnZ diff --git a/core/assets-raw/sprites/blocks/production/electric-heater.png b/core/assets-raw/sprites/blocks/production/electric-heater.png new file mode 100644 index 0000000000000000000000000000000000000000..e90c2b62a8d6168a738497e426bd4f612b64269d GIT binary patch literal 1045 zcmV+w1nT>VP)Px&&q+izn%%ccWXalP~%)Ry%Q8=n%^ZtOp>*r-au8szZz*I0Rw?wIsn(he;VsAyy(|3Rr~( zVp!jI(70j`aKSjceLL*Ai5*x;bXe|<+pH1&>X71$_A@I8W4a`*jPQqJb~E_%}=41BO&JYA-dIiq-@T3hZG4ZaPglqo=A`bHm}cyU^v6L$LW%K2UI=JONWqU~p9Id} z5)x4OTWq5oU`Ya($T&~%(Sn3kTO~mWCRKo&9qx<z|wdJgamgjB*D^n2cLx5_09b$XMAj3K~!N+4qbM2Q$VpY@1 zw%B}mSPuCrP_iI0lA~A;C?!F1wjfCWYJ9GRm5>lVgX}wKNQf?pp>gjUU!#tP8EH+;t0+6q2=>do=v?9Ovyy=d=e0kfO0^t!Kt;H8_Gp0QVwtqXwmqz)FJx+0*C@Fjo0cBs}#}G;u4_}aNFy# zEjV^P5;&w0L#j+BL!h*&;fz0rj1;mtKudz9;#yh5VV~_2Oj_X(HNF}uQ`$C*%OFI; zmHbfzB_SDWo11TqrOqJKIHci&^Ms}ZNDORELNfvo!&;KigaC~}tw{I#XYzCE^WW9q~RKa>;h8<_6*(&j8V*V;@)E3`hrQo UchRd&Ku0ooy85}Sb4q9e07Sh;OaK4? diff --git a/core/assets-raw/sprites/blocks/production/slag-heater.png b/core/assets-raw/sprites/blocks/production/slag-heater.png deleted file mode 100644 index d559a894d4508d783c9daa29bdb01375496614dc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1113 zcmV-f1g86mP)Px(6G=otRCt`tTRTo1K@fetBH;)~4u@nUd0QiAX zB+Oo3r#MLZkQ&%$)J5MDq+W6UAbPxt&D1`V0s#L-&<=@`B4}-;^qm!;1WJgIYa=Ft zIXpTYsTZV-boU`l6QZ%5TV7p>NHqegjO*{6a##?F~N#aJ4nXb zks`?hLTNF#Y?eUMPIf8mgA;+eUPA=RCf81tEC9p{ByA^3+LE@LJs0pZghk09Rx_^b z{M;p`0?&_FeE67bWLPal-l2hC;7G~;{saK)-oa*pW2FeLM^K$y+};H39G`qiWQLh5leOeHUU)Qz@kV77D zhJe-+LU23Z_uaeK_~f~3fNnU%;BK)^Vn9g|s4v&|-Gu1q0B9qEzrVPa1}PCrl{DYa zzD>xx_r`G?jWOo_?wVbvlp}0LL!2_=2nbAS@IUH298gs z*4}rp$UY#k4ewGSG&>+s`W>weR|JVih+;sjz^S!G?%S1Qq!`38phe-+vJdS41tcA4 zNnYCrE>i?|VM-9Aw%55WIC4Ewa7cqgC`|^3KyFb(k>7-k5TY?aD?-VRYi$jyWwcHx zQVRR1@zta@Q_JS$G$;~bH~mowa)u;VHaFiI3!OozaY(}jUchew#Pjnt00000NkvXXu0mjfvLElD diff --git a/core/assets-raw/sprites/blocks/production/vent-condenser-rotator-blur.png b/core/assets-raw/sprites/blocks/production/vent-condenser-rotator-blur.png new file mode 100644 index 0000000000000000000000000000000000000000..c0121f90bfca2ceb9c906fd51d2bff485ac9449d GIT binary patch literal 11923 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 D5}Ran literal 0 HcmV?d00001 diff --git a/core/assets-raw/sprites/blocks/production/vent-condenser.png b/core/assets-raw/sprites/blocks/production/vent-condenser.png new file mode 100644 index 0000000000000000000000000000000000000000..c663d143630e3c42df715bf2b8ed9cdbceac4d22 GIT binary patch literal 2371 zcmV-J3B2}+P)Px-{YgYYRCt{2UCnD%M-)HrA#U76x{IOB9vgDg@OUQ(M>iIc#Gt@h-h}Ao43irbfM>F?zuDPWA4oTNc#i9mv`@( zGr!+_z4}L>Dv0C*czs4J?wyVD*H;rt0=VQOBoW;2 zydp3e;cVrCDGiVBZXQ#JPzc~79}yB^A z(iLF3GqWb<8%1}=D(vP_NABpZr~#Z42v_0pc%mi_#nslb;=N0!P0xog z^W>c^-AI2CTuq=u>q-itnm~E$;NPS^;mxak z00201ZkBz{hb9QE;~#<+#)s3Va09~j#D9D@fsA<+qSx7_I7QwBzxR z2)+z;NrW8!X*pAO^=MF<9i<|08R>!uDgDDH*zyCC?E@%AYaakM<>yeOe>VRXpY>(3 zP8)1ZOY@G!pRN5D0O$FsY!^fAc=yKDk4|Xk=r!brkfUbQv8jEx7``hfAx~~z{MZCZ zA|Uw)Nrayt{G@V#LrM`+*ph5ie!vPM;384c1kFr`-e19#e8j=hj(4R=BHyjfQl^^f zBeXt+nxo)6+Vi*Gl{J^QQqiY1Aw+%%7V>?c+kn+4bDk1^{ad>;^)-#@M*(NMHhuxOk)}lc z>dNw92msI}5pvd$CezfA58yOGsYTEXNomHLXr5xyv9yTSXC0 z)Fr=7bYVfK4(`9aa~Qt^^?xKm=LKkDH$$7~yZ`|4`+53+UI+kSBeXB%1N2CMWiBX>`;J0b&U4iwK<;pbn9J5TWw|9Cr+#Jz6&fnd=hXyxQ;8h==0#g?k@Y#OjI= z6S_qU%_>$Kt7~=7tYIj%q6vx>At(6=%_>$Kt81|$xWNQV3o_3htyfOYb7+Emgoe;I znxmN~?@TkJG?HUwMU2~II&y+u{1=uawa1fYp1dn9NuJ!)aRZ^@raRK#&5ACW@@4kiKmd_be_`2_9zRuRNd1*0`*mzN?;K^Mt)ZEJlw zb8goA>ss@^8!=KkqQv(BYvnC=xlhQqu{k&O`*drk6uwi8m_-p1p%3JzN-Olfl`{Zk z%s7idAG#8fz>=obr&!L^Q4=MD(s_V3ri>-T`b7JISk3^50MyX$8#Z#RB6MLf#p;uJ zm`Z|mP!WoA!d?|Wz3dCx!5!L8H3M4r;5QOW&xTD?|{;M;t8eRAWb%KnyMJoi$HINYy_F*%oO1 z)5gjk%`H@d_Hl8S)Kd`{0^WK^nM=Hj3DX|*`^4zz^Y@$h4ux-T-Ss+SlWrY6)y#WF*Ypz z`a}p_Vd4{^)CXw7FIul_q8SO51mEyB=PgR1CROV%1@;LVe%v$)#wdrTSTxDr5$nQ6d*-< zmJ3kt|9IESHQVH9M9AfIjO{kk)Y#^lcJ^(lPsmArTQFZZDsUiisOofmH6b_o=y=_L zQh4~#+OMU^pJq^_9`(2xXo`G9tO)evXOkjmN0g>v=jAKc51S?*VHF{C?6wIJEW>&8 pxZgrVD)OyqOJ|;QieNo&{V$diTWsFD>2Lr5002ovPDHLkV1lCiaJ>Kk literal 0 HcmV?d00001 diff --git a/core/assets-raw/sprites/blocks/turrets/fracture/fracture-glow-heat.png b/core/assets-raw/sprites/blocks/turrets/fracture/fracture-glow-heat.png new file mode 100644 index 0000000000000000000000000000000000000000..8e58dcdf6d9c252962eb4a088e3df988ab4b7e5a GIT binary patch literal 7932 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 V+WjvHE$2TyE(7{12@y98{2#w!Jh%V= literal 0 HcmV?d00001 diff --git a/core/assets-raw/sprites/blocks/turrets/fracture/fracture-heat.png b/core/assets-raw/sprites/blocks/turrets/fracture/fracture-heat.png new file mode 100644 index 0000000000000000000000000000000000000000..07c199f4ac7708858b002ca2de4a20a5009e9182 GIT binary patch literal 3606 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 { - node(electrolyzer, () -> { - node(oxidationChamber, () -> { - node(atmosphericConcentrator, () -> { - node(cyanogenSynthesizer, () -> { + node(ventCondenser, () -> { + node(siliconArcFurnace, () -> { + node(electrolyzer, () -> { + node(oxidationChamber, () -> { + node(electricHeater, () -> { + node(atmosphericConcentrator, () -> { + node(cyanogenSynthesizer, () -> { - }); - }); + }); + }); - node(carbideCrucible, () -> { - node(surgeCrucible, () -> { - node(phaseSynthesizer, () -> { + node(carbideCrucible, () -> { + node(surgeCrucible, () -> { + node(phaseSynthesizer, () -> { + }); + }); }); }); }); - }); - node(slagIncinerator, () -> { - //when is this actually needed? - node(slagHeater, () -> { + node(slagIncinerator, () -> { + node(slagCentrifuge, () -> { }); diff --git a/core/src/mindustry/content/TechTree.java b/core/src/mindustry/content/TechTree.java index c77e786b32..0621e511d9 100644 --- a/core/src/mindustry/content/TechTree.java +++ b/core/src/mindustry/content/TechTree.java @@ -1,10 +1,12 @@ package mindustry.content; import arc.*; +import arc.scene.style.*; import arc.struct.*; import arc.util.*; import mindustry.ctype.*; import mindustry.game.Objectives.*; +import mindustry.gen.*; import mindustry.type.*; /** Class for storing a list of TechNodes with some utility tree builder methods; context dependent. See {@link SerpuloTechTree#load} source for example usage. */ @@ -75,6 +77,8 @@ public class TechTree{ public static class TechNode{ /** Depth in tech tree. */ public int depth; + /** Icon displayed in tech tree selector. */ + public @Nullable Drawable icon; /** Name for root node - used in tech tree selector. */ public @Nullable String name; /** Requirement node. */ @@ -111,6 +115,10 @@ public class TechTree{ all.add(this); } + public Drawable icon(){ + return icon == null ? Icon.tree : icon; + } + public String localizedName(){ return Core.bundle.get("techtree." + name); } diff --git a/core/src/mindustry/content/UnitTypes.java b/core/src/mindustry/content/UnitTypes.java index 9b01e985ef..df994eac68 100644 --- a/core/src/mindustry/content/UnitTypes.java +++ b/core/src/mindustry/content/UnitTypes.java @@ -995,7 +995,7 @@ public class UnitTypes{ accel = 0.08f; drag = 0.016f; flying = true; - hitSize = 9f; + hitSize = 10f; targetAir = false; engineOffset = 7.8f; range = 140f; diff --git a/core/src/mindustry/type/UnitType.java b/core/src/mindustry/type/UnitType.java index c43b820824..f8a9e780a7 100644 --- a/core/src/mindustry/type/UnitType.java +++ b/core/src/mindustry/type/UnitType.java @@ -71,6 +71,7 @@ public class UnitType extends UnlockableContent{ public boolean createWreck = true; public boolean useUnitCap = true; public boolean destructibleWreck = true; + public boolean squareShadow = false; public float groundLayer = Layer.groundUnit; public float payloadCapacity = 8; public float aimDst = -1f; @@ -496,7 +497,13 @@ public class UnitType extends UnlockableContent{ legBaseRegion = Core.atlas.find(name + "-leg-base", name + "-leg"); baseRegion = Core.atlas.find(name + "-base"); cellRegion = Core.atlas.find(name + "-cell", Core.atlas.find("power-cell")); - softShadowRegion = Core.atlas.find("circle-shadow"); + //when linear filtering is on, it's acceptable to use the relatively low-res 'particle' region + softShadowRegion = + squareShadow ? Core.atlas.find("square-shadow") : + hitSize <= 10f || (Core.settings != null && Core.settings.getBool("linear", true)) ? + Core.atlas.find("particle") : + Core.atlas.find("circle-shadow"); + outlineRegion = Core.atlas.find(name + "-outline"); shadowRegion = fullIcon; diff --git a/core/src/mindustry/ui/dialogs/ResearchDialog.java b/core/src/mindustry/ui/dialogs/ResearchDialog.java index fab74aa679..7d3d095994 100644 --- a/core/src/mindustry/ui/dialogs/ResearchDialog.java +++ b/core/src/mindustry/ui/dialogs/ResearchDialog.java @@ -48,7 +48,7 @@ public class ResearchDialog extends BaseDialog{ titleTable.clear(); titleTable.button(b -> { //TODO custom icon here. - b.image(Icon.tree).padRight(8).size(iconMed); + b.imageDraw(() -> root.node.icon()).padRight(8).size(iconMed); b.add().growX(); b.label(() -> root.node.localizedName()).color(Pal.accent); b.add().growX(); diff --git a/core/src/mindustry/world/blocks/heat/HeatConductor.java b/core/src/mindustry/world/blocks/heat/HeatConductor.java new file mode 100644 index 0000000000..67d8f6a75e --- /dev/null +++ b/core/src/mindustry/world/blocks/heat/HeatConductor.java @@ -0,0 +1,80 @@ +package mindustry.world.blocks.heat; + +import arc.graphics.g2d.*; +import arc.util.*; +import mindustry.entities.units.*; +import mindustry.gen.*; +import mindustry.graphics.*; +import mindustry.ui.*; +import mindustry.world.*; +import mindustry.world.draw.*; + +public class HeatConductor extends Block{ + public float visualMaxHeat = 10f; + public DrawBlock drawer = new DrawBlock(); + + public HeatConductor(String name){ + super(name); + update = solid = rotate = true; + size = 3; + } + + @Override + public void setBars(){ + super.setBars(); + + bars.add("heat", (HeatConductorBuild entity) -> new Bar("bar.heat", Pal.lightOrange, () -> entity.heat / visualMaxHeat)); + } + + @Override + public void load(){ + super.load(); + + drawer.load(this); + } + + @Override + public void drawRequestRegion(BuildPlan plan, Eachable list){ + drawer.drawPlan(this, plan, list); + } + + @Override + public TextureRegion[] icons(){ + return drawer.finalIcons(this); + } + + public class HeatConductorBuild extends Building implements HeatBlock{ + public float heat = 0f; + + @Override + public void draw(){ + drawer.drawBase(this); + } + + @Override + public void drawLight(){ + super.drawLight(); + drawer.drawLights(this); + } + + @Override + public void updateTile(){ + heat = calculateHeat(null); + } + + @Override + public float warmup(){ + return heat; + } + + @Override + public float heat(){ + return heat; + } + + @Override + public float heatFrac(){ + return heat / visualMaxHeat; + } + } +} diff --git a/core/src/mindustry/world/blocks/power/ThermalGenerator.java b/core/src/mindustry/world/blocks/power/ThermalGenerator.java index bb653323a3..422093d700 100644 --- a/core/src/mindustry/world/blocks/power/ThermalGenerator.java +++ b/core/src/mindustry/world/blocks/power/ThermalGenerator.java @@ -22,7 +22,7 @@ public class ThermalGenerator extends PowerGenerator{ public float displayEfficiencyScale = 1f; public boolean spinners = false; public boolean displayEfficiency = true; - public @Nullable LiquidStack liquidOutput; + public @Nullable LiquidStack outputLiquid; public Attribute attribute = Attribute.heat; public @Load("@-rotator") TextureRegion rotatorRegion; @@ -34,7 +34,7 @@ public class ThermalGenerator extends PowerGenerator{ @Override public void init(){ - if(liquidOutput != null){ + if(outputLiquid != null){ outputsLiquid = true; hasLiquids = true; } @@ -49,8 +49,8 @@ public class ThermalGenerator extends PowerGenerator{ stats.add(Stat.tiles, attribute, floating, size * size * displayEfficiencyScale, !displayEfficiency); - if(liquidOutput != null){ - stats.add(Stat.output, StatValues.liquid(liquidOutput.liquid, liquidOutput.amount * size * size * 60f, true)); + if(outputLiquid != null){ + stats.add(Stat.output, StatValues.liquid(outputLiquid.liquid, outputLiquid.amount * size * size * 60f, true)); } } @@ -88,10 +88,10 @@ public class ThermalGenerator extends PowerGenerator{ spinRotation += productionEfficiency * spinSpeed; - if(liquidOutput != null){ - float added = Math.min(productionEfficiency * delta() * liquidOutput.amount, liquidCapacity - liquids.get(liquidOutput.liquid)); - liquids.add(liquidOutput.liquid, added); - dumpLiquid(liquidOutput.liquid); + if(outputLiquid != null){ + float added = Math.min(productionEfficiency * delta() * outputLiquid.amount, liquidCapacity - liquids.get(outputLiquid.liquid)); + liquids.add(outputLiquid.liquid, added); + dumpLiquid(outputLiquid.liquid); } } diff --git a/core/src/mindustry/world/blocks/production/AttributeCrafter.java b/core/src/mindustry/world/blocks/production/AttributeCrafter.java index e11ba156ed..17a98870f6 100644 --- a/core/src/mindustry/world/blocks/production/AttributeCrafter.java +++ b/core/src/mindustry/world/blocks/production/AttributeCrafter.java @@ -1,8 +1,10 @@ package mindustry.world.blocks.production; import arc.*; +import mindustry.game.*; import mindustry.graphics.*; import mindustry.ui.*; +import mindustry.world.*; import mindustry.world.meta.*; /** A crafter that gains efficiency from attribute tiles. */ @@ -11,6 +13,9 @@ public class AttributeCrafter extends GenericCrafter{ public float baseEfficiency = 1f; public float boostScale = 1f; public float maxBoost = 1f; + public float minEfficiency = -1f; + public float displayEfficiencyScale = 1f; + public boolean displayEfficiency = true; public AttributeCrafter(String name){ super(name); @@ -18,6 +23,10 @@ public class AttributeCrafter extends GenericCrafter{ @Override public void drawPlace(int x, int y, int rotation, boolean valid){ + super.drawPlace(x, y, rotation, valid); + + if(!displayEfficiency) return; + drawPlaceText(Core.bundle.format("bar.efficiency", (int)((baseEfficiency + Math.min(maxBoost, boostScale * sumAttribute(attribute, x, y))) * 100f)), x, y, valid); } @@ -28,11 +37,17 @@ public class AttributeCrafter extends GenericCrafter{ bars.add("efficiency", (AttributeCrafterBuild entity) -> new Bar(() -> - Core.bundle.format("bar.efficiency", (int)(entity.efficiencyScale() * 100)), + Core.bundle.format("bar.efficiency", (int)(entity.efficiencyScale() * 100 * displayEfficiencyScale)), () -> Pal.lightOrange, entity::efficiencyScale)); } + @Override + public boolean canPlaceOn(Tile tile, Team team, int rotation){ + //make sure there's enough efficiency at this location + return tile.getLinkedTilesAs(this, tempTiles).sumf(other -> other.floor().attributes.get(attribute)) > minEfficiency; + } + @Override public void setStats(){ super.setStats(); diff --git a/core/src/mindustry/world/blocks/production/GenericCrafter.java b/core/src/mindustry/world/blocks/production/GenericCrafter.java index 91599aa142..f04bbf1314 100644 --- a/core/src/mindustry/world/blocks/production/GenericCrafter.java +++ b/core/src/mindustry/world/blocks/production/GenericCrafter.java @@ -30,6 +30,7 @@ public class GenericCrafter extends Block{ /** if true, crafters with multiple liquid outputs will dump excess when there's still space for at least one liquid type */ public boolean dumpExtraLiquid = true; + public boolean ignoreLiquidFullness = false; public float craftTime = 80; public Effect craftEffect = Fx.none; public Effect updateEffect = Fx.none; @@ -115,10 +116,6 @@ public class GenericCrafter extends Block{ super.init(); } - public void drawPlanBase(BuildPlan req, Eachable list){ - super.drawRequestRegion(req, list); - } - @Override public void drawRequestRegion(BuildPlan plan, Eachable list){ drawer.drawPlan(this, plan, list); @@ -164,7 +161,7 @@ public class GenericCrafter extends Block{ } } } - if(outputLiquids != null){ + if(outputLiquids != null && !ignoreLiquidFullness){ boolean allFull = true; for(var output : outputLiquids){ if(liquids.get(output.liquid) >= liquidCapacity - 0.001f){ diff --git a/core/src/mindustry/world/draw/DrawRegion.java b/core/src/mindustry/world/draw/DrawRegion.java index b575cac450..d7b4b0aabb 100644 --- a/core/src/mindustry/world/draw/DrawRegion.java +++ b/core/src/mindustry/world/draw/DrawRegion.java @@ -13,6 +13,7 @@ public class DrawRegion extends DrawBlock{ public TextureRegion region; public String suffix = ""; public boolean spinSprite = false; + public boolean drawPlan = true; public float rotateSpeed, x, y; /** Any number <=0 disables layer changes. */ public float layer = -1; @@ -38,6 +39,7 @@ public class DrawRegion extends DrawBlock{ @Override public void drawPlan(Block block, BuildPlan plan, Eachable list){ + if(!drawPlan) return; Draw.rect(region, plan.drawx(), plan.drawy()); } diff --git a/core/src/mindustry/world/draw/DrawTurret.java b/core/src/mindustry/world/draw/DrawTurret.java index b4abef4048..d1c54930b0 100644 --- a/core/src/mindustry/world/draw/DrawTurret.java +++ b/core/src/mindustry/world/draw/DrawTurret.java @@ -168,6 +168,7 @@ public class DrawTurret extends DrawBlock{ progress = interp.apply(progress); for(int i = 0; i < regions.length; i++){ + //can be null if drawRegion == false var region = regions[i]; float sign = i == 1 ? -1 : 1; Tmp.v1.set((x + moveX * progress) * sign, y + moveY * progress).rotate((build.rotation - 90)); @@ -218,6 +219,8 @@ public class DrawTurret extends DrawBlock{ regions = new TextureRegion[]{Core.atlas.find(block.name + suffix)}; outlines = new TextureRegion[]{Core.atlas.find(block.name + suffix + "-outline")}; } + }else{ + regions = new TextureRegion[1]; } heat = Core.atlas.find(block.name + suffix + "-heat");