From 26692a31992b2b28a793f9bbd67c2abc54d82cc2 Mon Sep 17 00:00:00 2001 From: Anuken Date: Mon, 6 Dec 2021 14:30:54 -0500 Subject: [PATCH] Small deconstructor --- .../payload/small-deconstructor-top.png | Bin 0 -> 1187 bytes .../blocks/payload/small-deconstructor.png | Bin 425 -> 1724 bytes core/assets/icons/icons.properties | 1 + core/assets/logicids.dat | Bin 3688 -> 3709 bytes core/src/mindustry/content/Blocks.java | 1 - .../src/mindustry/content/ErekirTechTree.java | 6 +++++- .../maps/planet/ErekirPlanetGenerator.java | 4 ++-- .../ui/fragments/PlacementFragment.java | 2 +- core/src/mindustry/world/Block.java | 4 ++++ .../world/blocks/payloads/BlockProducer.java | 7 +++++++ .../world/blocks/payloads/Constructor.java | 2 +- .../blocks/payloads/PayloadDeconstructor.java | 7 +++++++ .../world/blocks/payloads/PayloadSource.java | 2 +- tools/build.gradle | 2 +- 14 files changed, 30 insertions(+), 8 deletions(-) create mode 100644 core/assets-raw/sprites/blocks/payload/small-deconstructor-top.png diff --git a/core/assets-raw/sprites/blocks/payload/small-deconstructor-top.png b/core/assets-raw/sprites/blocks/payload/small-deconstructor-top.png new file mode 100644 index 0000000000000000000000000000000000000000..b3e82d05299c307fb576cc0d3c47e8489986574d GIT binary patch literal 1187 zcmeAS@N?(olHy`uVBq!ia0y~yU`POA4mJh`hDS5XEf^RW7>k44ofy`glX=O&z!K}} z;uumf=j~j>qT2=nuKP`9o)it*;jysG_1uC}OOLaA%=MglQn04QN2@laFcQyVP^-Z+wiCq~*;u?fg4hY>JF6 z1sQg*XsSl`a52O%O~1s`#KbUtg45!++6+Iw{Z-qwaNX?#>eCiEkt zmH*FuW{&9-+>C1y6c`FP4YwR-cVl7DOXTVP(AdCmK=sQ;F8K})h8U&H{CmX=czJm zm}+qJCC}+7mDqJV@~^$?Q{jD9=DhKp`)aXs-z-vOWwxq3F|kl}6spVAO};(xpYOL9 zOF|Bv{%ohI>Ehw!_hac+ft|{G7d=c|*Ya*hW0a_)6`2yx|f;rBJxE9bO_%ywL}WW)^&^%9bNShpCcpNRc*;;4@U_e0@nLOv{8MC=k( z9b+B39}0^Jg`8vED)UPqm(z}GmV~&0;WMTk+G@`{dRLpTe#7WJCE)d?n_00JCaGN6 zlehDgp~EJrO0BHxFT91Tb;>f89(ET${qd>9WQ)z*58Ng{eyDo+%-ZYH`JwyElndSCzSO5jmo++>GGF0U&UX%{(GgJdBX2Lt<##m>S$EcP2JN$C3oF)YZkdU ztr7F)j6BZJYiCuyML0Tt)^0J=(C(*(j(@jJmHAb>JEi(ggKBlt60vSu$1h25Kd9cG zx^K6oP*K*!X$RgltvS?ho9CIQd+V;CcSGurJI_ru*SZEfeSG`cQs-;bL#exg7sV|K zBC>w8Y;AcUEccJmn{zRL)sN*7o+qS)mSyPH9CA8zQD3f3Dwi|T_>#cdcK-~oh(fay z4`U9gZ&6ue^QXo{MWkM-Y~4dk44ofy`glX=O&z*gqz z;uumf=WXonyl8g;TP2d@cubSf&kyyF2f9BkqH}_8QSN%9?xAF5g=ic3Ye(?VE|236g ze@O_PkzY6Yym=+dDv>xX$*Sr-Y=5W>wj_VY+CTI>B15Jy!rd@tK{srvSKWd-MU)k z32SzP^9r>kCzdOy`en|F$_&WuUK$y6dlJ)*GckvPKFO|eS>afxm%EOG{e9ivx7<&= zH)e?&w>-L#JT;HMbM2*qDQg*5`UI)25ic^G@X0kwcoWl<3GX-XD+Sa{=$Ihluv+|+ zOn{ct7HO$w`P)TX6Ka3U?O(p{!^_$ak6*r&ysjg3ZTrJNMP@;7BiCMgf%TInCc)N8XE63JX$$|&FYS{ZY*#H0i@;J=Ar0~z%%lG^4#7uwn zxSdy1W~zf!U({3XmY>pmQSY`eem;A48po7>I<6mIzKj%?wfeb~c$-TgL$x)Ybor}@S~#i}RsR{THw&>)BNr|uz6@z>E+ z+l^b_KJ5K*T4txX%G{4q%s=^pqAi)L*L-J)XX%@mtaN|j75jH9w7eM}1hS~J96ez; z>HUF^?;ri^^R;8}`J?qTozfaQxk4-Y17SX>f ztj^No(DW5-R|FQe)STLU=}*ywZL)!kX`3}OGv_Yj5c;(8{zaL~3vWz*Y`DX!YR9#9 zBg^`q&*N{t_c)-Nxi#5pYK^?2TzQs5#=_9IcPCp;3Hf|2Hdd=Yw%nOfa^hOo1q-qn z*W7D~UKGu^=2%nIVsFMQforQd?s6uW%3t8#C3GOmZH;<~>VaaHaHa^Jj<04`x27^U z#5Pqa%fAReo%xJ}<3gFp*oVn6Wi#_C)z#)-112)?~&x%ySQvUf@~x z%2@u|&{e9f!Am&gNcVvdkgj=Ts6Q4hck)MBm zpZC8Cd4In(fdT)1*!|OqV%A`{*!weaPPt2zvZ!qnlf@^^>cbXFU*di-)=J-v+c<+m ztG%50XF`$thtvTOod+yFZu+z2qtK0$6h3ub}X8y8k;kpsP@=jFkiGazODP30z%Jj{1 zvv17MnsZdq9pU{w<>!^NPZ~a*vUvIB znZPyktl)r0$*a^>a4zuO*L=12mP|%hfJl=G&!Yum6NPy4WtJ$2^!bQC_sV~{!68?= u-SnVOgW-ht37Sov49QCO4|=uyXY|;7)ab@>r78vn1_n=8KbLh*2~7ZlkS>A% literal 425 zcmeAS@N?(olHy`uVBq!ia0y~yU@!n-4mJh`hH$2z?FU`+OO zaSX|5yn55#>u`d^frsjsoGmOYt}J~ZYgKw->4R3ArV9RpuI%dX172L>oOEqm67lueD>W>;|VPySjZEmLypOj__CH0`@olo}F=c zvLnM;!PpNeLI?6(!fis#x0ieFYh4z8z4v)P|M$5cRqh-p+x)A%Ol#he{s7xW{Bmjs zO>EP5M^@HWzG_u(o?gK*?+BywM-?89M)g1k4I54-r$?PK0#g1*8Vo?&83Aek0}Ub-Osq=|2`eb5&TC{``H_d?1f&1?hL{gu zI8Jb$?_}Kh&{9#s-A0zV=;&odg>)NT#+{EXg#wu7F*7cGkjbIJc|Oh|vm%R8^^xPM ec%OyO*l$j)4A}8@4Ko7+1B0ilpUXO@geCy@l&ewz diff --git a/core/assets/icons/icons.properties b/core/assets/icons/icons.properties index 8dade2a87d..61b222cbed 100755 --- a/core/assets/icons/icons.properties +++ b/core/assets/icons/icons.properties @@ -475,3 +475,4 @@ 63231=regen-projector|block-regen-projector-ui 63230=titan|block-titan-ui 63229=horde|block-horde-ui +63228=small-deconstructor|block-small-deconstructor-ui diff --git a/core/assets/logicids.dat b/core/assets/logicids.dat index fae5966c56f0ddf052e86157c080338cb9719069..55fa2bf2f05eb6a6033c25d22713c98dcf860c3a 100644 GIT binary patch delta 37 tcmaDM^H+w6;q*qPN8BR9#kq+&Il3vS$@zK3B}JvlCHY00A9J@d0RR(I4zB^FoG+;nYT^N8Fo#a { + node(smallDeconstructor, () -> { node(largeConstructor, () -> { }); + + node(deconstructor, () -> { + + }); }); }); }); diff --git a/core/src/mindustry/maps/planet/ErekirPlanetGenerator.java b/core/src/mindustry/maps/planet/ErekirPlanetGenerator.java index c854cf27e8..053620b7c9 100644 --- a/core/src/mindustry/maps/planet/ErekirPlanetGenerator.java +++ b/core/src/mindustry/maps/planet/ErekirPlanetGenerator.java @@ -196,12 +196,12 @@ public class ErekirPlanetGenerator extends PlanetGenerator{ } }else if(!nearWall(x, y)){ - if(noise(x + 150, y + x*2 + 100, 4, 0.8f, 60f, 1f) > 0.76f/* && floor == Blocks.yellowStone*/){ + if(noise(x + 150, y + x*2 + 100, 4, 0.8f, 60f, 1f) > 0.75f/* && floor == Blocks.yellowStone*/){ ore = Blocks.oreTungsten; } //TODO design ore generation so it doesn't overlap - if(noise(x + 999, y + 600, 4, 0.63f, 50f, 1f) < 0.22f/* && floor == Blocks.yellowStone*/){ + if(noise(x + 999, y + 600, 4, 0.63f, 50f, 1f) < 0.21f/* && floor == Blocks.yellowStone*/){ ore = Blocks.oreThorium; } } diff --git a/core/src/mindustry/ui/fragments/PlacementFragment.java b/core/src/mindustry/ui/fragments/PlacementFragment.java index 75d1bc9e3e..6579accef4 100644 --- a/core/src/mindustry/ui/fragments/PlacementFragment.java +++ b/core/src/mindustry/ui/fragments/PlacementFragment.java @@ -445,7 +445,7 @@ public class PlacementFragment extends Fragment{ } boolean unlocked(Block block){ - return block.unlockedNow() && block.placeablePlayer && (state.rules.hiddenBuildItems.isEmpty() || !Structs.contains(block.requirements, i -> state.rules.hiddenBuildItems.contains(i.item))); + return block.unlockedNow() && block.placeablePlayer && block.environmentBuildable(); } boolean hasInfoBox(){ diff --git a/core/src/mindustry/world/Block.java b/core/src/mindustry/world/Block.java index 069bcf3154..8064ee77e7 100644 --- a/core/src/mindustry/world/Block.java +++ b/core/src/mindustry/world/Block.java @@ -781,6 +781,10 @@ public class Block extends UnlockableContent{ return buildVisibility != BuildVisibility.hidden && buildVisibility != BuildVisibility.debugOnly; } + public boolean environmentBuildable(){ + return (state.rules.hiddenBuildItems.isEmpty() || !Structs.contains(requirements, i -> state.rules.hiddenBuildItems.contains(i.item))); + } + public boolean isStatic(){ return cacheLayer == CacheLayer.walls; } diff --git a/core/src/mindustry/world/blocks/payloads/BlockProducer.java b/core/src/mindustry/world/blocks/payloads/BlockProducer.java index 53f21612c4..1d1f293e41 100644 --- a/core/src/mindustry/world/blocks/payloads/BlockProducer.java +++ b/core/src/mindustry/world/blocks/payloads/BlockProducer.java @@ -9,6 +9,7 @@ import mindustry.content.*; import mindustry.entities.units.*; import mindustry.gen.*; import mindustry.graphics.*; +import mindustry.logic.*; import mindustry.type.*; import mindustry.ui.*; import mindustry.world.*; @@ -136,6 +137,12 @@ public abstract class BlockProducer extends PayloadBlock{ Draw.rect(topRegion, x, y); } + @Override + public double sense(LAccess sensor){ + if(sensor == LAccess.progress) return progress; + return super.sense(sensor); + } + @Override public void write(Writes write){ super.write(write); diff --git a/core/src/mindustry/world/blocks/payloads/Constructor.java b/core/src/mindustry/world/blocks/payloads/Constructor.java index fab10c67b4..96016ad03a 100644 --- a/core/src/mindustry/world/blocks/payloads/Constructor.java +++ b/core/src/mindustry/world/blocks/payloads/Constructor.java @@ -43,7 +43,7 @@ public class Constructor extends BlockProducer{ } public boolean canProduce(Block b){ - return b.isVisible() && b.size >= minBlockSize && b.size <= maxBlockSize && !(b instanceof CoreBlock) && !state.rules.bannedBlocks.contains(b); + return b.isVisible() && b.size >= minBlockSize && b.size <= maxBlockSize && !(b instanceof CoreBlock) && !state.rules.bannedBlocks.contains(b) && b.environmentBuildable(); } public class ConstructorBuild extends BlockProducerBuild{ diff --git a/core/src/mindustry/world/blocks/payloads/PayloadDeconstructor.java b/core/src/mindustry/world/blocks/payloads/PayloadDeconstructor.java index 701384d0b2..00db606106 100644 --- a/core/src/mindustry/world/blocks/payloads/PayloadDeconstructor.java +++ b/core/src/mindustry/world/blocks/payloads/PayloadDeconstructor.java @@ -7,6 +7,7 @@ import arc.util.io.*; import mindustry.content.*; import mindustry.gen.*; import mindustry.graphics.*; +import mindustry.logic.*; import mindustry.ui.*; import static mindustry.Vars.*; @@ -189,6 +190,12 @@ public class PayloadDeconstructor extends PayloadBlock{ } } + @Override + public double sense(LAccess sensor){ + if(sensor == LAccess.progress) return progress; + return super.sense(sensor); + } + @Override public boolean shouldConsume(){ return deconstructing != null && enabled; diff --git a/core/src/mindustry/world/blocks/payloads/PayloadSource.java b/core/src/mindustry/world/blocks/payloads/PayloadSource.java index bacd26f287..d2146d5a48 100644 --- a/core/src/mindustry/world/blocks/payloads/PayloadSource.java +++ b/core/src/mindustry/world/blocks/payloads/PayloadSource.java @@ -71,7 +71,7 @@ public class PayloadSource extends PayloadBlock{ } public boolean canProduce(Block b){ - return b.isVisible() && b.size < size && !(b instanceof CoreBlock) && !state.rules.bannedBlocks.contains(b); + return b.isVisible() && b.size < size && !(b instanceof CoreBlock) && !state.rules.bannedBlocks.contains(b) && b.environmentBuildable(); } public boolean canProduce(UnitType t){ diff --git a/tools/build.gradle b/tools/build.gradle index b9713feb8f..914fb69e25 100644 --- a/tools/build.gradle +++ b/tools/build.gradle @@ -45,7 +45,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"], +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"], ["d57c65", "e3ae6f", "f7e97e"], ["ffffff", "dcc6c6", "9d7f7f"], ["df7646", "b23a4d", "752249"], ["3c3837", "515151", "646567"], ["5757c1", "6f80e8", "88a4ff"], ["8f665b", "b28768", "c9a58f"], ["4c5878", "768a9a", "a0b0c8"], ["62ae7f", "62ae7f", "84f491"]])