From 7d849b7ea039f05add45bb4bc08562380eacc63d Mon Sep 17 00:00:00 2001 From: Anuken Date: Fri, 19 Nov 2021 20:32:09 -0500 Subject: [PATCH] I have spent far too much time redrawing this stupid sprite --- .../cyanogen-synthesizer-bottom.png | Bin 0 -> 462 bytes .../production/cyanogen-synthesizer-heat.png | Bin 0 -> 5437 bytes .../cyanogen-synthesizer-liquid.png | Bin 0 -> 351 bytes .../production/cyanogen-synthesizer-top.png | Bin 0 -> 258 bytes .../production/cyanogen-synthesizer.png | Bin 0 -> 1722 bytes .../blocks/production/oxidation-chamber.png | Bin 1729 -> 2554 bytes .../sprites/blocks/turrets/fracture.png | Bin 0 -> 1066 bytes .../sprites/items/liquid-cyanogen.png | Bin 0 -> 329 bytes core/assets/icons/icons.properties | 3 + core/assets/logicids.dat | Bin 3372 -> 3414 bytes core/src/mindustry/content/Blocks.java | 62 ++++++++++++++---- core/src/mindustry/content/Liquids.java | 10 ++- .../blocks/defense/turrets/LaserTurret.java | 7 +- .../mindustry/world/draw/DrawParticlesIn.java | 48 ++++++++++++++ tools/src/mindustry/tools/Generators.java | 3 +- 15 files changed, 112 insertions(+), 21 deletions(-) create mode 100644 core/assets-raw/sprites/blocks/production/cyanogen-synthesizer-bottom.png create mode 100644 core/assets-raw/sprites/blocks/production/cyanogen-synthesizer-heat.png create mode 100644 core/assets-raw/sprites/blocks/production/cyanogen-synthesizer-liquid.png create mode 100644 core/assets-raw/sprites/blocks/production/cyanogen-synthesizer-top.png create mode 100644 core/assets-raw/sprites/blocks/production/cyanogen-synthesizer.png create mode 100644 core/assets-raw/sprites/blocks/turrets/fracture.png create mode 100644 core/assets-raw/sprites/items/liquid-cyanogen.png create mode 100644 core/src/mindustry/world/draw/DrawParticlesIn.java diff --git a/core/assets-raw/sprites/blocks/production/cyanogen-synthesizer-bottom.png b/core/assets-raw/sprites/blocks/production/cyanogen-synthesizer-bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..4f4b6a2b8fa10ba52de5f54471a2bd0c9083c362 GIT binary patch literal 462 zcmeAS@N?(olHy`uVBq!ia0y~yU`POA4mJh`hDS5XEf^RW7>k44ofy`glX=O&z}VsG z;uumf=k49yg@+A9STAymr>MW%&!n2-T*lI$`ng$s;vI)-rOuW#lX7kc?~A{WKM((E zzCLAM-rAylB{x1E4^iTgFZna;B8PLk%zr~=!7_e}f5qRFa`u({NzQSNsD1e3cvSa> z9~VBJ-zf6%KJ#(=>-Raz<7NI!?N|O&Q}8GID~E1j%_*C^QN=aar2n$V&1FnrYmj6} zW0)}*8I=>IGv?);UCpCd9xhqtw&U2N)Om9S&uy)oo15NJ%oF?Kj^x9LrP^n$m1UB1 z|D>opB(~+ literal 0 HcmV?d00001 diff --git a/core/assets-raw/sprites/blocks/production/cyanogen-synthesizer-heat.png b/core/assets-raw/sprites/blocks/production/cyanogen-synthesizer-heat.png new file mode 100644 index 0000000000000000000000000000000000000000..4a2f00108a6e742925a23248af891da898e3553d GIT binary patch literal 5437 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 literal 0 HcmV?d00001 diff --git a/core/assets-raw/sprites/blocks/production/cyanogen-synthesizer-liquid.png b/core/assets-raw/sprites/blocks/production/cyanogen-synthesizer-liquid.png new file mode 100644 index 0000000000000000000000000000000000000000..4bd1161ff0cb5ce38d5a9ef888df262bd2795462 GIT binary patch literal 351 zcmeAS@N?(olHy`uVBq!ia0y~yU`POA4mJh`hDS5XEf^RW7>k44ofy`glX=O&z$oeI z;uumf=k0CByu$`OEDk&W|KD7#Bp_mWW2MNtw=>xVwBPhjI>rD74c52A`0jtNwU=U5R^Dr2nx(m5 zCI(@fbl=D=&+PVv$&0oxRLy<gnp|vd$@?2>_J=jZy#r literal 0 HcmV?d00001 diff --git a/core/assets-raw/sprites/blocks/production/cyanogen-synthesizer-top.png b/core/assets-raw/sprites/blocks/production/cyanogen-synthesizer-top.png new file mode 100644 index 0000000000000000000000000000000000000000..2926a4396c5d307bba2e6f9463e4c1a096f7e0e1 GIT binary patch literal 258 zcmeAS@N?(olHy`uVBq!ia0y~yU`POA4mJh`hDS5XEf^RW7>k44ofy`glX=O&z_7>D z#WAE}&fD9Le9a0XECDb7zV|Wree2ZIeQ18mcRmH>`v;C$@-aZckKNmnCf=)-XUoX- zY@7Hh=d$>Y>Vx?mixgE-s?XN^2=+Hybm~pcW%hvDBX>McY_mD=qTB06Pglk44ofy`glX=O&z*gev z;uumf=WXo%ZfSRsfA0b^JzhGwWvVbS{bjt~Dj@%ZFXzm|Q;M-o$&Nc--8z!H%7jmC z!m%S$ITah1bo6?v2XV7F-u|(ndkUMgN2%ta7`N3wKi)gDXXee_e;+(pa(8a+@7mvG z>G%2Ho_l^gexC3006~`(ly{H{M<|J!0*w6y{}4r<#2%!?NBm zIcN&jq{neRs!3k*%|x&4s=cNQhoVmq3+Jcc>dWi?EesP>31I%|;LY%$s3U;;XM-cd zgQV^N;hzi!8+0?Sc{4QRcfAtI`uc#;t@?We+gzz*x08DpyuEL5?e_hDk8W9pn^SS^t_ZIQ~=L}DBy$c_?axOR|YTCKrMEHu>mV*T)MgJateHs3QSM=xG z^Sd0s+x^XGx4O4Df4{x*`#GGMx0hWu^iHu=*zu5YmxSJylh^l$w-xXiq}1vy$z5FK zWG%J3lygy6g7fA$w#hS{TPAIr>GbeewL=fb{(qmGr!1VLG-b=#Y3&>CwK%(U*gCLs z3VPjo=EY>`EVwPjYx6wm{rlfMP@CVta-Pxl(FIG!7)_`6UmM&?{1^`Sl!%{Xx0=Pz zu**kk&sBpQ*KfJKgQYaGMQ;+n z#5+bqB^enxRZh)dr^}aLRyc00%5>I|v;L#nP5&TvoJayIP2?#D)_rU`F*%3RXI zvY(Hy|JMc0i{AVGIDbFhO;VtH_V&DF zE7|&Hs5ROsi?I;MP(-bT)eX`Ty5l4Fu;!w}?DpZt~#YVs%M@OKC{ zI_+a}W#Rnfd_g^hYq9tOgDOTY<<$&#W=`n){WG$?6wHMcUj!i7%Z1BR10uf zFk!udBGdNPX@6uMDBCaT*B03(dGYU0!?4w9-XXV*9eD2T`@FE&vee4!Q^Twi>}TdJ z*q7a|t8#+<&vBoxEiV#c@;6);am+p1!MivhkGclTE$apTc4TG=Bbi9_5muo|h$_I6+H(&T3y% z72~jM?zfL#PTs+UY(GK7%v6-3s=W5Dq-g|Cu*L~rb!EruNZ8Fof`C2cGeojd>bres$Ao@sO zYMa*Msws~84v8h({CC9ey>NBkL%*tql_e_WmY!NAehlIlV?`DgGsT!#yl0HvyKY+3 z)b)S$*W8YKFk7=h0Zw=^{=?g1eV7KLZ;(qTSg+B{#PdO|%@p=SfiQtmN?CHIk3Yx6n zbXI)HH``G)HTl@^JGN`JVsuKl?$cEI`<0|Nttr>mdKI;Vst07c9u3;+NC literal 0 HcmV?d00001 diff --git a/core/assets-raw/sprites/blocks/production/oxidation-chamber.png b/core/assets-raw/sprites/blocks/production/oxidation-chamber.png index 9c2f9518e9a60a441f5013389d227b2e725f493d..0b744657269301c164e2d66980333f11cd33985a 100644 GIT binary patch delta 2545 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 diff --git a/core/assets-raw/sprites/blocks/turrets/fracture.png b/core/assets-raw/sprites/blocks/turrets/fracture.png new file mode 100644 index 0000000000000000000000000000000000000000..a07f8f2ce49c4c3ffc78efaccb9b478cbc1e10aa GIT binary patch literal 1066 zcmeAS@N?(olHy`uVBq!ia0y~yU~m9o4mJh`hEk44ofy`glX=O&!2HD1 z#WAE}&f8i0^MoA*jvW`|f3QVEh}Ez4Qs6{0)=h%FniUKhhR;|Jd|=`{m))Z0CQ`?; zt3zv=kMCWCMHGZ&w(S&SQ6ioH2}8Gbyg-aGGAeU#%0K82j0Crh4La3l&|VR8y( zh`FK6BF_@ec&)8q`Lna(*Ta=q_P7PT4Y_fZ@#=hr|Bk8>-@?6A)tpvL6JDgjaNmMm zF>PO)m!kkzyEBV8MgyhrA_;@e7|pt`L$v>`QrXEHPmpZF!*j2 z+qQ>AG1XzR!h*^WzLq6AA6|TE{nco>cxUPZpVkH1XKZ=hlijy|J1ozxdES4Wu-tk1 zH}_uG@IOm8o~$0slCbku{JQOZ%V(XxIQ``Iwf9$lwhvo#(~(z!r@Ey;`dJ_cPqJKTxE{amr1<}eUwOs*Z^$uxtKH+Dqw{0W zk1adRO^an@D6U#4nuq=>#yL1}g`TD)zjej}SRXslA{e0(}1DaBdmonsy-*cbs z7JYo*&gW@`pHRz;N`_Q%4rNA#vo>8#0(=QO1x%hX@+3FhFV}sx^X4M{Myb7wIX~~T zCwQ*aVaV#s*NsjNemZ+{?KPWIQICV4Eqyg1$1}5EZtIRc0*f7X`+fNHGWKlh#hP`R zjVmh;`LSf2VSZB2kr>*^ufF2-CNbAy`__%Cjx9I7x%!YD%YB=vmO)SZUo5qsr?tuO z(AKK@ongAuJr`Y?xovhQA*nNW2H(PPao!ghUWmL@lKRa3{wNPJAziLkBG=ZSAzmG4Snq+uy zhiAWwRmj>}#@v)+*F+Y{>a{3Ld=^rZ?jbqT@H4|Hod$uVhY?&(=W0LfIcC$aLCeQ; zH?Q8_6p6rxc1uE@W-3ONwfk7Ao3XkT>aK|Nco?;=t+JuT%Rsa#RaCPj;IxfHl4ee8 zf?>ZChv`}7lryYb1cJ^i-ohNYszopr0K%f)oB#j- literal 0 HcmV?d00001 diff --git a/core/assets-raw/sprites/items/liquid-cyanogen.png b/core/assets-raw/sprites/items/liquid-cyanogen.png new file mode 100644 index 0000000000000000000000000000000000000000..29c204c89db611be56a22410a954b00383e4e7ab GIT binary patch literal 329 zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4mJh`hT^KKFANL}jKx9jP7LeL$-HD>U}W}m zaSVxQeLM9m?;!)8*61soyV#Rhjx5aH;PU*1(3*?PNi0`vtr&wWSy>~pzjyDcodLqS9q@cBvW#hp*IsNAs zp3DhY#j@e{y%U`U?o!7M#N+A?+;!$yH*cPptM`Q0R;Evw4%_IxocuuJ02}uag$2R| zhVK{F7ByJcT$4V>x*#;Adl!S!*Jy@yW--x^T&KL=VsG3D0%Mr;JC0gT jKPqy<+Ur~GF6LZ@%G2k=IolZ+7#KWV{an^LB{Ts5O8J8D literal 0 HcmV?d00001 diff --git a/core/assets/icons/icons.properties b/core/assets/icons/icons.properties index 660fea210b..25cd1d360b 100755 --- a/core/assets/icons/icons.properties +++ b/core/assets/icons/icons.properties @@ -449,3 +449,6 @@ 63257=emanate|unit-emanate-ui 63256=overflow-duct|block-overflow-duct-ui 63255=large-plasma-bore|block-large-plasma-bore-ui +63254=fracture|block-fracture-ui +63253=cyanogen-synthesizer|block-cyanogen-synthesizer-ui +63252=cyanogen|liquid-cyanogen-ui diff --git a/core/assets/logicids.dat b/core/assets/logicids.dat index 54817c3f97f03c4ca4d6745d7a09d61f731522eb..d287989c25ee5420c8f31a68f0d61d3bfbbb3b32 100644 GIT binary patch delta 65 zcmZ1@bxn$iVb4aUvt05VX+??2C8b5F3?j*uiFx_ysd>7^m3bu@sl}O9sYRR5aj7yf Pa!mfhW5LD10aF10_|q24 delta 22 ecmca6wML4GVb?~cvs|0sbEz;fvQHM_wEzHGtOmmX diff --git a/core/src/mindustry/content/Blocks.java b/core/src/mindustry/content/Blocks.java index ad4562b441..ee15a67d9e 100644 --- a/core/src/mindustry/content/Blocks.java +++ b/core/src/mindustry/content/Blocks.java @@ -60,7 +60,7 @@ public class Blocks implements ContentList{ //crafting siliconSmelter, siliconCrucible, siliconArcFurnace, kiln, graphitePress, plastaniumCompressor, multiPress, phaseWeaver, surgeSmelter, pyratiteMixer, blastMixer, cryofluidMixer, melter, separator, disassembler, sporePress, pulverizer, incinerator, coalCentrifuge, - electrolyzer, oxidationChamber, heatReactor, carbideCrucible, slagCentrifuge, surgeCrucible, + electrolyzer, oxidationChamber, heatReactor, carbideCrucible, slagCentrifuge, surgeCrucible, cyanogenSynthesizer, cellSynthesisChamber, //sandbox @@ -460,14 +460,17 @@ public class Blocks implements ContentList{ regolithWall = new StaticWall("regolith-wall"){{ regolith.asFloor().wall = this; + attributes.set(Attribute.silicate, 1f); }}; yellowStoneWall = new StaticWall("yellow-stone-wall"){{ yellowStone.asFloor().wall = slag.asFloor().wall = this; + attributes.set(Attribute.silicate, 1.5f); }}; rhyoliteWall = new StaticWall("rhyolite-wall"){{ rhyolite.asFloor().wall = rhyoliteCrater.asFloor().wall = this; + attributes.set(Attribute.silicate, 1f); }}; carbonWall = new StaticWall("carbon-wall"){{ @@ -1082,6 +1085,34 @@ public class Blocks implements ContentList{ consumes.power(2f); //TODO necessary? }}; + cyanogenSynthesizer = new HeatCrafter("cyanogen-synthesizer"){{ + //TODO requirements + requirements(Category.crafting, with(Items.tungsten, 60, Items.graphite, 60, Items.carbide, 30)); + + heatRequirement = 5f; + + drawer = new DrawMulti(new DrawRegion("-bottom"), new DrawLiquidRegion(Liquids.hydrogen), new DrawBlock(), new DrawRegion("-top"), new DrawHeatInput(), + new DrawParticlesIn(){{ + color = Color.valueOf("bfe9ff"); + alpha = 0.6f; + particleSize = 4f; + particles = 10; + particleRad = 12f; + particleLife = 140f; + }}); + + size = 3; + + outputLiquid = new LiquidStack(Liquids.cyanogen, 3f); + craftTime = 60f * 1f; + + consumes.liquid(Liquids.hydrogen, 3f / 60f); + consumes.item(Items.graphite); + + consumes.power(2f); + liquidCapacity = 40f; + }}; + //TODO needs to be completely redone from the ground up cellSynthesisChamber = new LiquidConverter("cell-synthesis-chamber"){{ //TODO booster mechanics? @@ -2512,6 +2543,7 @@ public class Blocks implements ContentList{ //TODO no coolant? + acceptCoolant = false; draw = new DrawTurret("reinforced-"); shootLength = 0f; outlineColor = Pal.darkOutline; @@ -2527,41 +2559,43 @@ public class Blocks implements ContentList{ limitRange(); }}; - //TODO implementation; splash damage? shotgun? - if(false) + //TODO implementation; splash damage? shotgun? AA? I have no ideas fracture = new ItemTurret("fracture"){{ requirements(Category.turret, with(Items.tungsten, 35, Items.silicon, 35), true); ammo( - Items.tungsten, new BasicBulletType(7f, 25){{ - width = 8f; - height = 14f; + Items.tungsten, new BasicBulletType(5f, 20){{ + velocityInaccuracy = 0.2f; + width = 6f; + height = 12f; shootEffect = Fx.berylSpark; smokeEffect = Fx.shootBigSmoke; ammoMultiplier = 2; pierce = true; pierceBuilding = true; - hitColor = backColor = trailColor = Pal.berylShot; + hitColor = backColor = trailColor = Items.tungsten.color; frontColor = Color.white; - trailWidth = 1.5f; - trailLength = 10; + trailWidth = 1f; + trailLength = 4; //TODO different effect? hitEffect = despawnEffect = Fx.hitBulletColor; }} ); + acceptCoolant = false; consumes.liquid(Liquids.hydrogen, 1.5f / 60f); - shots = 3; + shots = 5; //TODO cool reload animation draw = new DrawTurret("reinforced-"); - shootLength = 0f; + shootLength = 8f; outlineColor = Pal.darkOutline; size = 2; envEnabled |= Env.space; - reloadTime = 40f; + reloadTime = 30f; restitution = 0.03f; - range = 180; - shootCone = 3f; + range = 90; + shootCone = 15f; + inaccuracy = 20f; health = 300 * size * size; rotateSpeed = 1.8f; diff --git a/core/src/mindustry/content/Liquids.java b/core/src/mindustry/content/Liquids.java index eabc1e9cc8..91c869483e 100644 --- a/core/src/mindustry/content/Liquids.java +++ b/core/src/mindustry/content/Liquids.java @@ -6,7 +6,7 @@ import mindustry.type.*; public class Liquids implements ContentList{ public static Liquid water, slag, oil, cryofluid, neoplasm, - ozone, hydrogen; + ozone, hydrogen, cyanogen; @Override public void load(){ @@ -72,7 +72,13 @@ public class Liquids implements ContentList{ flammability = 1f; }}; - //TODO dicyanoacetylene + cyanogen = new Liquid("cyanogen", Color.valueOf("6fd5d5")){{ + gas = true; + barColor = Color.valueOf("6fd5d5"); + flammability = 2f; + }}; + + //TODO dicyanoacetylene vs cyanogen //TODO molten lead (maybe) } diff --git a/core/src/mindustry/world/blocks/defense/turrets/LaserTurret.java b/core/src/mindustry/world/blocks/defense/turrets/LaserTurret.java index 8dd7cb9d7b..888a7d06be 100644 --- a/core/src/mindustry/world/blocks/defense/turrets/LaserTurret.java +++ b/core/src/mindustry/world/blocks/defense/turrets/LaserTurret.java @@ -17,7 +17,6 @@ public class LaserTurret extends PowerTurret{ public LaserTurret(String name){ super(name); - canOverdrive = false; consumes.add(new ConsumeCoolant(0.01f)).update(false); coolantMultiplier = 1f; @@ -25,7 +24,7 @@ public class LaserTurret extends PowerTurret{ @Override public void init(){ - consumes.powerCond(powerUse, entity -> ((LaserTurretBuild)entity).bullet != null || ((LaserTurretBuild)entity).target != null); + consumes.powerCond(powerUse, (LaserTurretBuild entity) -> entity.bullet != null || entity.target != null); super.init(); } @@ -54,7 +53,7 @@ public class LaserTurret extends PowerTurret{ wasShooting = true; bullet.rotation(rotation); bullet.set(x + bulletOffset.x, y + bulletOffset.y); - bullet.time(0f); + bullet.time = 0f; heat = 1f; recoil = recoilAmount; bulletLife -= Time.delta / Math.max(efficiency(), 0.00001f); @@ -66,7 +65,7 @@ public class LaserTurret extends PowerTurret{ Liquid liquid = liquids.current(); float maxUsed = consumes.get(ConsumeType.liquid).amount; - float used = (cheating() ? maxUsed : Math.min(liquids.get(liquid), maxUsed)) * Time.delta; + float used = (cheating() ? maxUsed : Math.min(liquids.get(liquid), maxUsed)) * delta(); reload -= used * liquid.heatCapacity * coolantMultiplier; liquids.remove(liquid, used); diff --git a/core/src/mindustry/world/draw/DrawParticlesIn.java b/core/src/mindustry/world/draw/DrawParticlesIn.java new file mode 100644 index 0000000000..3ca9f82f08 --- /dev/null +++ b/core/src/mindustry/world/draw/DrawParticlesIn.java @@ -0,0 +1,48 @@ +package mindustry.world.draw; + +import arc.graphics.*; +import arc.graphics.g2d.*; +import arc.math.*; +import arc.math.Interp.*; +import arc.util.*; +import mindustry.gen.*; + +/** Not standalone. */ +public class DrawParticlesIn extends DrawBlock{ + public Color color = Color.valueOf("f2d585"); + + public float alpha = 0.5f; + public int particles = 30; + public float particleLife = 70f, particleRad = 7f, particleSize = 3f, fadeMargin = 0.4f, rotateScl = 3f; + public Interp particleInterp = new PowIn(1.5f); + public Interp particleSizeInterp = Interp.slope; + public Blending blending = Blending.normal; + + @Override + public void drawBase(Building build){ + + if(build.warmup() > 0f){ + + float a = alpha * build.warmup(); + Draw.blend(blending); + Draw.color(color); + + float base = (Time.time / particleLife); + rand.setSeed(build.id); + for(int i = 0; i < particles; i++){ + float fin = (rand.random(1f) + base) % 1f, fout = 1f - fin; + float angle = rand.random(360f) + (Time.time / rotateScl) % 360f; + float len = particleRad * particleInterp.apply(fout); + Draw.alpha(a * (1f - Mathf.curve(fin, 1f - fadeMargin))); + Fill.circle( + build.x + Angles.trnsx(angle, len), + build.y + Angles.trnsy(angle, len), + particleSize * particleSizeInterp.apply(fin) * build.warmup() + ); + } + + Draw.blend(); + Draw.reset(); + } + } +} diff --git a/tools/src/mindustry/tools/Generators.java b/tools/src/mindustry/tools/Generators.java index 838c713a6d..8365903ee3 100644 --- a/tools/src/mindustry/tools/Generators.java +++ b/tools/src/mindustry/tools/Generators.java @@ -459,7 +459,8 @@ public class Generators{ image.draw(get(type.region), true); } - //draw outlines + //TODO draw under for layerOffset < 0 + //draw weapon outlines on base for(Weapon weapon : type.weapons){ weapon.load();