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 zcmV;U1YG-xP)Px(T}ebiRCt{2oiTFTFc3w*G?~d2Qn*N=ibc+#%B9B#NS#TQ$q{^nOe&9SA0Xp0 zmCukul?xXte1%j_leH*{0Cs_0kc9SCwj|Sw|3na=Kx%b+cmMj~;{{?|Uv5{?7dWH* z`u+Htdd+&bd&0}}zIa2(hPzE0GE(LqwOmI`1buKx}mPyz$a_RXoP=#xm~@5<`Vd5g%AAS z0|=LpMl*b1AOLU)F|@-6Mg#yZVGN7#fq($OCG@chABYG5TmoPlK9CRqoVNt)@BxMZ zpq_+SgRlNRrvChhhxc2vTDWljPjn_s{QPkf-H^tNx#o)QVC-R>QKYA<`1FnMN&(M(i&A7$dwQq zB@G*{J$V~Skkk@FqeitxawMdnhFi^?NkVG4+^;2sR*k9+4N2gHPkjCI+4Quw}9slq2X5*D=w zNR9zhhfl;LEb15_83oNHd}2((qDDcIdBEJlC;Ac=H4jLIPjua8w&4?;OST9N3G5GK zG?;t%K>Zr42}pgSHYaK>BB&x@N#PT(CwwH*2oZ3#XKniv-_G3Ele zD<;X%ZQ0vm!YF*HhB-Ffax#}@MvKo0RYS-vX6MHOnX(Hi^bLIH*bTqU) zo$w1Z`1mDCOq#t!iSUc`l<><`W%z~K5f(KH(zsQ@ZubPhZbh}EYpgX7P?-sHPBT!r zoaZf0TlBZdsioFkdEz44L-9{~ZqC`Th7E1|P#{i8!I(M`aTW^}X7By9ilY?dv%# z^;+Q?-BHmOIB-~M_=L5D;1eGH0ZR#^4|@2gSV_nl5~gS^e8NJ)(Jvl;8f^(#Gtv;P zhfioqSaCMU;atKev?Q!N{CqSd6n`RiuHgeZGv*=z=Nvv!Dj{2dhku|%LY4pz|CC$_ zVgVk0m>dZr0UmxDsRXsJGIS0|B&d9ur*jHd!auIQC}TZu$6f#c002ovPDHLkV1oE% B5y$`l literal 0 HcmV?d00001 diff --git a/core/assets-raw/sprites/blocks/payload/small-deconstructor.png b/core/assets-raw/sprites/blocks/payload/small-deconstructor.png index 5b94843d6572a2a6ad4419ec51c1371b9656ea3c..f3d979408feaa99538b1d72e920a7d72e8194fb4 100644 GIT binary patch literal 1724 zcmV;t21EIYP)Px*c1c7*RCt{2UAt~uM-V+C45)DXGeS-|J5dpbi;lh9#H>#XMSYdg&kC~m>*}arcCGnEGGw1Bi?%n6X-fl?6IlLB50Bp@Y`;1>0dO6)t0d$FYk)(j zCZx!xASF&|np$a4ZHuK@QrnUOxXfI_Qt}1r)@acW<E2};xC z`oQhAkp&2~>SGbXihKu-2nYZD^y5}HbaDLc)8CHVT$k$OhYcwll|UMfTICCb`5O*e z?z92(&CQkwl>RJ5@#*PV5g9eYQ4U&d(6CJijTi?*(0p?PfJQ!NoTXOdstIiyUEz!k z*GJm`CqfDw@}DzOb0x`csQ<&^Fl-6=Ey4*G>sxxaGllKpjrhwPxfdjz@frj94pLh= z1ADCZ0AB=-kz*p?q0~R_s47bU;86r81jWcPlJCIr@8bTBO+Elj{4Qq+QbvxMe21F; zEe_8gYd{SV_JMqd8veOX%~J@{6k(spchL0D?@?}bLx&=KX0G?yN8){y_;+=5f=`K+ z6xl}DYGLj4^vvW<*(x7^Hkm`}1=SY8C!{7hR`~$**+BAy%&rJJ;U+{x>A+pfd`hQZ z+3x|GNR>j(5^9xC37QE&aa@BOt9(k)M1a<%E`(M#H4Q;IN7H-PxQPH7V@RAH zP0wRi#R9zjkhUFB0cNu)X=$CN2omzC z-_ab?q1cn-F}ON*?5A0ZxhYCveARqfrAIh0iM)?HmH zk6m{|0U434MWCQ-0j%DHTcTS5tj2;`qe}s55Z0>*-3eedAJ7ZB62NLktS59Oz;i@b z0$2=)^)@=%l>k6pf_ft#=uiNluRUV5(WL-DAA7_s(5(P~4skt`4|Fa7AS1AM@`1>S zSwqx3`ip|GZ0_?xiYu>dv5r#u7fC-ZZVh|ulIIL*oRo|h+f-3_IPph131bh|Rn z8lzhoCxz8=!Jd~T0*ynE)fU&Dx6+b#$P72@T`Cz6I-8-^XlTuRhMTmhJ7!2Vp!SjO zR$E*xx6)E~&1Y+X)p`0>p};caT-@JfYr>WQ!!v^3Jn%AfRlIdvt%VZ*F7EH}-GE1b z!{bv3q8!jfF>d(xzChDIKdMXsUGh_(jTJTgb0SP?kWYCw7S!}_{&3BI4_F+YKgF<~ z$5=GL@$c&Bq-e7?O8~#|;1D}T5la2zia-`XdS1ksM3CCb5n<=#Tpyp`zDxdiA5TuK zQBeN)KK?9P11JYLz4>9BcSKqv6+MCiIPxib!#E=JUitxj8{J;9mVsLxg+<2O2biW@+E17Z1;VP z-Jig@MT7Moz!jkf@}+6|K7@ZEM(=DxAe3Nb}0R=Zaim zC0%700!4%|T;QAo#fKOdlt@8p14=~L2l5?KzDURi7`;__A&E$ac$~fut<`C95YEw|+W2z>o37}2BgVl}N9B7JA z6oNDi;-D6h5)5w~q#zWIOc&=$Z|Sf=Z5xL*!AyWLkndnAf{6fQBHzJEg#Q6Zv&Ayl S$0B+F0000A% literal 425 zcmV;a0apHrP)Px$V@X6oRA_LyRC(=VWI5^a$;2k=3(52voJc4)+!9@or?@;K{4h|09 zLI)Ajnl@?j<@@uF9~qus-UI@vp5NZT6+CCD0YhfFm{-LHEEn^NLO1Y-r@(+Zp27n5 z@i6)N_)KBhne)qw)@z#ZWU_&_n|KHhll6KV9CXUeW>fq|G;QJ-o(winzk&OkXv331 z0L>9y@MIFeZbVl+R5!PGNxp@qSJ#c_j}P~q@g&^9cC-3-b}F94k5E0L4<07LG(Bg# zS$TbV>V+qRmv{)C!~sL`Bn$|FCs9BsJP86q;)xs(8c)Q4G4MnR7zdgjAZI)+0lDKj5>Nu30|BMrX$U9@&t5=jcxnM9;z6okOrhon*_C-v Txb3V100000NkvXXu0mjf_mrzr 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"]])