From c0f422b76c577710d43914f0df4079da45671784 Mon Sep 17 00:00:00 2001 From: EyeOfDarkness <64228877+EyeOfDarkness@users.noreply.github.com> Date: Mon, 4 Dec 2023 03:55:00 +0800 Subject: [PATCH] 1.4 - Fixed blending issues - Most buildings draw limitations removed - Phase fabric item now glows --- .../armored-duct-top-0-replace.png | Bin 0 -> 340 bytes .../armored-duct-top-1-replace.png | Bin 0 -> 454 bytes .../armored-duct-top-2-replace.png | Bin 0 -> 450 bytes .../armored-duct-top-3-replace.png | Bin 0 -> 622 bytes .../armored-duct-top-4-replace.png | Bin 0 -> 444 bytes .../distribution/duct-top-0-replace.png | Bin 0 -> 305 bytes .../distribution/duct-top-1-replace.png | Bin 0 -> 390 bytes .../distribution/duct-top-2-replace.png | Bin 0 -> 413 bytes .../distribution/duct-top-3-replace.png | Bin 0 -> 547 bytes .../distribution/duct-top-4-replace.png | Bin 0 -> 406 bytes mod.json | 2 +- src/lights/AdvanceLighting.java | 45 ++++++++---------- src/lights/graphics/AltLightBatch.java | 16 ++++--- 13 files changed, 31 insertions(+), 32 deletions(-) create mode 100644 assets/sprites/blocks/distribution/armored-duct-top-0-replace.png create mode 100644 assets/sprites/blocks/distribution/armored-duct-top-1-replace.png create mode 100644 assets/sprites/blocks/distribution/armored-duct-top-2-replace.png create mode 100644 assets/sprites/blocks/distribution/armored-duct-top-3-replace.png create mode 100644 assets/sprites/blocks/distribution/armored-duct-top-4-replace.png create mode 100644 assets/sprites/blocks/distribution/duct-top-0-replace.png create mode 100644 assets/sprites/blocks/distribution/duct-top-1-replace.png create mode 100644 assets/sprites/blocks/distribution/duct-top-2-replace.png create mode 100644 assets/sprites/blocks/distribution/duct-top-3-replace.png create mode 100644 assets/sprites/blocks/distribution/duct-top-4-replace.png diff --git a/assets/sprites/blocks/distribution/armored-duct-top-0-replace.png b/assets/sprites/blocks/distribution/armored-duct-top-0-replace.png new file mode 100644 index 0000000000000000000000000000000000000000..625d76cd53bd20df1225691e199b57a9c6d6a5f0 GIT binary patch literal 340 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?3oVGw3ym^DWNq$1fP z$d`ek9jLPhi2r?KV5r-`z|hFS!0^JFfx+@21B0B_kEzTuK()6#T^vIyZY6#B#P{!f z1FOYR-&6(hH_=mkw?wIBNjP;rp1IV8|NsB~)0VzSi>>}Jf0Muh zGl^0LZgKWi2fns%*%}ZhcHsf`9r{aSS5jGWz z9fIf8?NeXr>#_Qq;$?>@zfH^;7md=SJWfkW072nb-j`SXQ-EAfs|GpSlx2-u<}@}o bG8!;g-1pP=*#GJ-(3cFJu6{1-oD!MaQZM5tE~x;MJ3DJ7UFUT+vNYsbS~A>i_W80! zX0~!i8H2L2a+nXt0(Zq-${(y0cJ7;}Wq0g3hggu#asw%e&)m|6JPC`Ip1;^Qc{;PQ zBm0F@MQlJ&A70JlzQCn1_)f^I$i8U_l7>zV)22OU_F>MnWCnuE4pDwZfi|xi0@(wk z|NQ@7Z^HG#Iw3Fl@c~PQG|QsdeBp~*BzjiYB`6(xUdhV)-~5f0!+e1iJ)8$u72My( z{6F(uLv8n_jb?KTO*gI#@-;RvF!-{j=A(R?ho@|HAZEPez1c)(&62~)9%O~VIf{B{JNsc2JzkWwe0$dyn42+D77z+RY z|4){s=w@Ae@Sm~}pf(tF01Fofs=)P!w6#!P98U<)+Va5}1q0=Ccs3Eumjk1}t3APB!w3BR{R!&bci_T*l#&oGvF*Tr1_lNU zM-XE%G4YLVIfesZj_`N2$69;^1O$*|F?#8VZaL00kYCvNf8*|h)bl-;09MNx7#J8> z?%cl2prWeFfGs2#7#JAOojXUi<@NRT3`RCiFtaego!gfoA#msRW$e8o92!aLsN%64 sB?@pkf))VTE+$+O^st!F0fj$cK`qY07*qoM6N<$g5I>SPyhe` literal 0 HcmV?d00001 diff --git a/assets/sprites/blocks/distribution/armored-duct-top-3-replace.png b/assets/sprites/blocks/distribution/armored-duct-top-3-replace.png new file mode 100644 index 0000000000000000000000000000000000000000..bdf6fdc37a9d339998b7fd6f4ecbf5a57323d375 GIT binary patch literal 622 zcmV-!0+IcRP)xjP8a4CSxt`jYeZ3V5ig3=7j=4vkfAf2jpuL$rOl6 zwT|3HqoEWt0|jl9l+qs;i^WhfhzL?j-^SB;Mnc^)n<~n#J3VU>6~XjJT;h!0r6!fxk^aN~za`+XUX32Pn9az_zoYtx7UgKt>_KPZ3s-C|h(- zfAEM#4`lOz%{HtA9`=puh@k2M6DDAjZz5* zNbkiUew+>*tmS!N^InaGLrh*CBJ~3__tU!X@FZgdSAC+zdo{}L{oY&qN%U_AXzDc; zro|Pe=G1WUeob6&$&h?^=Yv{=ra49owq_{-fdrGr2pXN6^6aS0iHF!4a@iF z{bdmFcS}(gy!y8xJC11=gZ92Du|+GD1#5*1C+B!-PV8xS6H@Zyk1O#%=Db#hiNR@7 zg{Q!B_LSwVm!mRvW&F&3tM_3lXSVE&_167 z(+_w(*m1W_`2q8sjxXICvJ37laOpVFD|F*l;cVS-yH#`7|BP<3`moG>v(Sv+)5}}m zOtLq=;QB=E(<@ik7M5}?7vH`ltFxsK{PrGjtqx7UdYq+hzvx?U!~T%zy3!RJ;tu4W km@8xvU#xAxV8h0cKDVCf?Xu;YfFaM|>FVdQ&MBb@0Jcr1?*IS* literal 0 HcmV?d00001 diff --git a/assets/sprites/blocks/distribution/duct-top-0-replace.png b/assets/sprites/blocks/distribution/duct-top-0-replace.png new file mode 100644 index 0000000000000000000000000000000000000000..30ca7f635701ce5571c6392006ae731a168ef8fd GIT binary patch literal 305 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?3oVGw3ym^DWNq$1fP z$d`ek9jLPhi2r?KV5r-`z|hFS!0^JFfx+@21B0B_kEzTuK(*UFT^vIyZY6#B#P{!f z1M`X%uZ$)zzq_-~XG@e?mZZzN!!uXBlrEAv=<-%U^{SxGlViqPWey%OIFN9Ku_u22 zVln0z86KXVo*oIV|NsB{&tuI>}pZ^FekojGEMMF8tM`z32zKRv2&YPdFy|D1+| z#{9#w4*91qUcQrICUcW-$3KBt+-!#)9h7FB_36uJTV^0gj&nTx|6+{6rrXR%%B(W3 r`lm>FobD`QSX+IaQZM5tE~x;MJ3DJ7UFUT+vNYsbS~A>i_W80! zX0~!i8H2L2a+nXt0(Zq-$}=QhFnq9VYVFHxFxPY?yb^G0f5ARYM>mdKI;Vst07!_4_y7O^ literal 0 HcmV?d00001 diff --git a/assets/sprites/blocks/distribution/duct-top-2-replace.png b/assets/sprites/blocks/distribution/duct-top-2-replace.png new file mode 100644 index 0000000000000000000000000000000000000000..d561ad749932162fef025769aca7951a09a2bddf GIT binary patch literal 413 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?3oVGw3ym^DWNq$1fP z$d`ek9jLPhi2r?KV5r-`z|hFS!0^JFfx+@21B0B_kEzTu3=E9Qo-U3d6}OVUeB%3e zzJYngidRMxnBU#m=d&eBElbj6-Qk%lUP>3q9CUfBpn6qM=gBeStuhCX7#v8r!q^kP zf3X;Ij0_J?Pfw2o*Z=?j{pYb}q{UW$s5jwao6a1u!y7Fs0=^qN3Lj^PIBd#{b7Zz@wyv}^__h0%FppWy zf&2I8FSu9BuJ^}Xlk=g_ZN5M02?+-ZSPaF4h3~(ZmTbZBjH5ohdd<;r2L}dEvBlHp zy_ojchxun~?|<`mb{@9(i#Zdv&S?aKr{~_Dj=249!wZY@cQQApUB70=IbiuX(gYZ^44$rjF6*2U FngA$6rYHaa literal 0 HcmV?d00001 diff --git a/assets/sprites/blocks/distribution/duct-top-3-replace.png b/assets/sprites/blocks/distribution/duct-top-3-replace.png new file mode 100644 index 0000000000000000000000000000000000000000..34fba67c5c99aa2e0e6e61f754ab74300b48364a GIT binary patch literal 547 zcmV+;0^I$HP)(VwaLgOmZJ93P);BVw25 zAu_#H9{bW^Mk3l5?gO~q2_b$WVb=swVWx5|rL0th=32wy(7g}Tq4P5!s>2Ap~~jP;&SH4D3pFum|K zBx)`Fo9XOLk`Y+XGdUVVCAjaM3r?oM)xG)vRC7wngnQfaW{cw>wV}IUX8ME>02d9I zzRpMvc6)v4I+!$D9E*4EJ!(9vDN?5h@?NR0A#}lt*Sadx&&a l(!W%m;lZSN z7u}qC{x)Q-V_42$9KYtY+boX`OTpbK-d>!MLj03DDgxJ}MhZzk?eLlUa&pUpstflOt;JSEO~n6@Y)r# z*0Ur(Sm$oc>ht$%>_WZS{%qGeYC3H8uW(U3s4lwjbl{mKJ2`7E#TmF(uQUEG$@G4A yS*7$P58s=c8rh@SGw!bSTChS&+k)XhHAC$8;)B_83nYPI%HZkh=d#Wzp$PzrUYkn* literal 0 HcmV?d00001 diff --git a/mod.json b/mod.json index 1338d3d..7f19ef5 100644 --- a/mod.json +++ b/mod.json @@ -3,7 +3,7 @@ "displayName": "Advance lighting", "author": "EoD", "description": "Not recommended for weak devices. Only supports Vanilla/Supported-Json content. This mod replaces/add some effects, and may cause issues with mods that actively check on those effects. May conflict with vanilla bloom.", - "version": "v1.3.1.1", + "version": "v1.4.0.0", "minGameVersion": 145, "main": "lights.AdvanceLighting", "hidden": true, diff --git a/src/lights/AdvanceLighting.java b/src/lights/AdvanceLighting.java index ee95608..3f5fae5 100644 --- a/src/lights/AdvanceLighting.java +++ b/src/lights/AdvanceLighting.java @@ -27,6 +27,7 @@ import mindustry.type.weapons.*; import mindustry.world.*; import mindustry.world.blocks.defense.turrets.*; +import mindustry.world.blocks.distribution.*; import mindustry.world.blocks.environment.*; import mindustry.world.blocks.liquid.*; import mindustry.world.blocks.power.*; @@ -42,7 +43,7 @@ public class AdvanceLighting extends Mod{ public static ObjectSet autoGlowRegions = new ObjectSet<>(), liquidRegions = new ObjectSet<>(); public static IntMap uvGlowRegions = new IntMap<>(); public static IntMap glowingEnvTiles = new IntMap<>(); - public static IntSet uvAutoGlowRegions = new IntSet(), validBlocks = new IntSet(); + public static IntSet uvAutoGlowRegions = new IntSet(); public static Shader screenShader, smoothAlphaCutShader; public static AdditiveBloom bloom; public static boolean bloomActive; @@ -399,9 +400,11 @@ boolean drawBlockLiquid(DrawBlock draw){ void load(){ TextureRegion itemCircle = Core.atlas.find("ring-item"); + TextureRegion phase = Items.phaseFabric.fullIcon; if(itemCircle.found()){ autoGlowRegions.add(itemCircle); } + autoGlowRegions.add(phase); EnviroGlow env = new EnviroGlow(); TextureRegion[] tmpVariants = new TextureRegion[16]; @@ -415,7 +418,6 @@ void load(){ } for(Block block : Vars.content.blocks()){ - boolean found = false; if(renderEnvironment){ tmpVariantsSize = -1; @@ -494,10 +496,6 @@ void load(){ } } } - - if(block instanceof TreeBlock || block instanceof TallBlock){ - validBlocks.add(block.id); - } if(!block.hasBuilding()){ continue; @@ -518,6 +516,15 @@ void load(){ } } } + if(block instanceof Duct duc){ + for(TextureRegion top : duc.topRegions){ + if(top instanceof AtlasRegion ar){ + if((rep = getReplace(ar.name)).found()){ + replace.put(ar, rep); + } + } + } + } if(block instanceof LiquidBlock || block instanceof LiquidSource || block instanceof NuclearReactor){ liquidBlocks.add(block.id); @@ -531,11 +538,9 @@ void load(){ if(block instanceof Turret tr && tr.drawer instanceof DrawTurret dtr){ TextureRegion r; Seq sr; - //Assume all turret parts go outside the block - //found = true; + if(block.region.found() && (r = get(block.name)).found()){ glowEquiv.put(block.region, r); - //found = true; } if(dtr.liquid.found()){ liquidRegions.add(dtr.liquid); @@ -557,34 +562,30 @@ void load(){ } } if(block instanceof GenericCrafter gc){ - found = loadDraws(gc.drawer); + loadDraws(gc.drawer); if(drawOverride(gc.drawer)){ gc.drawer = new DrawGlowWrapper(gc.drawer); - found = true; } } if(block instanceof Separator sr){ - found = loadDraws(sr.drawer); + loadDraws(sr.drawer); if(drawOverride(sr.drawer)){ sr.drawer = new DrawGlowWrapper(sr.drawer); - found = true; } } if(block instanceof PowerGenerator pg){ - found = loadDraws(pg.drawer); + loadDraws(pg.drawer); if(drawOverride(pg.drawer)){ pg.drawer = new DrawGlowWrapper(pg.drawer); - found = true; } } if(block instanceof PowerNode pn){ autoGlowRegions.add(pn.laserEnd); uvAutoGlowRegions.add(ALStructs.uv(pn.laser.texture, pn.laser.u, pn.laser.v)); } - if(block instanceof LightBlock) found = true; /* if(block instanceof HeatConductor || block instanceof HeatProducer || block instanceof PowerBlock){ @@ -594,10 +595,6 @@ void load(){ found = true; } */ - - if(found){ - validBlocks.add(block.id); - } } autoGlowRegions.add(Core.atlas.find("minelaser-end")); @@ -686,7 +683,7 @@ void drawTiles(){ float bridge = Renderer.bridgeOpacity; Renderer.bridgeOpacity = 0.7f + (bridge * (1f - 0.7f)); - batch.cacheMode = true; + //batch.cacheMode = true; for(Tile tile : tileView){ Block block = tile.block(); Building build = tile.build; @@ -699,9 +696,9 @@ void drawTiles(){ Liquid lc; boolean setLiquid = (build != null && liquidBlocks.contains(block.id) && ((lc = build.liquids.current()) != null && build.liquids.currentAmount() > 0.001f && glowingLiquids.contains(lc.id))); //boolean valid = validBlocks.contains(block.id) || onGlowingTile.contains(tile.pos()) || setLiquid; - boolean valid = validBlocks.contains(block.id) || setLiquid; + //boolean valid = validBlocks.contains(block.id) || setLiquid; - batch.setExcludeLayer(-100f, valid ? -100f : Layer.blockAfterCracks); + //batch.setExcludeLayer(-100f, valid ? -100f : Layer.blockAfterCracks); if(setLiquid) batch.setLiquidMode(true); block.drawBase(tile); @@ -719,7 +716,7 @@ void drawTiles(){ } } } - batch.cacheMode = false; + //batch.cacheMode = false; batch.setExcludeLayer(); Renderer.bridgeOpacity = bridge; } diff --git a/src/lights/graphics/AltLightBatch.java b/src/lights/graphics/AltLightBatch.java index a3694c8..6b114ee 100644 --- a/src/lights/graphics/AltLightBatch.java +++ b/src/lights/graphics/AltLightBatch.java @@ -148,7 +148,7 @@ protected void draw(TextureRegion region, float x, float y, float originX, float return; } - if(cacheMode && color.a >= 0.999f && !glow && z >= excludeMinZ && z <= excludeMaxZ){ + if(cacheMode && color.a >= 0.9f && !glow && z >= excludeMinZ && z <= excludeMaxZ){ //boolean autoGlow = AdvanceLighting.autoGlowRegions.contains(region); CacheRequest cr = obtainCache(); cr.set(region, x, y, originX, originY, width, height, rotation); @@ -176,7 +176,7 @@ protected void draw(TextureRegion region, float x, float y, float originX, float rq.color = colorPacked; rq.mixColor = mixColorPacked; rq.z = z; - rq.blend = blending; + //rq.blend = blending; if(!Mathf.zero(rotation)){ float worldOriginX = x + originX; @@ -318,7 +318,7 @@ protected void draw(Texture texture, float[] spriteVertices, int offset, int cou rq.color = colorPacked; rq.mixColor = mixColorPacked; rq.z = z; - rq.blend = blending; + //rq.blend = blending; float[] vertices = rq.vertices; //System.arraycopy(spriteVertices, 0, rq.vertices, 0, 24); @@ -401,10 +401,12 @@ protected void flush(){ //requests2 for(int i = 0; i < calls; i++){ LightRequest r = requests[i]; + if(blending != r.blend && r.action == 0) setBlending(r.blend); + if(r.texture != null){ if(auto) r.convertAutoColor(); if(layerGlow) r.convertGlow(); - if(blending != r.blend) setBlending(r.blend); + //if(blending != r.blend) setBlending(r.blend); superDraw(r.texture, r.vertices, 24); }else if(r.run != null){ r.run.run(); @@ -465,7 +467,7 @@ protected void setPackedColor(float packedColor){ @Override protected void setBlending(Blending blending){ if(flushing){ - super.flush(); + if(blending != this.blending) super.flush(); }else{ glow = blending == Blending.additive; } @@ -482,8 +484,8 @@ LightRequest obtain(){ r.texture = null; r.run = null; r.action = 0; - r.z = 0f; - r.blend = Blending.normal; + r.z = z; + r.blend = blending; calls++; return r; }