From 9153fd763e579199d54cab0a432ff9090b4c64e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jose=20Luis=20Monta=C3=B1es=20Ojados?= Date: Tue, 6 Jan 2026 15:22:22 +0100 Subject: [PATCH] add circle mask to icons --- Class1.cs | 63 +++++++++++++++++- .../net472/StrategicView-Plus.AssemblyInfo.cs | 2 +- ...trategicView-Plus.AssemblyInfoInputs.cache | 2 +- obj/Debug/net472/StrategicView-Plus.dll | Bin 12288 -> 12800 bytes obj/Debug/net472/StrategicView-Plus.pdb | Bin 11396 -> 11840 bytes 5 files changed, 64 insertions(+), 3 deletions(-) diff --git a/Class1.cs b/Class1.cs index d33540c..b5b652e 100644 --- a/Class1.cs +++ b/Class1.cs @@ -58,7 +58,8 @@ namespace StrategicMapPlus if (textureLookup.ContainsKey(texName)) { Texture2D tex = textureLookup[texName]; - Sprite s = Sprite.Create(tex, new Rect(0, 0, tex.width, tex.height), new Vector2(0.5f, 0.5f)); + Texture2D roundTex = MakeTextureTransparent(tex); + Sprite s = Sprite.Create(roundTex, new Rect(0, 0, roundTex.width, roundTex.height), new Vector2(0.5f, 0.5f)); SpriteCache[logicKey] = s; loadedCount++; } @@ -174,6 +175,66 @@ namespace StrategicMapPlus visualizer.ShowText(generatedKey); } } + + // Función auxiliar que podrías llamar desde tu parche de Harmony + public static Texture2D MakeTextureTransparent(Texture originalTexture) + { + if (originalTexture == null) return null; + + // 1. Crear una RenderTexture temporal para poder leer la textura original + RenderTexture tmp = RenderTexture.GetTemporary( + originalTexture.width, + originalTexture.height, + 0, + RenderTextureFormat.Default, + RenderTextureReadWrite.Linear); + + // 2. Copiar la textura original a la RenderTexture (esto "desbloquea" los píxeles) + Graphics.Blit(originalTexture, tmp); + + // 3. Activar la RenderTexture para leerla + RenderTexture previous = RenderTexture.active; + RenderTexture.active = tmp; + + // 4. Crear una nueva Texture2D leíble + Texture2D newTexture = new Texture2D(originalTexture.width, originalTexture.height); + newTexture.ReadPixels(new Rect(0, 0, tmp.width, tmp.height), 0, 0); + + // 5. MODIFICAR LOS PÍXELES (Aquí ocurre la magia) + Color[] pixels = newTexture.GetPixels(); + float width = newTexture.width; + float height = newTexture.height; + Vector2 center = new Vector2(width / 2f, height / 2f); + float radius = (Mathf.Min(width, height) / 2f); // Radio máximo + + for (int i = 0; i < pixels.Length; i++) + { + // --- Opción A: Máscara Redonda (Matemática) --- + int x = i % newTexture.width; + int y = i / newTexture.width; + float dist = Vector2.Distance(new Vector2(x, y), center); + + if (dist > radius) + { + pixels[i] = Color.clear; // Hacemos transparente lo que esté fuera del círculo + } + + // --- Opción B: Quitar el negro (Si prefieres por color) --- + // if (pixels[i].r < 0.1f && pixels[i].g < 0.1f && pixels[i].b < 0.1f) + // { + // pixels[i] = Color.clear; + // } + } + + newTexture.SetPixels(pixels); + newTexture.Apply(); + + // 6. Limpieza + RenderTexture.active = previous; + RenderTexture.ReleaseTemporary(tmp); + + return newTexture; + } } // --- VISUALIZADOR --- diff --git a/obj/Debug/net472/StrategicView-Plus.AssemblyInfo.cs b/obj/Debug/net472/StrategicView-Plus.AssemblyInfo.cs index d853f7f..ef459de 100644 --- a/obj/Debug/net472/StrategicView-Plus.AssemblyInfo.cs +++ b/obj/Debug/net472/StrategicView-Plus.AssemblyInfo.cs @@ -14,7 +14,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyCompanyAttribute("StrategicView-Plus")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+d80451ab557736862ecd10b3de84a3d0ffed09f9")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+132b1baedc3e76f674b00252e91ab05982ba6455")] [assembly: System.Reflection.AssemblyProductAttribute("StrategicView-Plus")] [assembly: System.Reflection.AssemblyTitleAttribute("StrategicView-Plus")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/obj/Debug/net472/StrategicView-Plus.AssemblyInfoInputs.cache b/obj/Debug/net472/StrategicView-Plus.AssemblyInfoInputs.cache index 36ac7f7..3fe4afb 100644 --- a/obj/Debug/net472/StrategicView-Plus.AssemblyInfoInputs.cache +++ b/obj/Debug/net472/StrategicView-Plus.AssemblyInfoInputs.cache @@ -1 +1 @@ -207ad408a2be3c5f741941664ffdcb40acdf9f0e328efffdc24c02513f1b6213 +6324d5e6ed883eb594c7f064c6899c6620ec3f6f4b54e50bf9c693a1c9798e38 diff --git a/obj/Debug/net472/StrategicView-Plus.dll b/obj/Debug/net472/StrategicView-Plus.dll index 6af1e212655d2512a5198884535fe144bc3754f9..6f568d3335f4b42527a6495b1d13d319203e480b 100644 GIT binary patch delta 4433 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 YFf41JuQknzb-cczUmts(^;W9?2aKUi6#xJL delta 3596 zcmZ8j3viUx6+Y+wuVmTXWOpH(z$V!wB-v!wxPgQuQXT;TDI$S@5>O$Sjgu-YCLp2> zy8%h1)k@|vWz?|()hgN-lU97xk&IR2h^e9>a-qu;%oNc7+NzkAMi z&-329cQ@UUUcdK_(wiC{eTGJ#H>or{f#XCG5O#+2E*yCDO7GJPh?Xg0J<;pNKuN%z zCUQeRb}7+HSt4SxjVoOfD?o+uM&u7U%GL65uH+gy!leag5kWnd;T2?2Zj9(R`9v(6 zqYbh}+{umd@8U6PU8CM2g2xdI-ar&Kv=@OhFUkT>`|@|Y1W_Um30@}_E{DRG0| zMI)B{z%_IA5>1onE*G@9=W=MhD#~cAO6Vf86quL1LRpUEBiMddvgHCRA~lLxu3&{s zPbf*X>d8?bG!gA}bZmur$(0#br9@UKrz;iF-8@!^Cp)S0XWCNYXc5`p$fTUIlUR>v z!1S4st5l@biWD;J4yM|)cv}{-;0&y9POiB?1e0qoD3PlnXKEPNW%8Pgg<6!n%p&6G zWJ9Boc>#;MuR^&#D|s!%Ze)1G3!MrM0MsrHPiT8>O0Pqs>~bR)SzPX>E&P|WHzB2V{;LFpoLotmvK6_E}t zphT12Ly79?Nq{Tw-iXEMmVjiZvMKL=MG;?IAX43PjBhgCJ&G9bbH5^v0LFrx(k|nO zs0oWXfH4bf|K{$2am0`!UK>Z8Q-sfIxZpF>0@Df@3$jZQ_l+Z-Q^Y%(kZW>kX79xz zDBD5wImY*}*k!F-y1O=A-=h}bZ7)&2nqSpQpHC#hwL)c!RxQ31qk9t3gNA$|ry`~H z9!HfX;LRD8u~b?|M19AqO9uNfdf$3Yr7P{v;#te4sfNOs_=S~2r}3S#=_>KCVbcWT ze$%Ewp>VUtyEJ~RaW2qB-%FV-j*D&v+7zaT$V-#OF#CzMypV=@CiUx}KF!=|53^0% ztODChE6ic`(p#Eo;|9}9KedKAk3Qo)DB=OT0g0D#fo;=cj>0_PWUAs8Dx!7tDePyP zDHZM?W&>);;(o(RPq7Mm3W2-`p=SSRsL*d}{s&;ZbP>uzf20!p+AOe3DdZ@=P}|gF zb~4>hEokO?#3`bv^Ql=xFBa9!%xWIt)5c1;Z5eQ$Erg^tMu=^_z3ycnfYErOkG7aXkN* z(R2!n{P<%@tvfK~jNu@?U{ROniM&Pf6v;qBDKC!AjJ zH#s|j$LJ24NV}~46rywXVVX)^&eJqCMe~efm@YS;r)K_}aUA%BeVi8afb}XZ2cD$u zlr2UmMm6Rga4vN|p&@z?Yj%)6ArIH`QKURbw}U@OSDOJof;9Pj7-6RXa~Qg1D&Q^`*uE!68G>Mblgy#9d&-p z?d*1r(?{UJVoqe7D-j6z#;I zmaa=2s6Bgfw97O02ybV%^$xmx)jWgQR_i$Iud$f2 zIZ5ZakAH3t@gB|bfIr(oH&YVk8AMd>=!i@pu2%n=vTlpItq-E zWz^7gDg@4?2yi~tr!Xwh6Rp7cw3fPzN~)#*&_(_dVgPgmCy!M z+R5wm`!U9^@CF6Z;7Fc}KpMgYkj|9PCMKS=X7|w57G{)&woy)U~Cn{YHrL zk;$LR15;j>TSMFAxlo6^rEs%6S2$nJDw-zyiyo4-#f9?5;%S2ii-UG<=uH`KjhJ(H zx1F5jeqhc^a=5%CaF-co4q1*N1g;EnS2?-z^YU_8RuMAq@u%;R^D8!)5BbuE8P4cm-=4qF`dvt_& zX$uye(s(B>z^gCV%vPz53gA`LKFsZ_lttC0x&Ja7>-AH&>Nd!EbE{~isQ>% zkK@~p15%Gq13uI7|FRM9G)mBQ)PdPJW~W0+fUkqClH=5gPeMygkeZ~tc&o^rG3bk* I<$<{Ke;=EVHvj+t diff --git a/obj/Debug/net472/StrategicView-Plus.pdb b/obj/Debug/net472/StrategicView-Plus.pdb index 0214dea6b3d8c1856302e43620a636bb09d0ada6..f3c21a3833b42e5b895fee98514f5e2242517d4a 100644 GIT binary patch delta 1702 zcmYk7TWl0n7{~wT?9A+JFH2ck#L~-dx7{@@(3TQPONtar3-$ql7NV5&y0#li+w5*H znm}8+C0;-%qX-E}o1j+3h){hnQPPCOm^4!L0bhukps2)<_)uaH)c;wgNoVu@=lgx< z@}1k9jXyuzbb7<^CJpc(1xy{767=`RBH^CSDEPc@04#>TaW6ii|D5vc8h6(4{g7M} zBya2PZ6lAFcl%4uzE%H*``KSEMKk`s{QWC)3}b(WG+idZuCbY>`b(yz(U>v`Dw7JB z6JHiDS5YsmoW@e5Ogt)G@9_z|LlgM|Khy5h9?>=z2&@VSRMIAC3jwx(gbZ3uVvVS_ zUKP2+uQBA{&)^6q=#ScLlCRQlrfDosPK*%v*5(v)1^q#rQ_0)uAEN23zud0>q2n=U zlD|@Q)&C5Mc%@)cALvt zev$q*#*$folU;u!Ic1TVALF#t#Q=S^r0ylWlAOjhTI}F=vU=ud0&i0#N|{K3 z8A-wz{bcs5`c`o_2B^#MCnLZP`VO2>^Ve{mpyLCEjl^;};ba7ur3n;LC5})X7^7;) zpz4W(X(Y}7>oa2F1Y5Zivs{K&`e}*H@L++Z=}2cJ1252Dg>3pyqD}38CYlJ@D5B<| zhs8el>F1%7K48%Vex*v}QXTk#s&Tv2AXGLZv9C`2$VigC+@p-A-~u%j`>8ybREY+v z1AE9C?opd{l&Vtp^F=OC58q`$^$iADtxp75?XY7j6M4KX)StW~)N$Vw^@M+xdL`d0 zbd(irrD}l|YI$IU`etB?de=Il<>mK;1{*>{vHnO1u}JGcC=v}}Fx(OALNpc$^>oq+ zTc2pV<>5Z-Kh3YThk9aGuAaHBFFX|Ljv~_95$=zoFA^FE_tJ^6vpq2kw08H0qBY_6 z7`j5?&Ms@GzQ@rKj#}sSEHl#E-_yaY)~9;DbyI)Od$I73YU^BkQvJ0nbt@+Ct!^8d zK3@Ob*HsH^JqQ1C&7QF?7`MFh|2l3oynObCYyMDKwRPK5aBJ7v7k#I%?!7&FXGhNU z+L?3COF81YRTDT_UMhLk4oluenUd$qExA@gzQlV-iR{dCtK*iQ)6APt!%7r7S+Z-r z

s~J}t(^WV|=R%R%h0HU-a!12c2MeR6o@W3{IvpSc9GcrmJ$DX28{TB9xl`Dr|4 z>kMxAYRMzlV8DZCBm#KKAaeU$@G03S@dSz`?;w|!#1xW=2L-YEUqyxFdGu)P zEiqnO73Ek{Mb(dSH?dLNx2o1uESq+T$(WctC8pEFbQb;xJahkI delta 1260 zcmYk6Z)jUp7{;G-lY5gTTmNirY5Ff|k|tf-I4f>iY*(q1PAs&x>1Ma;8oRhgukB23 zx+!eUp!1V+wg)yCLhCG5oCR^(1jULH>*Rl>UjZl9dZqfHB-`W4v9^UH> zU@$`NFvngX|8eIxEp+~1_vyA9uUwpa_nWf-1$-1hLuEt`i6-%= zJR|%QrmhP$v++Nt<7F?3;i*hHFf0?1PzR0fskiApv zBY&l8wRNr_-vlP`H{V(nR59@v3vSw6O>Ut-YqOs`L;sw;L6E$Si^XjYlTVUW;|;DC zA*<^_hHC?>#=8IKiS;+!#6;Adu*P}+@op9m+uXqM_vkyA^RT|ru2(1K-N2{Gn>VoP z(3TBcMlR$l=jU^O+-9h2fgzBiYPd_)u`|E*TlAiMFT7kxEvE7XxI)jZ=pA^C&WUb% z9n7WQUZOg1lZwsD^T?1MSQ^aaAp&^Q6=z@TH%} z$9q>qe(tPj{2`Fz;ECE<>SPE)M^`vNt*(2V+EX_~U8u`Z9a7hW#a22oo=j(w$XMy* z=n-o~KCM3^XZ70Xcq)@kn5oy3X(UWDo;+@4)5#1hnqCXz2{W6_>`4vFEk>`;Ol2$# zkEG1Qaju8V$XM1q+&40IOuk`+eD?Uv$Z%u9d*`-Vat|%l(fP-M-NCPh{_4t)k@sYYCr z< OOU#@V^V`Mz&VK>NpUIX0