From 6f67ea1742a018798bc3226e6ef1a7a29940d476 Mon Sep 17 00:00:00 2001 From: Anuken Date: Mon, 20 Dec 2021 10:54:09 -0500 Subject: [PATCH] "Better" build tower sprite / Assembly cleanup --- .../blocks/defense/build-tower-glow.png | Bin 0 -> 2079 bytes .../sprites/blocks/defense/build-tower.png | Bin 1742 -> 2513 bytes core/src/mindustry/graphics/Drawf.java | 10 +++- .../world/blocks/defense/BuildTurret.java | 16 +++++++ .../world/blocks/units/UnitAssembler.java | 44 ------------------ .../blocks/units/UnitAssemblerModule.java | 2 +- tools/build.gradle | 41 ---------------- 7 files changed, 26 insertions(+), 87 deletions(-) create mode 100644 core/assets-raw/sprites/blocks/defense/build-tower-glow.png diff --git a/core/assets-raw/sprites/blocks/defense/build-tower-glow.png b/core/assets-raw/sprites/blocks/defense/build-tower-glow.png new file mode 100644 index 0000000000000000000000000000000000000000..757d26de8e6b16466b91238b3be33ffaf7addac9 GIT binary patch literal 2079 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 ZZesaZ)2J`_l7WGN!PC{xWt~$(695HMVtN1o delta 1727 zcmca8e2#a5ay z<&*bh#8W`Ecj2i`F_O16q%C|I?kjkTJ{8E@x^4-xghzu+;^i6HUDhh;CnW9i z&a4;Ol7Ij4@4Egu59c3eZ9@Tes%MkrbGFwOD!@F;JE6;qLzu)z=@Z}t} ze_Z?iKV+>euG{%<*T2}hM@+TX9x3hnsj0jFSJZT?g)@FG+!teKs?U9af#G_Mx;ID6 z=ebc12CNFE_fIl4U8zye=161kI(z-szV%VUx{5OxR+zrO_*i)AX9oGR-K=#lE4M7= zTd?hC!Lxens}3B#t6KwZ^(b1x{*TkV;3(lk)hpL> zKC^u&cjo@wD9)y3K8#;d{=E~L>uA6{;ndFQ&u9OwH#4X&*JN_i5o6dU;KNX0Ws{z7 z!!I>!|L!I14{zT7e)I8Kg^*Oo5P@ei-rx7}T=g>kx_!8(+oSK(EYsrH{MFLIg^P2>gO*G_KyG&~5D=r2H2ZdR(TD?mzoe*%!f5t4zup(iF z=z=nV8PBYjDrC&`H}y9?Ea=J*^sG2|=bPtFpXVkC6g{0ZC0e*ig5mi||GPf*uhfG6 z^Pi2^eHNknEMk7%_h$l0dv8VTwBYxT(9`8u)Hh?x&56&hKK!V6Bj}m6tZn6v-@oJD zOUW}Aa~#?4m)pB^pZ?1k8ySySIqZ~v;84(3)W&kCQ&gT|1ApVB)rNDDi=X!2wHIev z&FS^k&YSzi6KSbgv#rdQZLsvJooBu6*}eK5X9L9;(sym#vS7+W!^xJj| z?b|`73V}%sDywCd>^(kZ;luQe$^G+ej_kJor)YnB_8otlw>xJEcumTCuHbTe<)u9{ zwPaY`Ke+@K(npPvafF8+|-niTE}hL&uA)e=)K-~^Xg~bJacZJiCUJ^+bErOBu9j<3U-etd^nrlFmkhfJ3<|RU zGdLT6>7-t}@@#pZ|Fs4=#U>-X2eR*sw&mk`n9`+ zpRG^h^UBVubFBt9v;`EB*Cp_Bq09 z*XyOJT8FRo-~QzC3xyx1D@wCoIeXb2oc4^lNnuT_uv4bro#!dBYA5TLtzV?`;y=Se z_0Nq>CSN8feo3=C(8IW}hU0x)-SIx&jWYzYw$506oJIR{y886XZ)dQcXkMQ0l4aSM z=Ib%@J$u4S)9g#J>Qf~*N^z`wZ&y_lwAJ9-yKibY-+$npbEw9lFepyCDc;&k;m5Jy z%ryRI%%@f>ZBYpDot*MjI(5hY{q=EY*maoeXZq&tzgL`GR%H43*~6gE zy7w&&VkOmECrrNo|AXR>ojbne?~mC3A#tBcAd})$qafQ4i=VGg4{_IEb(|Eqwc_@& z`jfXVL~*DdmKSNccZOYrp`gBMl}OXIZ(qfpUC+D2tMRW-qCC1eV#88~!UsiV{>!&< zcd$O1_Kdm9H^A5T0^c>6t0mvIoMD&xGb!%u`B@Ry7}lAbU6vx(;$1gygLvd@ev?y8 ze1cBgpBvlOYsd< { - t.left(); - for(var mod : modules){ - //TODO crosses for missing reqs? - t.image(mod.block.uiIcon).size(iconMed).padRight(4).padTop(4); - } - }).fillX().row(); - }*/ - @Override public void display(Table table){ super.display(table); @@ -311,8 +285,6 @@ public class UnitAssembler extends PayloadBlock{ droneProgress = 0f; } - //TODO units should pick up and move payloads into position - Vec2 spawn = getUnitSpawn(); if(moveInPayload() && !wasOccupied){ @@ -341,14 +313,11 @@ public class UnitAssembler extends PayloadBlock{ warmup = Mathf.lerpDelta(warmup, efficiency(), 0.1f); if((progress += edelta() * eff / plan.time) >= 1f){ - //TODO ???? should this even be part of a trigger consume(); - //TODO actually just goes poof var unit = plan.unit.create(team); unit.set(spawn.x + Mathf.range(0.001f), spawn.y + Mathf.range(0.001f)); unit.rotation = 90f; - //TODO annoying so nothing is created yet unit.add(); progress = 0f; @@ -359,8 +328,6 @@ public class UnitAssembler extends PayloadBlock{ }else{ warmup = Mathf.lerpDelta(warmup, 0f, 0.1f); } - - //TODO drones need to indicate that they are in position and actually play an animation } @Override @@ -387,7 +354,6 @@ public class UnitAssembler extends PayloadBlock{ //draw drone construction if(droneWarmup > 0){ - //TODO draw it - better animations? Draw.draw(Layer.blockOver + 0.2f, () -> { Drawf.construct(this, droneType.fullIcon, Pal.accent, 0f, droneProgress, droneWarmup, totalDroneProgress, 14f); }); @@ -411,16 +377,6 @@ public class UnitAssembler extends PayloadBlock{ Draw.color(); }); - /* - Tmp.tr1.set(plan.unit.fullIcon); - Tmp.tr1.setY(Tmp.tr1.getY() + plan.unit.fullIcon.height * (1f - progress)); - - //TODO what if building animation - Draw.rect(Tmp.tr1, spawn.x, spawn.y + (Tmp.tr1.height/2f - plan.unit.fullIcon.height/2f) * Draw.scl, Tmp.tr1.width * Draw.scl, Tmp.tr1.height * Draw.scl); - Lines.stroke(1f, Pal.accent); - Draw.alpha(warmup); - Lines.lineAngleCenter(spawn.x, spawn.y - plan.unit.fullIcon.height/2f * Draw.scl + plan.unit.fullIcon.height * progress * Draw.scl, 0f, plan.unit.fullIcon.width * 0.9f * Draw.scl);*/ - Draw.reset(); Draw.z(Layer.buildBeam); diff --git a/core/src/mindustry/world/blocks/units/UnitAssemblerModule.java b/core/src/mindustry/world/blocks/units/UnitAssemblerModule.java index 5522e00298..e379d50d6a 100644 --- a/core/src/mindustry/world/blocks/units/UnitAssemblerModule.java +++ b/core/src/mindustry/world/blocks/units/UnitAssemblerModule.java @@ -106,7 +106,7 @@ public class UnitAssemblerModule extends PayloadBlock{ @Override public void drawSelect(){ - //TODO draw area + //TODO draw area? if(link != null){ Drawf.selected(link, Pal.accent); } diff --git a/tools/build.gradle b/tools/build.gradle index 56758d2ed0..e0e0725c1b 100644 --- a/tools/build.gradle +++ b/tools/build.gradle @@ -133,47 +133,6 @@ def antialias = { File file -> new Fi(file).writePng(out) } -def tileImage = { File file -> - def image = new Pixmap(new Fi(file)) - - for(x in 0..image.width-1){ - for(y in 0..image.height-1){ - if(x > (image.height - 1 - y)){ - def rx = image.height - 1 - y - def ry = x - - image.setRaw(x, y, image.getRaw(rx, image.height - 1 - ry)) - } - } - } - - def result = new Pixmap(image.width * 2, image.height * 2) - - result.draw(image.flipX(), 0, 0) - result.draw(image, image.width, 0) - result.draw(image.flipX().flipY(), 0, image.height) - result.draw(image.flipY(), image.width, image.height) - - for(x in 0..result.width-1){ - for(y in 0..result.height-1){ - int p = result.getRaw(x, y) - if(x <= y){ - List list = colorMap.get(p) - int index = colorIndexMap.get(p, -1) - - if(index != -1){ - int resultIndex = (x == y ? 1 : index == 2 ? 0 : index == 0 ? 2 : 1); - result.setRaw(x, y, list[resultIndex].rgba()) - } - } - } - } - - new Fi(file).writePng(result) - result.dispose() - image.dispose() -} - task antialiasImages(){ doLast{ for(def img : project.getProperty("images").split(",")){