From 0ede0dbf0c6aa36381b9ae2055a8d4f47d634148 Mon Sep 17 00:00:00 2001 From: Anuken Date: Tue, 28 Dec 2021 19:18:16 -0500 Subject: [PATCH] 5x5 burst drill --- .../drills/eruption-drill-arrow-blur.png | Bin 0 -> 919 bytes .../blocks/drills/eruption-drill-arrow.png | Bin 0 -> 258 bytes .../blocks/drills/eruption-drill-glow.png | Bin 0 -> 2705 bytes .../blocks/drills/eruption-drill-item.png | Bin 0 -> 685 bytes .../blocks/drills/eruption-drill-top.png | Bin 0 -> 2670 bytes .../sprites/blocks/drills/eruption-drill.png | Bin 0 -> 3931 bytes .../blocks/drills/impact-drill-rotator.png | Bin 889 -> 0 bytes .../sprites/blocks/drills/surge-drill.png | Bin 3037 -> 0 bytes core/assets/icons/icons.properties | 1 + core/assets/logicids.dat | Bin 3893 -> 3909 bytes core/src/mindustry/content/Blocks.java | 61 ++++++++++++------ .../src/mindustry/content/ErekirTechTree.java | 2 + core/src/mindustry/content/Fx.java | 31 +++++++-- core/src/mindustry/content/TechTree.java | 4 -- core/src/mindustry/entities/Effect.java | 9 +++ .../mindustry/entities/effect/WrapEffect.java | 40 ++++++++++++ core/src/mindustry/graphics/Drawf.java | 4 ++ .../world/blocks/production/BurstDrill.java | 26 +++++--- 18 files changed, 139 insertions(+), 39 deletions(-) create mode 100644 core/assets-raw/sprites/blocks/drills/eruption-drill-arrow-blur.png create mode 100644 core/assets-raw/sprites/blocks/drills/eruption-drill-arrow.png create mode 100644 core/assets-raw/sprites/blocks/drills/eruption-drill-glow.png create mode 100644 core/assets-raw/sprites/blocks/drills/eruption-drill-item.png create mode 100644 core/assets-raw/sprites/blocks/drills/eruption-drill-top.png create mode 100644 core/assets-raw/sprites/blocks/drills/eruption-drill.png delete mode 100644 core/assets-raw/sprites/blocks/drills/impact-drill-rotator.png delete mode 100644 core/assets-raw/sprites/blocks/drills/surge-drill.png create mode 100644 core/src/mindustry/entities/effect/WrapEffect.java diff --git a/core/assets-raw/sprites/blocks/drills/eruption-drill-arrow-blur.png b/core/assets-raw/sprites/blocks/drills/eruption-drill-arrow-blur.png new file mode 100644 index 0000000000000000000000000000000000000000..e5c6e0e2ebba4b66a8d89d67244371411d0f3dac GIT binary patch literal 919 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1|$#LC7uRSjKx9jP7LeL$-HD>U=H+jaSW-L z^Y&JD{$&q|wujZ1rfp#r6ANQ%6nOOi|GK-P9nP9tmZ+Tl@Nn+I;ACg+jvJS1Jr`T` z%DT===bLHhF-gS}8_K+NY2E$VB4Y4E0lsBK#s5 zmoJ?o=y>CdCd=>L|CofgD@6U1eW3V(;|KeW=zIS;_OQiW3`O}oxn!T-m}w*iHIP5ri5;7QQ7y+w|1;X=@1iZi^X2ddtS?ahA0bV>0p+oiolG37$9 zU5cIq1I1^{CDDsb_Zjm$Sr?{Srk}hT&s2INqq^(YeorF?<{&T2=P|oK6hC08@YLbF zUihymLLp0DpfT@+g)-CUZ885FIWEt7Sb4-xqM>lB>U`m;6+YKLg}d|@%w8Q^C2Mxg zh2b8<|7o9QMQ}$LPW&j(b6~}kOJ>jaC?5MGyl8cM#!vMl0TfyyKdAu^Tm{}^Ehpk+M1G+ z^aA8rUa~J>OLt{?HizTLlX=o64A(E%$X~cGlJ%W!-@J1_ejQX1tB+!Pz;-G*$&{z_ z;d2I~`|DJmO}Uh^>+dwiADm0wGrlrk*lV~^Odo5?#w)nw{sZpq%jK>{7*x6ga~gxE LtDnm{r-UW|is_`9 literal 0 HcmV?d00001 diff --git a/core/assets-raw/sprites/blocks/drills/eruption-drill-arrow.png b/core/assets-raw/sprites/blocks/drills/eruption-drill-arrow.png new file mode 100644 index 0000000000000000000000000000000000000000..88b8b3e65ed03dab979319d6af7868d2f9982ff3 GIT binary patch literal 258 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1|$#LC7uRSjKx9jP7LeL$-D$|_ISEDhE&XX zd&7~d*+9fKu>Sl0=VgypD1>;PssB1h)aDGY(>7k9Iy9hguX=mcagME34zu1juV3{d zU&8iZp8Iw?%ckqE82>B$ELUi73{n<2;Ls_^k+5M42aADY5DU``6;&oipD6;33~I0C z8X58~STZr%#JmxHrWKx7{CxSNZHKL_g&m(CW=FFPEBArAe8(y4x4UE2psKl961Rw6^nQ=AMcq z_hYfSCaSrQT*kYsg3);w4}D3L9lGyyF=HZ? zbk%duq^GdywGp9d%ilU%d3>aj0lx?VG@dzdW_fU-4FxRA;p|mT#|DG+C3IU zOBCI7;N;>u?w2>GK`E`J5=zg59JMxL;D#MwCwWjJ{yJmPPQp)CnK1{+#eE&e4gskL zCAJ2k6`~@)9J z+^Q&jHa0G^ZF85Xm#9JkD5+1Fc2VZzH&1j|XG(U~*qIWY+gGUYw{H)O~-=8ojP_Trf{rH$#yu^HB@@H2?W08VZ8Ej6Qpb|;R&A^wNNw51XN7C{$zcSNbXn$8cHrU18#IWjmO@Z zv*(VgVd@ZEkg^G>QLr^rQJO0b(oD*u+vm^$I7Uit*DI#6cpJHQ0 z$Awk@rO_`iIMIvrBs*E_oMoM1gWX6%|D4_&#@kU7s0&WMAHKu;lkgcMFgwR|(9K*mfS#%5C0_cRotQlW5yli9dzFPTUTGFV3 zvq?cLH2=}Nd%f9teS!T}!m68ur0|`FG|DdjevpqTu1$M{W%{ELL> zP}JWV6{s>dfc>mCtdf%(=%F9v5OwV0;p_w>^|hfg=pwsO%3HQ7aw;w{(Wn@{I?)Z(0K8OsPtv=lhyKjfn#15?ehm=ZwA^uKA~!59 zz!;j7In%BfyUJGB(+9mVdR{b9bz(0eJ8f8#-$)K0H(jRLI2+loBOEv1W^U#qe&;`a z^v!s#8;mtLQH9Zp&gGhULPX;pETfj>>;es)6dw{m%7(DFo$$u1#*egokCc3{QjMPa zeDaGzf#?oKSh=)~ujbX<;{ysF$H#(XwJH)rXi;fcB`?cz^RY&rK}th+a0aJkQ-?L? z8&v?4+fKl8Q5>>X1cKCMhk?BD>3PXO2R-eT2wFKcFNI%<&L+|ZmGilUg5aA>4;-A{nvBT7H=LNrKTsl@rmN11dk5 zC0`lXch*KgOfmmvw2k zw4Ur#7_diLj1nk@VTAT5(p~Xvbw_N^8I&$Gtb}VO?6cyhQ!b)8#%8!SilP4N`>EXF&1XSI zR?@3fKqYM^AUYcUi2L~TXX}tUfjF7Z61uMxb8tXNh#Zwh$@|5gRm{Bi6asLOvo+XR` literal 0 HcmV?d00001 diff --git a/core/assets-raw/sprites/blocks/drills/eruption-drill-item.png b/core/assets-raw/sprites/blocks/drills/eruption-drill-item.png new file mode 100644 index 0000000000000000000000000000000000000000..73a5e7624e3e362b06fe0bb00d622f2aa0bc69e4 GIT binary patch literal 685 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1|$#LC7xzrV9d{Sb`Ho)PG(@xm{>Z|+MC%? zq}6`0&_xdcU6qI&!J~&90tCE!U1uo>DgVeSyKd8>qPLqsgl!7cOP_@D7|Tin#B)T$uO3hU-~t}phso_iVFMGaQZeW44a1^C1_G=XLj5KxvASx>>#3+S_%S?DS;*^a zF>}S400{%uv_-Y+KlOy1xTPN%#sbue6YvMlvu#*eQ={j9{`S{Jd|zkQul4)-P=28O@`5d(gvsFP>gTe~DWM4fwSyyl literal 0 HcmV?d00001 diff --git a/core/assets-raw/sprites/blocks/drills/eruption-drill-top.png b/core/assets-raw/sprites/blocks/drills/eruption-drill-top.png new file mode 100644 index 0000000000000000000000000000000000000000..69b4faaa8e4e00c9906a1741a417e3c88d2a4aea GIT binary patch literal 2670 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 K&XihmK+-?Ig|0>b literal 0 HcmV?d00001 diff --git a/core/assets-raw/sprites/blocks/drills/eruption-drill.png b/core/assets-raw/sprites/blocks/drills/eruption-drill.png new file mode 100644 index 0000000000000000000000000000000000000000..da7f0465767fb04aea8a3ba76c7e31938c3ee6ec GIT binary patch literal 3931 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 literal 0 HcmV?d00001 diff --git a/core/assets-raw/sprites/blocks/drills/impact-drill-rotator.png b/core/assets-raw/sprites/blocks/drills/impact-drill-rotator.png deleted file mode 100644 index 685643e22c9931fa37e2de940c787b6f5a7acb4c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 889 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1|$#LC7uRSjKx9jP7LeL$-HD>U^e!2aSW-L z^Y)Hm-fahwmWQ4b7N6*4h(DrtcNt%i%HgfIr<`=!9G%WdNQBWMwmN9w^e zu6VC7hD^H$IS;)#xfOcZ=Ni_W{1RBO`su94$%(red9$V;0E+Bj2-+*OqfLLNxWlbD zrsp4)E-`QX(axljZo9XTzhLg$0}-rKHp+;cXFPS2cg0uh>g_@iylLxsrTtVlM6%l0 z*sZYKZ`s48b&%e^IQu_V&ckcS{yP>J;@v?j2q?rlpbOh5Ty%RSO z|Cg|iCHZ*&)P$FB0v5BV8oRz1DzUBf{L#Eo=!|TAWRtEvkEWs6qe<&K=c&FZd!+i1 zU(Y+B=+DDVngr*IV|x^)h+<&J}wZ*py#AKVTN$vp@f?{gKHA z2I4B!8`)cfl&%Qf zPg;&wJ}f=JI>E+Ez_LcOg7JbJt4AM`iuf)DQ+b}RLVwlM6S*G<{8K36bP_wD`N#2! zP>c3~YagPgrDt~tdJC*#*m@{Cuqo=HtG46x?TytwAD@5UzF~c{^3(%W&K+CsFB33p zS#zPt`^M6(suF3dcJ?k4iaunPxlyy^%q5|kf3s$3G0t||9_xO(B%gi|JfglL>2tP|h-;B^n22Ic%Py;L2!l7MS9uXXbf3 zoZP?=G<$)};psly3Rij0n1Ykg+y`?Gvty)epumCNpWH7FJN}yLX0iz+@9FC2vd$@? F2>?)_edquH diff --git a/core/assets-raw/sprites/blocks/drills/surge-drill.png b/core/assets-raw/sprites/blocks/drills/surge-drill.png deleted file mode 100644 index b982da64a0e7de340b771bc76329dd138c1ea5f7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3037 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 diff --git a/core/assets/icons/icons.properties b/core/assets/icons/icons.properties index 919fee1809..c144be8365 100755 --- a/core/assets/icons/icons.properties +++ b/core/assets/icons/icons.properties @@ -491,3 +491,4 @@ 63213=beryllium-wall-large|block-beryllium-wall-large-ui 63212=quell|unit-quell-ui 63211=breach|block-breach-ui +63210=eruption-drill|block-eruption-drill-ui diff --git a/core/assets/logicids.dat b/core/assets/logicids.dat index 19cccf81734f7c869ae1dc19454d0ae2f04c355c..2f9b492308dea5f753bcdece97f225d1cb6d4020 100644 GIT binary patch delta 32 ocmdlgcT|pv;mSs)c|81lsYRs)C7Jnox+z7OIXRo>^Gss`0KF>qw^fdb;qpeNc|4mp@JwX_05nzw?*IS* diff --git a/core/src/mindustry/content/Blocks.java b/core/src/mindustry/content/Blocks.java index 6ca4bfceb4..2c514cc703 100644 --- a/core/src/mindustry/content/Blocks.java +++ b/core/src/mindustry/content/Blocks.java @@ -110,7 +110,7 @@ public class Blocks{ //production mechanicalDrill, pneumaticDrill, laserDrill, blastDrill, waterExtractor, oilExtractor, cultivator, - cliffCrusher, plasmaBore, largePlasmaBore, impactDrill, + cliffCrusher, plasmaBore, largePlasmaBore, impactDrill, eruptionDrill, //storage coreShard, coreFoundation, /*TODO core foundation is a bad name, rename to fragment */ coreNucleus, vault, container, unloader, @@ -998,7 +998,7 @@ public class Blocks{ //TODO better name electrolyzer = new GenericCrafter("electrolyzer"){{ - requirements(Category.crafting, with(Items.silicon, 50, Items.graphite, 40, Items.beryllium, 40)); + requirements(Category.crafting, with(Items.silicon, 50, Items.graphite, 40, Items.beryllium, 50)); size = 3; craftTime = 10f; @@ -1007,7 +1007,7 @@ public class Blocks{ liquidCapacity = 50f; consumes.liquid(Liquids.water, 10f / 60f); - consumes.power(2f); + consumes.power(1f); drawer = new DrawMulti( new DrawRegion("-bottom"), @@ -1036,7 +1036,7 @@ public class Blocks{ }}; atmosphericConcentrator = new HeatCrafter("atmospheric-concentrator"){{ - requirements(Category.crafting, with(Items.oxide, 50, Items.beryllium, 30, Items.silicon, 40)); + requirements(Category.crafting, with(Items.oxide, 50, Items.beryllium, 60, Items.silicon, 40)); size = 3; craftTime = 10f; hasLiquids = true; @@ -1060,14 +1060,14 @@ public class Blocks{ }}; oxidationChamber = new HeatProducer("oxidation-chamber"){{ - requirements(Category.crafting, with(Items.tungsten, 60, Items.graphite, 40, Items.silicon, 50)); + requirements(Category.crafting, with(Items.tungsten, 60, Items.graphite, 40, Items.silicon, 50, Items.beryllium, 50)); size = 3; outputItem = new ItemStack(Items.oxide, 1); consumes.liquid(Liquids.ozone, 2f / 60f); consumes.item(Items.beryllium); - consumes.power(1f); + consumes.power(0.5f); rotateDraw = false; @@ -1091,7 +1091,7 @@ public class Blocks{ }}; phaseHeater = new HeatProducer("phase-heater"){{ - requirements(Category.crafting, with(Items.oxide, 30, Items.carbide, 30)); + requirements(Category.crafting, with(Items.oxide, 30, Items.carbide, 30, Items.beryllium, 30)); drawer = new DrawMulti(new DrawHeatOutput(true)); drawer.iconOverride = new String[]{""}; @@ -1207,7 +1207,7 @@ public class Blocks{ cyanogenSynthesizer = new HeatCrafter("cyanogen-synthesizer"){{ //TODO requirements - requirements(Category.crafting, with(Items.carbide, 50, Items.silicon, 80, Items.beryllium, 80)); + requirements(Category.crafting, with(Items.carbide, 50, Items.silicon, 80, Items.beryllium, 90)); heatRequirement = 5f; @@ -1238,7 +1238,7 @@ public class Blocks{ //TODO bad name, and there's no use for phase yet... phaseSynthesizer = new HeatCrafter("phase-synthesizer"){{ - requirements(Category.crafting, with(Items.surgeAlloy, 60, Items.carbide, 40, Items.silicon, 80, Items.thorium, 80)); + requirements(Category.crafting, with(Items.surgeAlloy, 70, Items.carbide, 90, Items.silicon, 100, Items.thorium, 100, Items.beryllium, 200)); size = 3; @@ -1272,7 +1272,6 @@ public class Blocks{ }}; heatReactor = new HeatProducer("heat-reactor"){{ - //TODO gas/liquid requirement? requirements(Category.crafting, with(Items.oxide, 70, Items.graphite, 20, Items.carbide, 10, Items.thorium, 80)); size = 3; craftTime = 60f * 10f; @@ -1549,7 +1548,7 @@ public class Blocks{ //TODO green looks bad switch to orange //TODO orange also looks bad hhhh regenProjector = new RegenProjector("regen-projector"){{ - requirements(Category.effect, with(Items.silicon, 60, Items.tungsten, 60, Items.oxide, 30)); + requirements(Category.effect, with(Items.silicon, 60, Items.tungsten, 60, Items.oxide, 30, Items.beryllium, 80)); size = 3; consumes.power(1f); range = 28; @@ -2303,12 +2302,12 @@ public class Blocks{ //TODO should be crusher or something impactDrill = new BurstDrill("impact-drill"){{ - requirements(Category.production, with(Items.silicon, 60, Items.beryllium, 90, Items.graphite, 50)); + requirements(Category.production, with(Items.silicon, 60, Items.beryllium, 90, Items.graphite, 60)); drillTime = 60f * 12f; size = 4; hasPower = true; tier = 6; - drillEffect = new MultiEffect(Fx.mineImpact, Fx.drillSteam); + drillEffect = new MultiEffect(Fx.mineImpact, Fx.drillSteam, Fx.mineImpactWave.wrap(Pal.redLight, 40f)); shake = 4f; itemCapacity = 40; @@ -2316,7 +2315,31 @@ public class Blocks{ consumes.liquid(Liquids.water, 0.2f); }}; - //TODO higher tier impact drill, 5x5 + //TODO bad name + eruptionDrill = new BurstDrill("eruption-drill"){{ + requirements(Category.production, with(Items.silicon, 200, Items.beryllium, 250, Items.oxide, 80, Items.carbide, 80)); + drillTime = 60f * 9f; + size = 5; + hasPower = true; + tier = 7; + //TODO better effect + drillEffect = new MultiEffect( + Fx.mineImpact, + Fx.drillSteam, + Fx.dynamicSpikes.wrap(Liquids.hydrogen.color, 30f), + Fx.mineImpactWave.wrap(Liquids.hydrogen.color, 45f) + ); + shake = 4f; + itemCapacity = 50; + arrowOffset = 2f; + arrowSpacing = 5f; + arrows = 2; + glowColor.a = 0.6f; + + //TODO different requirements + consumes.power(6f); + consumes.liquids(LiquidStack.with(Liquids.water, 0.5f, Liquids.hydrogen, 4f / 60f)); + }}; //endregion //region storage @@ -2375,7 +2398,7 @@ public class Blocks{ coreCitadel = new CoreBlock("core-citadel"){{ //TODO cost - requirements(Category.effect, with(Items.silicon, 5000, Items.beryllium, 7000, Items.tungsten, 5000, Items.carbide, 5000)); + requirements(Category.effect, with(Items.silicon, 5000, Items.beryllium, 8000, Items.tungsten, 5000, Items.carbide, 5000)); unitType = UnitTypes.incite; health = 18000; @@ -2389,7 +2412,7 @@ public class Blocks{ coreAcropolis = new CoreBlock("core-acropolis"){{ //TODO cost - requirements(Category.effect, with(Items.beryllium, 11000, Items.silicon, 11000, Items.tungsten, 9000, Items.carbide, 10000, Items.oxide, 8000)); + requirements(Category.effect, with(Items.beryllium, 12000, Items.silicon, 11000, Items.tungsten, 9000, Items.carbide, 10000, Items.oxide, 8000)); unitType = UnitTypes.emanate; health = 30000; @@ -2423,7 +2446,7 @@ public class Blocks{ }}; reinforcedContainer = new StorageBlock("reinforced-container"){{ - requirements(Category.effect, with(Items.tungsten, 100, Items.graphite, 50)); + requirements(Category.effect, with(Items.tungsten, 100, Items.graphite, 50, Items.beryllium, 50)); size = 3; //TODO should it really be kept the same, at 1000? itemCapacity = 1200; @@ -2431,7 +2454,7 @@ public class Blocks{ }}; reinforcedVault = new StorageBlock("reinforced-vault"){{ - requirements(Category.effect, with(Items.tungsten, 250, Items.carbide, 125)); + requirements(Category.effect, with(Items.tungsten, 250, Items.carbide, 125, Items.beryllium, 100)); size = 4; itemCapacity = 2500; scaledHealth = 120; @@ -2954,7 +2977,7 @@ public class Blocks{ //TODO bad name sublimate = new ContinuousTurret("sublimate"){{ //TODO requirements - requirements(Category.turret, with(Items.tungsten, 150, Items.silicon, 160, Items.oxide, 50)); + requirements(Category.turret, with(Items.tungsten, 150, Items.silicon, 160, Items.oxide, 50, Items.beryllium, 200)); draw = new DrawTurret("reinforced-"){{ liquidDraw = Liquids.ozone; diff --git a/core/src/mindustry/content/ErekirTechTree.java b/core/src/mindustry/content/ErekirTechTree.java index 089b4be942..0e1b739507 100644 --- a/core/src/mindustry/content/ErekirTechTree.java +++ b/core/src/mindustry/content/ErekirTechTree.java @@ -139,7 +139,9 @@ public class ErekirTechTree{ node(impactDrill, erekirSector, () -> { node(largePlasmaBore, () -> { + node(eruptionDrill, () -> { + }); }); }); }); diff --git a/core/src/mindustry/content/Fx.java b/core/src/mindustry/content/Fx.java index febe24944e..15351573db 100644 --- a/core/src/mindustry/content/Fx.java +++ b/core/src/mindustry/content/Fx.java @@ -409,6 +409,24 @@ public class Fx{ } }).layer(Layer.bullet - 4f), + dynamicSpikes = new Effect(40f, 100f, e -> { + color(e.color); + stroke(e.fout() * 2f); + float circleRad = 4f + e.finpow() * e.rotation; + Lines.circle(e.x, e.y, circleRad); + + for(int i = 0; i < 4; i++){ + Drawf.tri(e.x, e.y, 6f, e.rotation * 1.5f * e.fout(), i*90); + } + + color(); + for(int i = 0; i < 4; i++){ + Drawf.tri(e.x, e.y, 3f, e.rotation * 1.45f / 3f * e.fout(), i*90); + } + + Drawf.light(e.x, e.y, circleRad * 1.6f, Pal.heal, e.fout()); + }), + greenBomb = new Effect(40f, 100f, e -> { color(Pal.heal); stroke(e.fout() * 2f); @@ -2073,22 +2091,21 @@ public class Fx{ randLenVectors(e.id, 12, 5f + e.finpow() * 22f, (x, y) -> { Fill.square(e.x + x, e.y + y, e.fout() * 2.5f + 0.5f, 45); }); + }), - color(Pal.redLight); + mineImpactWave = new Effect(50f, e -> { + color(e.color); - e.scaled(50f, b -> { - stroke(b.fout() * 1.5f); + stroke(e.fout() * 1.5f); - randLenVectors(e.id, 12, 4f + b.finpow() * 40f, (x, y) -> { - lineAngle(e.x + x, e.y + y, Mathf.angle(x, y), b.fout() * 5 + 1f); - }); + randLenVectors(e.id, 12, 4f + e.finpow() * e.rotation, (x, y) -> { + lineAngle(e.x + x, e.y + y, Mathf.angle(x, y), e.fout() * 5 + 1f); }); e.scaled(30f, b -> { Lines.stroke(5f * b.fout()); Lines.circle(e.x, e.y, b.finpow() * 28f); }); - }), payloadReceive = new Effect(30, e -> { diff --git a/core/src/mindustry/content/TechTree.java b/core/src/mindustry/content/TechTree.java index 76005bd62c..ffac501ee3 100644 --- a/core/src/mindustry/content/TechTree.java +++ b/core/src/mindustry/content/TechTree.java @@ -9,8 +9,6 @@ import mindustry.game.Objectives.*; import mindustry.gen.*; import mindustry.type.*; -import java.util.*; - /** Class for storing a list of TechNodes with some utility tree builder methods; context dependent. See {@link SerpuloTechTree#load} source for example usage. */ public class TechTree{ private static TechNode context = null; @@ -126,8 +124,6 @@ public class TechTree{ for(ItemStack requirement : requirements){ requirement.amount = (int)(requirement.amount * researchCostMultipliers.get(requirement.item, 1)); } - - Log.info("@ = @", content, Arrays.toString(requirements)); } setupRequirements(requirements); diff --git a/core/src/mindustry/entities/Effect.java b/core/src/mindustry/entities/Effect.java index 6b164a3f98..5ff06d44e0 100644 --- a/core/src/mindustry/entities/Effect.java +++ b/core/src/mindustry/entities/Effect.java @@ -10,6 +10,7 @@ import arc.struct.*; import arc.util.*; import mindustry.*; import mindustry.content.*; +import mindustry.entities.effect.*; import mindustry.gen.*; import mindustry.graphics.*; import mindustry.world.*; @@ -93,6 +94,14 @@ public class Effect{ return this; } + public WrapEffect wrap(Color color){ + return new WrapEffect(this, color); + } + + public WrapEffect wrap(Color color, float rotation){ + return new WrapEffect(this, color, rotation); + } + public void at(Position pos){ create(this, pos.getX(), pos.getY(), 0, Color.white, null); } diff --git a/core/src/mindustry/entities/effect/WrapEffect.java b/core/src/mindustry/entities/effect/WrapEffect.java new file mode 100644 index 0000000000..d5484b1b96 --- /dev/null +++ b/core/src/mindustry/entities/effect/WrapEffect.java @@ -0,0 +1,40 @@ +package mindustry.entities.effect; + +import arc.graphics.*; +import mindustry.entities.*; + +/** Wraps an effect with some parameters. */ +public class WrapEffect extends Effect{ + public Effect effect; + public Color color = Color.white.cpy(); + public float rotation = Float.NaN; + + public WrapEffect(){ + } + + public WrapEffect(Effect effect, Color color){ + this.effect = effect; + this.color = color; + } + + public WrapEffect(Effect effect, Color color, float rotation){ + this.effect = effect; + this.color = color; + this.rotation = rotation; + } + + @Override + public void init(){ + effect.init(); + clip = effect.clip; + lifetime = effect.lifetime; + } + + @Override + public void render(EffectContainer e){ + e.color = color; + if(!Float.isNaN(rotation)) e.rotation = rotation; + effect.render(e); + clip = Math.max(clip, effect.clip); + } +} diff --git a/core/src/mindustry/graphics/Drawf.java b/core/src/mindustry/graphics/Drawf.java index 6d0af50c69..babe4a0388 100644 --- a/core/src/mindustry/graphics/Drawf.java +++ b/core/src/mindustry/graphics/Drawf.java @@ -95,6 +95,10 @@ public class Drawf{ } } + public static void additive(TextureRegion region, Color color, float x, float y){ + additive(region, color, x, y, 0f, Layer.blockAdditive); + } + public static void additive(TextureRegion region, Color color, float x, float y, float rotation){ additive(region, color, x, y, rotation, Layer.blockAdditive); } diff --git a/core/src/mindustry/world/blocks/production/BurstDrill.java b/core/src/mindustry/world/blocks/production/BurstDrill.java index b430269501..c7398eae7c 100644 --- a/core/src/mindustry/world/blocks/production/BurstDrill.java +++ b/core/src/mindustry/world/blocks/production/BurstDrill.java @@ -14,12 +14,15 @@ public class BurstDrill extends Drill{ public Interp speedCurve = Interp.pow2In; public @Load("@-top-invert") TextureRegion topInvertRegion; + public @Load("@-glow") TextureRegion glowRegion; public @Load("@-arrow") TextureRegion arrowRegion; public @Load("@-arrow-blur") TextureRegion arrowBlurRegion; public float invertedTime = 200f; - public float arrowSpacing = 4f; + public float arrowSpacing = 4f, arrowOffset = 0f; + public int arrows = 3; public Color arrowColor = Color.valueOf("feb380"), baseArrowColor = Color.valueOf("6e7080"); + public Color glowColor = arrowColor.cpy(); public BurstDrill(String name){ super(name); @@ -93,7 +96,7 @@ public class BurstDrill extends Drill{ drawDefaultCracks(); Draw.rect(topRegion, x, y); - if(invertTime > 0){ + if(invertTime > 0 && topInvertRegion.found()){ Draw.alpha(Interp.pow3Out.apply(invertTime)); Draw.rect(topInvertRegion, x, y); Draw.color(); @@ -106,13 +109,12 @@ public class BurstDrill extends Drill{ } float fract = smoothProgress; - int arrows = 3; Draw.color(arrowColor); for(int i = 0; i < 4; i++){ for(int j = 0; j < arrows; j++){ float arrowFract = (arrows - 1 - j); float a = Mathf.clamp(fract * arrows - arrowFract); - Tmp.v1.trns(i * 90 + 45, j * arrowSpacing); + Tmp.v1.trns(i * 90 + 45, j * arrowSpacing + arrowOffset); //TODO maybe just use arrow alpha and draw gray on the base? Draw.z(Layer.block); @@ -121,14 +123,20 @@ public class BurstDrill extends Drill{ Draw.color(arrowColor); - Draw.z(Layer.blockAdditive); - Draw.blend(Blending.additive); - Draw.alpha(Mathf.pow(a, 10f)); - Draw.rect(arrowBlurRegion, x + Tmp.v1.x, y + Tmp.v1.y, i * 90); - Draw.blend(); + if(arrowBlurRegion.found()){ + Draw.z(Layer.blockAdditive); + Draw.blend(Blending.additive); + Draw.alpha(Mathf.pow(a, 10f)); + Draw.rect(arrowBlurRegion, x + Tmp.v1.x, y + Tmp.v1.y, i * 90); + Draw.blend(); + } } } Draw.color(); + + if(glowRegion.found()){ + Drawf.additive(glowRegion, Tmp.c2.set(glowColor).a(Mathf.pow(fract, 3f) * glowColor.a), x, y); + } } } }