From 4d13b8df7a797ab8e93cc2a30a5491cff31fe8ca Mon Sep 17 00:00:00 2001 From: Anuken Date: Wed, 17 Nov 2021 13:37:51 -0500 Subject: [PATCH] Surge crucible effects --- .../production/surge-crucible-bottom.png | Bin 0 -> 462 bytes .../blocks/production/surge-crucible-glow.png | Bin 0 -> 7848 bytes .../blocks/production/surge-crucible-heat.png | Bin 0 -> 5863 bytes .../production/surge-crucible-liquid.png | Bin 0 -> 251 bytes .../production/surge-crucible-vents.png | Bin 0 -> 9660 bytes .../blocks/production/surge-crucible.png | Bin 0 -> 2223 bytes .../blocks/production/surge-smelter.png | Bin 1078 -> 1982 bytes .../sprites/items/item-surge-alloy.png | Bin 539 -> 534 bytes core/assets/icons/icons.properties | 1 + core/assets/logicids.dat | Bin 3313 -> 3329 bytes core/src/mindustry/content/Blocks.java | 23 ++++++-- core/src/mindustry/content/Fx.java | 17 +++++- .../entities/effect/RadialEffect.java | 49 ++++++++++++++++++ core/src/mindustry/graphics/Pal.java | 1 + .../distribution/DirectionLiquidBridge.java | 2 +- .../src/mindustry/world/draw/DrawCircles.java | 44 ++++++++++++++++ .../mindustry/world/draw/DrawHeatRegion.java | 46 ++++++++++++++++ tools/build.gradle | 2 +- 18 files changed, 179 insertions(+), 6 deletions(-) create mode 100644 core/assets-raw/sprites/blocks/production/surge-crucible-bottom.png create mode 100644 core/assets-raw/sprites/blocks/production/surge-crucible-glow.png create mode 100644 core/assets-raw/sprites/blocks/production/surge-crucible-heat.png create mode 100644 core/assets-raw/sprites/blocks/production/surge-crucible-liquid.png create mode 100644 core/assets-raw/sprites/blocks/production/surge-crucible-vents.png create mode 100644 core/assets-raw/sprites/blocks/production/surge-crucible.png create mode 100644 core/src/mindustry/entities/effect/RadialEffect.java create mode 100644 core/src/mindustry/world/draw/DrawCircles.java create mode 100644 core/src/mindustry/world/draw/DrawHeatRegion.java diff --git a/core/assets-raw/sprites/blocks/production/surge-crucible-bottom.png b/core/assets-raw/sprites/blocks/production/surge-crucible-bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..4f4b6a2b8fa10ba52de5f54471a2bd0c9083c362 GIT binary patch literal 462 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7OGojKx9jP7LeL$-D%zJ3L(+Ln`LH zy}P^cuz?8cMQ-sF^>_Q3R8ySGSo%{xH>*#)<4~>C*^*{b&h6lR@%QoP;a|e9!N<8uTI-#&7Yj_?uGBzLG!5Ij#}44}Tnw>fZ3gK1X@H%zvr<%71DK{$zjU&@HSvWpg*GxaOMlU-r1Uj0tQFk_>4KGX^80 za-wv`yu7okc@)dTCCl7)9D9^HZ?53Et(9|g(_4ypVqe^md>FA*`>eIHOmgm@6m^HB zmh{}-`8+HhJs(!={W$p`L#N;>w`2ZXj6%viQnL1%Y#u!umK)Vgs$rhID9Pen<}G0S PFfe$!`njxgN@xNAtYD$; literal 0 HcmV?d00001 diff --git a/core/assets-raw/sprites/blocks/production/surge-crucible-glow.png b/core/assets-raw/sprites/blocks/production/surge-crucible-glow.png new file mode 100644 index 0000000000000000000000000000000000000000..9cbb441b7ebffd568652c9e1e692e1fdfb326911 GIT binary patch literal 7848 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 literal 0 HcmV?d00001 diff --git a/core/assets-raw/sprites/blocks/production/surge-crucible-liquid.png b/core/assets-raw/sprites/blocks/production/surge-crucible-liquid.png new file mode 100644 index 0000000000000000000000000000000000000000..e2e3a85b82d28ab3c7f9949624e5b981f9576bda GIT binary patch literal 251 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7OGojKx9jP7LeL$-D$|wtBiahE&XX zd()BYkb?;Gg=@d>?_6isp^zo2cJX`JyCkM<=W?Wh>JY$TacybC=Dx=kdG_yr$Nh}e za=t&^Udnw1_n#GiE}A)o-bjDizf3TzXa8B_@j=?gtiD4cs#s_7|yg eB5Vh;F1+OGOLvjrnZI~0NZixa&t;ucLK6TTnp%SZ literal 0 HcmV?d00001 diff --git a/core/assets-raw/sprites/blocks/production/surge-crucible-vents.png b/core/assets-raw/sprites/blocks/production/surge-crucible-vents.png new file mode 100644 index 0000000000000000000000000000000000000000..03865805030ca98002d90a680d6081b7622210bd GIT binary patch literal 9660 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 az|*O#^I;p~Lqpnl02v8I@hVZH;Qs+ckFMVU literal 0 HcmV?d00001 diff --git a/core/assets-raw/sprites/blocks/production/surge-crucible.png b/core/assets-raw/sprites/blocks/production/surge-crucible.png new file mode 100644 index 0000000000000000000000000000000000000000..8380ad3d4b530250ae7ae6520c4d8de84a3a4754 GIT binary patch literal 2223 zcmV;g2vGNlP)Px-X-PyuRCt{2T|0|aR}@||ScQ@+X+o+P zun^J)8Da7R1S`Q5LvG>R(sGDsVQUJrZuZ@GulL&fjENrz&b{ZXz0UXT_u6OOwR`s; ze%#*P0xfRrzE)lLWdEGnrU$hjqsyaU^<#a0bO^KATz!MK0IkCwv}}(quLVyfSO)<3 zoJ8PkjxMi+w*{`_e?A8hG`2>U2N3K2*2_OmvIrI%Bg>19J?r%cCs72?y(7xY82DEN z0I-XY32nK@FWxQv%d|ZbO#uL=5dq7S%54!YiJ-MT8l(UKV@0UTp~~fmroPkKo&u+& z3+6|M002NO)@HLg9B=ToZ{z!K+3zVrX0!QHxtgx#_{F=W^0c-oTO2etB(N<2LA3-+ zf9(a9VX=YNMr!(~aYZEnz^Vw=f+He$?j2cPM1)g&7tX+gKmJl(jNOq32geuP_iF6z zY`jdhZMEm=j&AI}{?r2YE}SvlSYz+`Y4&@Ld{6CZ+4Bg@l`Yw8J+tLmaILZEf;1v* zojq@I2w)8Pn(sV5Q1-YAr+KDwp|>;!a3XNzQ;v-!-*Sz`m)f4x+9iASDtl!RZi%2F ze{ugm4o*S7=URkD1P%F|z19}T+Mhq%`Y0Lu=DV+!{+1l!1|tvo-nn*mS(3d6m)Ut}lK5;9IJE3V zxNr+l7d$^Y6!(rSWYlYp(sqmRED3p1Zu%IKRRTIj*4IvDx()z z*RFyo+9BmPD|S zkNCfdpd}xGh=`Hh5z|fKb_F+s0XP}mP6SwysOLC1z6h|dw-=s<0xa(par;J*mT-CJ znz&_x`1zM#)z?}O2}n^03(z85D}wbQG$L5Z*ZL3%$#Mt@z!B|j3ESISaAo%@c`qlz z<(+FEJ+m%}NbdV#G2t4TEo$l->hqEys|fg+ck0WXo{$g`Va?LFA}sL%Ehu81?LQ^& z!NpnY8Me-zPv4o9;F(~k1n5C{4bFK^1P)v)0_cB0OCyNb1@$Ihvx_Pb>Ak1-lvpD$ zE5Hcy%l~JIV7Yc`5l8_>l3#vCIc({MtX@#(M z*RmbGB7lc{MEyXm&>**2_H6$t*&=4MIsEkFLsh6z5}_13>T^_tB>^JjBk+N^xU6Tp z*c#`xY_UXrj)<@jAcK5_CV*}c!F$rdB0|(>uL$h>0lmlv(39#V-{MP#&s1QZdfNsM z>XL_Zdy-#*t5p&5OK>eA+h=P_NC`;-_#Olxk7N%{g3oCJe1Q*X0(b&D0Q~~!8k_{5 z$+MyLVJyU>o13ID>jOy-lJTIDPnkY@WcatO(NSg&H0a ztTj90b7UdrIva}ch`^m*;5N-HBHX+G(6uw_@i}!X0+G2elYrX*+-6(}X$pu!l^b|1 zyOAAI^tsDs99JlZNE(9{JR;Psq!giLFDe3u&~~)7FvOH1P+gRi!@(m$W`If*z#11G zDS`%?eSeDxRz4&V(vPKNpQgx&31=O7@jRO}+ap`R6vt9HSX)9%IIbm3bxMv++Se0S zfiunpMKgbSG4xo91r`yqPR2zue_1i~Sc(^t(B6SqI`YyRDYKv!dN|LCK=s`?6_o=0 zl+A2(JD%P`WNkp*YY{=a4ggpcLGywLBJ&Vd3+{M;W_*y|n5?0Ft;w3KqwK;g>0SHfRj@&DS5xJH?)#mxpq5F-RA&FZ#P{+)@_j2fwtb@x*RH8+6#h?!9Ih1?i1`iTIt3m!|D#Rn|m+e`5h$5az!E?;HIX zACL}Xl~CmktphP%L|8=~oY9J4%A8vwLxd5l(TERP5v+NpS2E{%b4N!+u#(?1Sw}XyA;h>EF=6)fJ6@xWShsdo%| z-8-^8OXjZ{p_Q;!ga{c}hQ$V68wnC=%d=+wsv-WGs>Xr$U&l7|s4lI3xc9F0LJ zqvyCX)xiO-JBr5xlmVT{j|F+|9Z{Yom_@aOSUg|=`5qf1%ZrNOj|U7S-(qWYc>pmH xTmno%zQ*S0@=AC`Fbgmx`JC<1<+b1u;cuOxhJSSTPeK3y002ovPDHLkV1l=@8ioJ> literal 0 HcmV?d00001 diff --git a/core/assets-raw/sprites/blocks/production/surge-smelter.png b/core/assets-raw/sprites/blocks/production/surge-smelter.png index f9a0a1fc172306f8d97e7e1977afe78fcc45d7ca..0d8a3b5475f3e9b026ed6aa55cde9024f7e1a5c7 100644 GIT binary patch delta 1969 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 diff --git a/core/assets-raw/sprites/items/item-surge-alloy.png b/core/assets-raw/sprites/items/item-surge-alloy.png index 4cac00c5e401e59024465691b770d4b759163855..07d73c762e18b2bfd385412d7b8529e1360999df 100644 GIT binary patch delta 495 zcmV%*{M+XN%49*o)aH-%Dhk8fe<=wAb(Zw$Wa(Q?8e(vSvk^}x&0syis zV}srFinN>Kfjrd*h-G7qaBsj|ltPF}r?aQaLNL_4420_~u$pT|N}-Q~1!#^3 zUgpz)C;;TmIq9ac5CmZR_9pwd`!pJu%*sGW5CH&>=li4s0L-t?u{X8JRH&xHtgoG@ z3>4C?XTnFJnSTHrE8%ZINC5IR3xNoEMKxu4fKm|BJOW|@(5ofr)sj*WI!q`8sew=k z9|OyxB?zQ^4{U28|oqfINfVc1;S(w0N0yaBv8meWjKn02xu`^!Ti3U)9I-5uZ=qC?5YVy zta&@xnFL+?g3542GUCdFkGU?d-|`X=MsqoPsaYQYUAkf!UVKfi|j0OXYcIH>;!E*u&}fD&Yo{(?*0t$#}WXL zrYRd7B#)%sS&rqY-a)91y@MM!b0JW3%B13G`4KqC2w)g}nSW6p`*^($2PiY&X>E}s z1cC)nN6(q-3V|R+Xq$G8zPIDL6e7XWq-w~2wgnaNDe(IJ#RDYBYSA?leip@#Y% zak+n9{vHS^OwL?hA2r+gMFMbp(c1`w$s7Qlj!#ISFl_^k$t(!M$2vH-nuK-~*m!p>=KP0XiMlrhcM1Wroq2}Q& qq0yK&owsIsaT;bq$XFKtmsLLvx(pJ)c98l20000 { + color(Pal.slagOrange); + alpha(0.6f); + + rand.setSeed(e.id); + for(int i = 0; i < 3; i++){ + float len = rand.random(6f), rot = rand.range(40f) + e.rotation; + + e.scaled(e.lifetime * rand.random(0.3f, 1f), b -> { + v.trns(rot, len * b.finpow()); + Fill.circle(e.x + v.x, e.y + v.y, 2f * b.fslope() + 0.2f); + }); + } + }), + berylSpark = new Effect(21f, e -> { color(Color.white, Pal.berylShot, e.fin()); stroke(e.fout() * 1.1f + 0.5f); diff --git a/core/src/mindustry/entities/effect/RadialEffect.java b/core/src/mindustry/entities/effect/RadialEffect.java new file mode 100644 index 0000000000..99289d3e02 --- /dev/null +++ b/core/src/mindustry/entities/effect/RadialEffect.java @@ -0,0 +1,49 @@ +package mindustry.entities.effect; + +import arc.math.*; +import mindustry.content.*; +import mindustry.entities.*; + +/** Renders one particle effect repeatedly at specified angle intervals. */ +public class RadialEffect extends Effect{ + public Effect effect = Fx.none; + public float rotationSpacing = 90f, rotationOffset = 0f; + public float lengthOffset = 0f; + public int amount = 4; + + public RadialEffect(){ + clip = 100f; + } + + public RadialEffect(Effect effect, int amount, float spacing, float lengthOffset){ + this(); + this.amount = amount; + this.effect = effect; + this.rotationSpacing = spacing; + this.lengthOffset = lengthOffset; + } + + @Override + public void init(){ + effect.init(); + clip = Math.max(clip, effect.clip); + lifetime = effect.lifetime; + } + + @Override + public void render(EffectContainer e){ + float x = e.x, y = e.y; + + e.rotation += rotationOffset; + + for(int i = 0; i < amount; i++){ + e.x = x + Angles.trnsx(e.rotation, lengthOffset); + e.y = y + Angles.trnsy(e.rotation, lengthOffset); + effect.render(e); + e.rotation += rotationSpacing; + e.id ++; + } + + clip = Math.max(clip, effect.clip); + } +} diff --git a/core/src/mindustry/graphics/Pal.java b/core/src/mindustry/graphics/Pal.java index fc55c3510f..02b1571bd3 100644 --- a/core/src/mindustry/graphics/Pal.java +++ b/core/src/mindustry/graphics/Pal.java @@ -123,6 +123,7 @@ public class Pal{ muddy = Color.valueOf("432722"), redLight = Color.valueOf("feb380"), + slagOrange = Color.valueOf("ffa166"), vent = Color.valueOf("6b4e4e"); } diff --git a/core/src/mindustry/world/blocks/distribution/DirectionLiquidBridge.java b/core/src/mindustry/world/blocks/distribution/DirectionLiquidBridge.java index 7fc32fe061..288802b11a 100644 --- a/core/src/mindustry/world/blocks/distribution/DirectionLiquidBridge.java +++ b/core/src/mindustry/world/blocks/distribution/DirectionLiquidBridge.java @@ -39,7 +39,7 @@ public class DirectionLiquidBridge extends DirectionBridge{ var link = findLink(); if(link != null){ Draw.z(Layer.power); - drawBridge(rotation, x, y, link.x, link.y, Tmp.c1.set(liquids.current().color).a(liquids.currentAmount() / liquidCapacity)); + drawBridge(rotation, x, y, link.x, link.y, Tmp.c1.set(liquids.current().color).a(liquids.currentAmount() / liquidCapacity * liquids.current().color.a)); } } diff --git a/core/src/mindustry/world/draw/DrawCircles.java b/core/src/mindustry/world/draw/DrawCircles.java new file mode 100644 index 0000000000..9b167e9835 --- /dev/null +++ b/core/src/mindustry/world/draw/DrawCircles.java @@ -0,0 +1,44 @@ +package mindustry.world.draw; + +import arc.graphics.*; +import arc.graphics.g2d.*; +import arc.math.*; +import arc.util.*; +import mindustry.entities.units.*; +import mindustry.gen.*; +import mindustry.world.*; + +public class DrawCircles extends DrawBlock{ + public Color color = Color.valueOf("7457ce"); + + public int amount = 5, sides = 15; + public float strokeMin = 0.2f, strokeMax = 2f, timeScl = 160f; + public float radius = 12f; + public Interp strokeInterp = Interp.pow3In; + + public DrawCircles(Color color){ + this.color = color; + } + + public DrawCircles(){ + } + + @Override + public void drawPlan(Block block, BuildPlan plan, Eachable list){} + + @Override + public void drawBase(Building build){ + if(build.warmup() <= 0.001f) return; + + Draw.color(color, build.warmup() * color.a); + + for(int i = 0; i < amount; i++){ + float life = ((Time.time / timeScl + i/(float)amount) % 1f); + + Lines.stroke(build.warmup() * strokeInterp.apply(strokeMax, strokeMin, life)); + Lines.poly(build.x, build.y, sides, life * radius); + } + + Draw.color(); + } +} diff --git a/core/src/mindustry/world/draw/DrawHeatRegion.java b/core/src/mindustry/world/draw/DrawHeatRegion.java new file mode 100644 index 0000000000..9abdc5ea24 --- /dev/null +++ b/core/src/mindustry/world/draw/DrawHeatRegion.java @@ -0,0 +1,46 @@ +package mindustry.world.draw; + +import arc.*; +import arc.graphics.*; +import arc.graphics.g2d.*; +import arc.math.*; +import mindustry.gen.*; +import mindustry.graphics.*; +import mindustry.world.*; +import mindustry.world.blocks.production.HeatCrafter.*; + +/** Not standalone. */ +public class DrawHeatRegion extends DrawBlock{ + public Color heatColor = new Color(1f, 0.22f, 0.22f, 0.8f); + public float heatPulse = 0.3f, heatPulseScl = 10f; + + public TextureRegion heat; + public String suffix = "-glow"; + + public DrawHeatRegion(String suffix){ + this.suffix = suffix; + } + + public DrawHeatRegion(){ + } + + @Override + public void drawBase(Building build){ + + Draw.z(Layer.blockAdditive); + if(build instanceof HeatCrafterBuild hc && hc.heat > 0){ + Draw.blend(Blending.additive); + Draw.color(heatColor, Mathf.clamp(hc.heat / hc.heatRequirement()) * (heatColor.a * (1f - heatPulse + Mathf.absin(heatPulseScl, heatPulse)))); + Draw.rect(heat, build.x, build.y); + Draw.blend(); + Draw.color(); + } + Draw.z(Layer.block); + + } + + @Override + public void load(Block block){ + heat = Core.atlas.find(block.name + suffix); + } +} diff --git a/tools/build.gradle b/tools/build.gradle index 20f2995b6b..cde24bcfb2 100644 --- a/tools/build.gradle +++ b/tools/build.gradle @@ -36,7 +36,7 @@ def transformColors = { List> list -> //TODO implementing this in gradle is a bad idea //d4816b transformColors([["4a4b53", "6e7080", "989aa4"], ["3a5651", "3a8f64", "92dd7e"], ["bf92f9", "8a73c6", "665c9f"], /*["6e7080", "989aa4", "b0bac0"],*/ ["bc5452", "ea8878", "feb380"], - ["de9458", "f8c266", "ffe18f"], ["feb380", "ea8878", "bc5452"], ["d4816b", "eab678", "ffd37f"], + ["de9458", "f8c266", "ffe18f"], ["feb380", "ea8878", "bc5452"], ["d4816b", "eab678", "ffd37f"], ["d57c65", "e3ae6f", "f7e97e"], ["ffffff", "dcc6c6", "9d7f7f"], ["df7646", "b23a4d", "752249"], ["3c3837", "515151", "646567"], ["5757c1", "6f80e8", "88a4ff"], ["8f665b", "b28768", "c9a58f"], ["4c5878", "768a9a", "a0b0c8"]])