From 1a8a2c326ef962ed77101ebe961d69a4be52e421 Mon Sep 17 00:00:00 2001 From: Anuken Date: Thu, 4 Nov 2021 11:41:12 -0400 Subject: [PATCH] impact drill wip --- .../blocks/drills/impact-drill-rotator.png | Bin 0 -> 1510 bytes .../blocks/drills/impact-drill-top.png | Bin 0 -> 367 bytes .../sprites/blocks/drills/impact-drill.png | Bin 0 -> 3037 bytes .../sprites/blocks/environment/tungsten1.png | Bin 0 -> 399 bytes .../sprites/blocks/environment/tungsten2.png | Bin 0 -> 327 bytes .../sprites/blocks/environment/tungsten3.png | Bin 0 -> 331 bytes core/assets/icons/icons.properties | 2 + core/assets/logicids.dat | Bin 2999 -> 3013 bytes core/src/mindustry/content/Blocks.java | 26 ++++++- .../maps/planet/ErekirPlanetGenerator.java | 13 ++++ .../world/blocks/production/BurstDrill.java | 72 ++++++++++++++++++ .../world/blocks/production/Drill.java | 6 +- 12 files changed, 114 insertions(+), 5 deletions(-) create mode 100644 core/assets-raw/sprites/blocks/drills/impact-drill-rotator.png create mode 100644 core/assets-raw/sprites/blocks/drills/impact-drill-top.png create mode 100644 core/assets-raw/sprites/blocks/drills/impact-drill.png create mode 100644 core/assets-raw/sprites/blocks/environment/tungsten1.png create mode 100644 core/assets-raw/sprites/blocks/environment/tungsten2.png create mode 100644 core/assets-raw/sprites/blocks/environment/tungsten3.png create mode 100644 core/src/mindustry/world/blocks/production/BurstDrill.java diff --git a/core/assets-raw/sprites/blocks/drills/impact-drill-rotator.png b/core/assets-raw/sprites/blocks/drills/impact-drill-rotator.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac17226da2d526c14d87b0cd09c21110841e049 GIT binary patch literal 1510 zcmZuxeK^wz9RF?o$d;Y?6~bj=>nfANx~_|DSuyS$HIh}MWU8a?NUYUfit4!>mUo5H zw!zPm{NdxEE$@9~4nAspMbfC%LCbq9 zoz1g079JmKb*eat3UnaeZg>$~^*l~Dkruf;^=pVeqo3839aT>02!xPQjcs@9Q{aQ> zmH+zB7e|K=nA(bbNHp)#&ztfC@y8@!0bK5_8ZH$@+B#@+f(Kxk#H4rg>ZTT{X)*Lu zM8$jdVu)xe8ci|I*2E=|X!~{zXh_#Y4SxUy%218m)4HVSl>p=i;Ic}V!gW9F z6vt>6l3NQI9AJEsm!(PfRdEz%m~k;ExQ}B z&Wj8=kYk1n@{12hn`unX6A`s#|yDz`0vJ8(ecd8n1w=@XDdV z?xEhZpL!$?6O@G}c((T0A%fY3xFk?NVL~IFmvXI84pUF4TLGr{J+G*+ETy>fn1%iT zc>j`PL(aZM6ol))evC)-dJ{XCkB~6Y8&zoICX{rHzsAp*f_RYf9yu}7LxpWF2H#qo z3=HxTB#{wkQd=qkbCqX6O60SZgqM3@HJHX?$64iAqEaa3~MhV6@$4hlPZY_W&E_gd7Qs@H$U zd%^?qUE@ra!YKEOWe77t7=Fh@UnI7P-I&5(U8saokOP%`krfz?afcnz{mf&h{B}a> zKrt4Tp~EVNFR9bPBmsOWYRKTh2VOr}tw| z56RT40f;q`hvWQs?Qr=B+}E^}v}p%`3p%7CWAJ(K-Gj_qX+X@d4Ed|Rl$dmyij|YX z(Te_^2Vx)Ec)JVU!jgaOmy<-Hk3V#7^u~I-%eRR;b$1mS|65!1*0odnUgyj^`=0ry z!YVt$Uh7))EEJ|b2!%&i?l;u3C|w?c5Ls)JpyhXeSvjh{Is;?0Ot_FN1z`CJk1<-D z3oNYe*qx2!p!k;~@ z89s3qDEK+=J+IP)mZ-nC*GT;ieVR3W*F_>-LW^p($Zli@@UE#(77|Pb+2^ABY%&|e zTWiB!0G*2T)T1(=%~#|dwh=^n!gMF>yAve`Miy>YxP0c|-p6B$s%<(B{jb8ovx5 z?hbeLAQL||QFqy-)~3!5GZN$(!G-2MR-3nq&=S#ZP)lPIuZpD;e28zl?e@LoI&T4U@uhNq-W&(T~SX7fbC&I&Z z`A9b1ZtbIJ66$3^mF_Vs;|7m(etGcmP|eBb(sihzU)m}myrD(93N>Uyto%^^ZSQo5 zW?IX*Y-^S<&CrwahLH>RS2^kxOMj#LY0aD0e+}aWlfiTKTR7vci3|G;Ft-IVZf=bb F{|66m#i{@R literal 0 HcmV?d00001 diff --git a/core/assets-raw/sprites/blocks/drills/impact-drill-top.png b/core/assets-raw/sprites/blocks/drills/impact-drill-top.png new file mode 100644 index 0000000000000000000000000000000000000000..c182234cb96bf1914b18f1d56af4614f5c514f57 GIT binary patch literal 367 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1|$#LC7xzrU^Me|aSW-L^Y*4~7PFy9YvB6x znw$A2tENaQmVSHr;E=&l1(O%gJ@*tlOqJa5tZr)UZbqP9OmINMet-S>X~KX1W?rz` z$6q5!KHj7Ghktp220qf|-xwI~9KIU1C`M=N8AJ``%K5 zkFUE3{EfRL;84Wm;m2^2Q^Ar^MZMt(%Y-=$lY||L>bU&Q&38Qc(|X2AL5cdn#mW|T z`F~t{yB@r$e5}8!oMq|r-u)|XaYUWBZhG;%C@GBP;`b#7e(-cF{ECZ7sM+NzP|GhR hA&==%ph!dNU*?~&FIcy33%>+X;OXk;vd$@?2>_npk-Pu^ literal 0 HcmV?d00001 diff --git a/core/assets-raw/sprites/blocks/drills/impact-drill.png b/core/assets-raw/sprites/blocks/drills/impact-drill.png new file mode 100644 index 0000000000000000000000000000000000000000..b982da64a0e7de340b771bc76329dd138c1ea5f7 GIT binary patch literal 3037 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 literal 0 HcmV?d00001 diff --git a/core/assets-raw/sprites/blocks/environment/tungsten1.png b/core/assets-raw/sprites/blocks/environment/tungsten1.png new file mode 100644 index 0000000000000000000000000000000000000000..faa96fc02e20bdbded2f79e1887b587c8b6d3789 GIT binary patch literal 399 zcmV;A0dW3_P)Px$Nl8ROR9J=Gmc0>!Fbsu7EG zPx9l*0RI;2w#Rkbqji7RI(fQ&+;8gpn*nfDYYL?^YGk{0kIfRy61?a~)Qi75oym8ewq~|EXlm=S?ccuqO zi|PTG4sgbDbfZ;r5ppL)|z`aa^ z&^qS!0nLakH{ul11h8&Px$0ZBwbR9J=WmN6Q_APj}0pNBHH@Ca_sPM*QZ+07$(3%r$1^b0hB1|I6rw?SLp z9}-fCR{dC;(!C$hm>wX@7a2-6%hBRvx(J77gF zVbGfLDa~cX`A&FipjODU8pyX>j(g3uxdgz z=sQApYwd+t{9)}L&Md9;1N=T!gz002ovPDHLkV1m1RiG~0G literal 0 HcmV?d00001 diff --git a/core/assets-raw/sprites/blocks/environment/tungsten3.png b/core/assets-raw/sprites/blocks/environment/tungsten3.png new file mode 100644 index 0000000000000000000000000000000000000000..da8b2321171f496a3e5f91443865d830d922d282 GIT binary patch literal 331 zcmV-R0kr;!P)Px$1xZ9fR9J=WRk;nrFbrgZ3>9sW5z@I%4^&Gak?~+inX%xYSc_gtcTWC!zg*7{%79jD zp7)Z&0&3_XhXrVLMw+hmZ@@jk;Iy~MB~s~(`57W9uSHynP%o22^pZ;=)E+3w5OQ`; zi#K$2a7kWU*Bn#*3r3O?=`U%B01b#`|EvU>b(g)=?Su@ZNu@o*1hhnG#x<-2Ik+6C dYo7RTd;w-xeZD${KH2~P002ovPDHLkV1iEEhN1uf literal 0 HcmV?d00001 diff --git a/core/assets/icons/icons.properties b/core/assets/icons/icons.properties index e4e8326f9b..a2ea6fb873 100755 --- a/core/assets/icons/icons.properties +++ b/core/assets/icons/icons.properties @@ -417,3 +417,5 @@ 63291=beam-tower|block-beam-tower-ui 63290=build-tower|block-build-tower-ui 63289=tungsten|item-tungsten-ui +63288=ore-tungsten|block-ore-tungsten-ui +63287=impact-drill|block-impact-drill-ui diff --git a/core/assets/logicids.dat b/core/assets/logicids.dat index eb0a9b28e8276ad5ff021d94affce8e03524b9f6..b80d250d0859069822f09aa7132e70863dbba6cd 100644 GIT binary patch delta 30 lcmdlkepH-^Vbw;aE>2#a%-n*+qzFnM&VdX}qF3!!fIJKDoFgFDs diff --git a/core/src/mindustry/content/Blocks.java b/core/src/mindustry/content/Blocks.java index 05957fa09c..532a2d57e6 100644 --- a/core/src/mindustry/content/Blocks.java +++ b/core/src/mindustry/content/Blocks.java @@ -50,6 +50,7 @@ public class Blocks implements ContentList{ //ores oreCopper, oreLead, oreScrap, oreCoal, oreTitanium, oreThorium, + oreTungsten, //wall ores wallOreBeryl, graphiticWall, @@ -84,7 +85,7 @@ public class Blocks implements ContentList{ //production mechanicalDrill, pneumaticDrill, laserDrill, blastDrill, waterExtractor, oilExtractor, cultivator, - cliffCrusher, plasmaBore, + cliffCrusher, plasmaBore, impactDrill, //storage coreShard, coreFoundation, coreNucleus, vault, container, unloader, @@ -635,6 +636,8 @@ public class Blocks implements ContentList{ oreScale = 25.380953f; }}; + oreTungsten = new OreBlock(Items.tungsten); + //endregion //region wall ore @@ -1272,17 +1275,17 @@ public class Blocks implements ContentList{ //special transport blocks duct = new Duct("duct"){{ - requirements(Category.distribution, BuildVisibility.debugOnly, with(Items.graphite, 5, Items.metaglass, 2)); + requirements(Category.distribution, BuildVisibility.debugOnly, with(Items.graphite, 5)); speed = 4f; }}; ductRouter = new DuctRouter("duct-router"){{ - requirements(Category.distribution, BuildVisibility.debugOnly, with(Items.graphite, 10, Items.metaglass, 4)); + requirements(Category.distribution, BuildVisibility.debugOnly, with(Items.graphite, 10)); speed = 4f; }}; ductBridge = new DuctBridge("duct-bridge"){{ - requirements(Category.distribution, BuildVisibility.debugOnly, with(Items.graphite, 20, Items.metaglass, 8)); + requirements(Category.distribution, BuildVisibility.debugOnly, with(Items.graphite, 20)); speed = 4f; }}; @@ -1596,6 +1599,21 @@ public class Blocks implements ContentList{ consumes.liquid(Liquids.water, 0.1f).boost(); }}; + //TODO should be crusher or something + impactDrill = new BurstDrill("impact-drill"){{ + requirements(Category.production, with(Items.silicon, 60, Items.beryllium, 90, Items.graphite, 50)); + drillTime = 60f * 10f; + size = 4; + drawRim = false; + hasPower = true; + tier = 6; + drillEffect = Fx.mineHuge; + itemCapacity = 30; + + consumes.power(3f); + consumes.liquid(Liquids.water, 0.2f); + }}; + waterExtractor = new SolidPump("water-extractor"){{ requirements(Category.production, with(Items.metaglass, 30, Items.graphite, 30, Items.lead, 30, Items.copper, 30)); result = Liquids.water; diff --git a/core/src/mindustry/maps/planet/ErekirPlanetGenerator.java b/core/src/mindustry/maps/planet/ErekirPlanetGenerator.java index 9770ceef1a..ab93861b33 100644 --- a/core/src/mindustry/maps/planet/ErekirPlanetGenerator.java +++ b/core/src/mindustry/maps/planet/ErekirPlanetGenerator.java @@ -172,6 +172,19 @@ public class ErekirPlanetGenerator extends PlanetGenerator{ }else if(empty && noise(x + 782, y, 4, 0.8f, 40f, 1f) > 0.7f && block != Blocks.carbonWall){ ore = Blocks.wallOreBeryl; } + }else{ + boolean empty = true; + for(Point2 p : Geometry.d8){ + Tile other = tiles.get(x + p.x, y + p.y); + if(other != null && other.block() != Blocks.air){ + empty = false; + break; + } + } + + if(empty && noise(x + 150, y + x*2 + 100, 4, 0.8f, 42f, 1f) > 0.73f/* && floor == Blocks.yellowStone*/){ + ore = Blocks.oreTungsten; + } } }); diff --git a/core/src/mindustry/world/blocks/production/BurstDrill.java b/core/src/mindustry/world/blocks/production/BurstDrill.java new file mode 100644 index 0000000000..dad9881518 --- /dev/null +++ b/core/src/mindustry/world/blocks/production/BurstDrill.java @@ -0,0 +1,72 @@ +package mindustry.world.blocks.production; + +import arc.graphics.g2d.*; +import arc.math.*; +import mindustry.graphics.*; + +public class BurstDrill extends Drill{ + public int outputAmount = 5; + + public BurstDrill(String name){ + super(name); + + itemCapacity = 20; + //does not drill in the traditional sense, so this is not even used + hardnessDrillMultiplier = 0f; + //generally at center + drillEffectRnd = 0f; + } + + public class BurstDrillBuild extends DrillBuild{ + + @Override + public void updateTile(){ + if(dominantItem == null){ + return; + } + + if(timer(timerDump, dumpTime)){ + dump(items.has(dominantItem) ? dominantItem : null); + } + + if(items.total() <= itemCapacity - outputAmount && dominantItems > 0 && consValid()){ + + float speed = efficiency(); + + timeDrilled += speed; + + lastDrillSpeed = dominantItems / drillTime * speed; + progress += delta() * dominantItems * speed; + }else{ + lastDrillSpeed = 0f; + return; + } + + if(dominantItems > 0 && progress >= drillTime && items.total() < itemCapacity){ + for(int i = 0; i < outputAmount; i++){ + offload(dominantItem); + } + + progress %= drillTime; + drillEffect.at(x + Mathf.range(drillEffectRnd), y + Mathf.range(drillEffectRnd), dominantItem.color); + } + } + + @Override + public void draw(){ + Draw.rect(region, x, y); + drawDefaultCracks(); + + //TODO charge + + if(dominantItem != null && drawMineItem){ + Draw.color(dominantItem.color); + Draw.rect(itemRegion, x, y); + Draw.color(); + } + + Drawf.spinSprite(rotatorRegion, x, y, timeDrilled * rotateSpeed); + Draw.rect(topRegion, x, y); + } + } +} diff --git a/core/src/mindustry/world/blocks/production/Drill.java b/core/src/mindustry/world/blocks/production/Drill.java index d31a130f96..6db1bee899 100644 --- a/core/src/mindustry/world/blocks/production/Drill.java +++ b/core/src/mindustry/world/blocks/production/Drill.java @@ -311,13 +311,17 @@ public class Drill extends Block{ @Override public void drawCracks(){} + public void drawDefaultCracks(){ + super.drawCracks(); + } + @Override public void draw(){ float s = 0.3f; float ts = 0.6f; Draw.rect(region, x, y); - super.drawCracks(); + drawDefaultCracks(); if(drawRim){ Draw.color(heatColor);