From e3a90d6186cdc47c72b69d6bedc654b2b80d3cb4 Mon Sep 17 00:00:00 2001 From: Leonid Pershin Date: Mon, 27 Oct 2025 00:45:55 +0300 Subject: [PATCH] Update AIImages mod to improve image size presets by removing redundant labels and enhancing character information display. Add collapsible sections for positive and negative prompts in the UI, along with localized strings in English and Russian. Update AIImages.dll to reflect these changes. --- Assemblies/AIImages.dll | Bin 87040 -> 89600 bytes Defs/ImageSizePresetDefs.xml | 20 +- Languages/English/Keyed/AIImages.xml | 11 + Languages/Russian/Keyed/AIImages.xml | 11 + Source/AIImages/Window_AIImage.cs | 458 +++++++++++++++++---------- Textures/UI/Commands/AIImage.dds | Bin 0 -> 5636 bytes 6 files changed, 324 insertions(+), 176 deletions(-) create mode 100644 Textures/UI/Commands/AIImage.dds diff --git a/Assemblies/AIImages.dll b/Assemblies/AIImages.dll index 569545abf8b814e21f81d7a5befa15f2e9de7c3f..e13e64ca71600fd4efcfb6ee0429a0c2b6cbc59a 100644 GIT binary patch literal 89600 zcmce<2Y^&X@;_el-pre@al+0LmQCy~kDc9Rfdv;uSP%n<3FRc2P!NQ3@U3}vI53?k zW<c3DfBr?hBk4QSlCQUjLt}?l&{LfOo&&|Ns53PQR||>gww1>gsy^ z`aKSqaw(ZaOH;Qeyorjuu!elp;)iI5j%(pN3FO9u4O zO-{RWED$0aWR!uLglo=U8-}aNnK3sBLY9>vv*=*j4s@e)s!8^H^q>D&HiLXL_Zp(( z-XZE*Q%L@+q}s46h(c69LT3y!4PM@Q)Q&bA)E8I4VVci_7whzdtcHAYfST7{iHc_m zJ}*K3`f_6d)6|c)F)mgLi8pyVa`jDFM1AjOFWm*6pbQ(PUBzvaVZ)p)T);LFvg|zp z<@u9iaEW(%@&gS$$T<%!`jg{;vLRE*hC!mHKM8xZ3W7`lEr4SGZWQ2dwVwfGngw#2 zU^aHG)ZJ`Hz2rOuMA)0G1Ip=RNWLHQw>jz0gq^+Wp#!nWnbdnB*%5#anYIsH4e6&{ zge;*ypoA_(cOJ^a6^(|;sRH9r0;+&cO&SM0Ivhra6HG6Rq|+hG?R1{Mp+7l8P|xb# zY3BxD=Qp5csolu+xxr|&hcJ+^2yU;!#PBqs3=9V_iL*B_s^9gUhI2chG(_;~ENZz~ zOiZs)n)a&;ri9n1I4&LJtBom+-mNz(dHB+3*sHVXDeB+JTw%~sqadfol#0&w0uNcW zM*1wEYt8gIxYS3ReKa33qscJT2@PA+K9Hr3c&dRXNs7oG1RU}!Moq4!wrj`Og8>_V zDg+OIsolatS^ne@xtd-(%zP}X?S2EKQC?Nt!D$8yb~tV>Xs5 zwMPMfL7@ZQ`Q<8F*h?gc8$ zy%^Y@3bwknGHJnZPTEzKs5k6wC~_;=eH6XP^9qwlsX^pNf7HCYfby=S2A+4loAYQe z^a_Ivx7Wd@LYA3c%1Sq!d%84er5K&U3{ykdSdfEB6giu^P{(62o_bKzu(zQ=YTp|` zzOI3pCU_(Cw}ApqmDNQby<)5qqFAgn-o7uYCgGq%sF6aSlpxF`ITqNcH!&{a zwa0PR*WM3(h+1LGN-qNeg{`nJeHC(nurF+NT5yS0`~D!^RSV!W9>tCKY%Yp;JL8zi zy^}D)5N#y;09*s@2O>=##3&dh>(ih$ba=4`rp$iBM@7)5{29&+w_7~GPdfLw;4bVG z9xvt&nrn21WBOgA9gLir;@Pu!ItI@^7*g!ih?!&#w>c6?e6QpoAe^0MY_2^U&d3bw zQ-n1oSpL+Z0BRfa>v9P44d>6U)S||KYik9;Vb8GM#nz%;`!H0VzX&{Q z8%yivpN~wZ)q}@>B6D59CA^X*qCN`yl7|BswGxxVR&o+&{q6N^N`Y{|N+T$MDFwp* z)MON;mjgteg^LEm-f%D+=(H05$+EyWf*Ot2Z!QR14FP~*fV5G}D(u~vT`i-TodnO% zcIB1W6e|P!zsFq-?A(tT^VyFoFSdZQ0!PT6f)=sqzWjxNtfc43uBQgG1(!yj(16V&G-jUx>4_s1*Y#zHLF9GOwO_Fv=C9^EquRh(~>`AF$roDz}dkdrck% z#!)LC^|!(yKq7bq|D@#6jK$E-2?Qrii3TH(1~z+FQ}dU{)H@u;Zy{2eX*5dbgBV~JJI0OpJWZXPF)BFfIysj zW6$;(5WF_0Vsa)Bl*rR4CM}@gPP}(-o^s;7F9MD7-iwjb-n;BS&9Pm3@0~br<-7kx zhrdPQyIq|i5DK^V(K@-9yXl0{sYWEb(uoi>gP@yEG8MBr$&l_`C*>KPT*|V@ zigpQdS|{+R|F<)sNt-1*@^r*>eDqOQZ$^eT@vY&*?}n2tAY`( zGctKRo3h~y3FS@_vjc(W&d3net3XwALuk4)vNhevAdA;A^K$E=b&23JBINYbaHhJn zJ6{kuupI`TI1mS3fmpR8N!MmZm-dO zy^=dAlg>E^{gE3O=&P3dyg$nyE47ojs^}8;`SSoQC`2u+od$geeo^o<;^{bW`d+h? zvwcw{e`$DoF9>?6OYg3QxRteIays!;Y(@yR0W-e3oqwZ$gq;2u+q3?@gfg0D_ySgptaJt z1BWRnNKOG$EpC-ddNzD|u&AUHV8u~#EgbWrd(MrbzhR70s7z8z| zaW$lpZOG6x?9RNHi){jtF5y}!PGj~NXba<8iaCFSJ7{8ZY1X_uCq{v<@-g!^pODPI4(&>;buBWT7Ito|_5~=YUBD$aq(_+5P>3xURz#;q zOr1>|y|H-z2190~*cLDdM4bi#$r$U6QTAEjG+8W#&0pp^+dp&|ZXYB{w$BDh`X&&= zSKQ2(lJt#y>0lg!Q$(W)1=#0;RBV1EctDfk_8~bu?o&Kg^2JQw&zF+)y?p85BCrYy zD+Uy+1J&M;<$T0L*eT{9GVTffYTR}{V12s`nBn*fa(%Kg0o7lNiakUaps?C!3H7kg zLoXCy6?xoUm&(x+OFDaJIQ^N)EGV^Q^d$JOoz~huO4T|EwbTG5&quYWg(!6qGWG?W zT*yg=T_xCoD>|!Nw-HLImMTY03b`V^ydi(&lsp&OGxYX|DfupR$4(LmzlusbKf4I`%b)$Ld?8|)~ncgTvrL%SAiq;Hz#471GwSB{e9Sf@$5n8 zs9BX-hT_^rZ(S@A=1mEm_obF2-%yrAB&CA3;mH$xmzEdK8}=EDO6;1an4ZiT>G@ug z+NMla!Z`nQb<@2cES@%nowhjtdKg2FFCW0>b`49rfJ^K=2o%kyaDMVSAfp9|5#fR) zN(lWT(VX!SLQm_bH_JwNyGDlMdYU^SRwk`^=by47MiD~IDnO#NME4Ufnk;Kl3 zov$@h6fPR}<^O?ZiXeuBN57*P%+n;+k5IHYk%|=CH*q#h;cyabOUOP7qY#Za(w~U4 z2X`x+x&+l7w8F=cmAZA9T1tO!lthDy7ifg5k^85VcO zv0i2N4B4&25~3vu3YTD^@E`;;=mcZ`hl~Q&he2b_3*R)0I3H~e(KA>>5WDgE-GUx; z-MPl}uC zyD)^tcq0ef{n%W>BErj$8m7wx$RDj6 z0AtxB%_VJ{D!sJtM8j(N&Jp8zy%2wr5kuBn`z{cx8X0fT&!)hGdS`uo?s5e|%bET2 zdm+(FRMcz9>N5|kj9RH7DHfqVtVxN>cvHyAv;0y~%oRCaltOH3s3+GQYR%xWvUsqb z-)o0j`=JdiD=<+XOjP2ck8p*lx@%Of+=vMC#lub53o<53Rj7+-5$ms#c_a8CZbB@i z?w(MF&Z@HQkPu~a&mDh7?dV?)fBa8l4y6dt@k1I|;u`Io9EV5jn}r8^)_?VgH2Enh{|*Oh;l^Eq5OymQM&h)1D@aOYjBr+ zjUr6T1hQ^FaypB(L6#SwcGAri-MSg^WmT|v^kmlE0@2-Bd{?-3lnUT{P9JF5sYN1d zhmH7O?GCV)2xu=6P&>BRXvN)2z{cGJ>=9h3P2Igjn0r`HxwxptR!7(h4Yml z1%;Nfws3(v1Yzd1LPf2G{&1lVlkJt@7cGk04{%3I?FadiK+%afQ7rBx6B*4>w z_D;%#={v&YExWkyt^wk<@UW4L*VxowEh4QBdoEVH3_ZiDP*LuR(a!{ zhB%ZY9%(}fT{ur}o3eNz!WbikC`CPmRF%{N$%mjv+>>GD$o1;tipt6F+%D|6RG6se zmvH|f4p^(nd2UzD31uE158(x4j{R5EsnhdHkC^3GcIyrldWE&7AVEQ;GmBv1Z24i# z0&z`h6>7|P-gbvN5pu#|*Lxri3hio?z$Rba$6M@M4CPytYr)W$=@pJ+5yNhRH=%^z z;L|0DN%-y(x8`_kjR>}Wx{-oE#^TQRcSb6PG&vJ=_2b+EK^@O1$j>pw0$icAFtr~5 zY{k+|qA`!U7{mwAX$%a$$TAqqBBAnQpmGk1VEoXD zP(weBIW~hS(U{YK;ah37o2w#@LhxL~c*V_~XDuEggp%lAMcbf|A&*QsOyMoydOrUY zrFj)?V*FAjIU_q6RPV^-+Ge&k^u)C<-dSyPhuTK@5%EqFQ@JPVY)2j4z`^K(me&*# z=!Qw!V>l+Dxa5#PcrQ^ii-D_jLZ*2IYW#p2im9&mM3yz`8AKvJuKYZ*R3)`pWYqX|22MaMY%d>bGGtbq1P`_WcJ``F6Nn^cSpOHw|PeO^jE58=kcqdi@ z4(fTj?FXvd`N{_zQ#L$;ehT7YxPKNlcw3sw`O0{a!Qj|a?YAmf(Ez$p1n*<`fq>HED@ldWksG5Mk2X zl+H4}VL!voa{T3`GvKG>&**@rz0PCc?!1X4ZWmx})epoR+>6c=DKcnw^iCP0ha<_L z+4DQ&89gr-%?pNe4lotval244=5@ol6gU|2_O>{m-Q@Ooxp8g+THHs5n%5uaUO}7K z+IN`@Vf14_mt;^w8MPj$t^)7I=xvOSl;sGFeGad4IWW!xxoBRroOc-gSuPrTAYP}q z51db&&q=bpSnlD@yP$?MYC;#(o{X9gRNSp-KdVMT&9UVe1Pl)B=O-*lwT2wlN`A^K z6aZFL@^cNaf|6fofYp-xw+47jl3!|oM&bZkD*=#dsE6Oux%(l0wQ(-dt zav%ol2u56v!x$xL?umYa$MlGOJRFl zbS@lsZM>r4y4uo;%IlKPqek)tBz2ba3OK1e)cOPSn1BMfhGKsT>uP4lgSRsHSP(ph zD%c4F%Xu@y&BBqL!@zDwGQ&*5lUepeB>91i$k=Ueh?5oAu>zS%xCXUbUtk4yBtTPt z00A%m8Fn~g)KH2;QQjTN@klcH5;HuUD`6KcQ;D~Oxsq?^m0)F-J&7yfOi!j#VYpB# z?WC)S@U>DWqn2hWk2#VrLdz8mEC-HjA#~>W)1vob$FNw;HyKqk`7t*M+tIOR4UW+Y z?svu%>dGC*Jbx;HafDSM(t+PDh9Fmfp-2Fi+-@Z|2!BJuphBz&IW}QA@p9KdEa#d` z-k`ihe4?Dk@_aW?^)uS|*Tt-9R40Bv_H*BC$=6e$H zi&aqC=%HZ6paIcfMb82LU`1q5aUve9=sT!qq9Rx^YEX5;c3QzRAJ;K*t#qczwTClH zuEov*xdxnznguJ=Gry*x{vKltre(I36d z%I7(*humCQiRN%edWd(^H|;HNJt4@V-^r+~_-LsL!*lH}jeGiMxw*j-T|Hmlw0 zXEIKCUm1EG7U5Z{Nh!#Mr3Z51M22Na8en6lJ9Il)u^{M3>xP%Mce#LDIm>m?xU7eiFKWGeJG<1A&d zs=+B#!!6)JQncMF3JJ!{;)B1M1W!?wmz2PmW!(gUcHd7u6~hDTvaIfu!wg7_yOV)c z=Q8)DCoT6(y+P-o|AW+AnE<{a3rjm9>>!B&79?hi{o#PAA7d%EwT0Mk`UT3>y|q$S zuK(pnK@Cvv1~B9OF80S@QNL-3*8F6Kgbq=m=Dh)~3X>5BjXCpYjEv*(CTuPoSk*!4dec8iBURdU$dDhT*_<5}XN zpjv5OL^b#65c}${!FP!8O?`kOBZcTOG|5PP#24K7w6#se6RG7_PafIn!%T-gnQ8=#`)2La%E2XubMd7qIla*K8H&1%gN5Y90Y@J?KmWbGY#m*@z#B z`N#3M-20(LI}=WkLFa6XhPFBKxsQJA}M8Y~aGvge?J9J%!2QfE6?Y26K!M)fB@-w7Q< zv^?hrL01Y|nY7qbVFObK1wHMO(X3|{Ezc>F0>oQjbML;#WTt>qF9lfJL@BTtHHLXk zs}wvT1!84hxr54cCP=}pQn0$*H&Tyfo^zxWES7>TXU4dIM>F8e;)2Af2CNk(?v({5 z;NVS5V2?Jcw;j^TSRTfJbG~558P&0S_hl^KjRc%)1>3?Sfr;hi7aV}SOR(ieb;Y@J z7|Zt)0cW*fF-PRe%I2}353%&v^V6PAuMGU(gywkW%SI`qzEyCCvb306Ug$L-HkX$e zsoEbJGBv&Xlp51ZDnS&P-|B_{F;pXWQ7s5MhT``Zk1~i5(jr!ox0_5kYos>s{jvPk z(I{?5h-lTy9gBOQhHu@Gx9Xf8V9T4_*h(-{2+>1H43hw#GVmEEYc*yWfYj$m)LAB< zggVKmb4rujn0{RjCiO)Q{h?gCepjWFxfFNB(mJ=r@xI(4VV6O5Y=_fRI0Or&mLp(z z2^DjQ-pd{i#A?{Klbud{}$<5q2BC#B%UuM{Z?60`^3QiCK zsTx>4LP@Oq3c~G8h}SlYIE0G?>~DdPIfLU%I04uG9TU9E1nOqaLTvRtaMI7)kl8&y z6IR8uVU>O?qu)t9(DU^qUiHOrVDmfBm%G%=g z4?yJ{G~ENBzSne?2wBDs)#>~TnLbOUhn%fa*+L_30@g{zjJb-P?z9buSxzT7VvFJeZoHcWnqCZ@?TVMJlORNE6L(UC;5nd4du6>A(irn$-=rip{_A zG}pMcW#Y|PB8+m@ukjRC@p*~!Lq=LQgo4(UAlCPaGSy`&bGYP}!-DEANk+F9gtZ5_ zea)H?C2-2uIT9uQbK=PDod>n zX<_S!oe|6u%aING=RvP<$zQorCnwzvTDFFkqipgzr}H&7qRv&$MIk`vC5HAsJ4lJfC*IUtzEu zG(u!ajRbc{U?c`~mkUObBUfpfDV^~HGo1ntj?*v06|!gb1 zJ-FcgM5O7xSyd@c`3)G}JcStiwu+#q=DDxpS-?ComzXCOW9IoKUrN%5F~E$Az^p`=F<|43eK2Et z+XuX0HsSVG#S8Crgwm_Invs5#FJ^iTU%cr@_)?O7m@gen0hVwckdFa7l9i8n!m`8d zBNWdl^L&l#8R<9pVy0i`i#Ls(0OpAx5ImUzJYhlL$$(wbl_!io+&(IYCuS(~{3l<` z^d`P|)0_EHlKvmQbT9>Y_7I*7bmxh|3%8HS;rTJwGtyYunI~dV=82Gtd49x~4yFLl zp2CxXEKif5ae@iy=c%>wTuD6vt#zgkLOeT@Ct9s@Vov_locw~E`~^ArWjXnKbMk9* z@^9wkKhDWx<0jK?JSX3jlOLCpKQSkNaZdjJoctr1ygRQ=I<#Bg`AMqV-*p-KTIbE2 z{QEiipK|iOTHLxWe-FP;+`z% z7N(TBWzt-<0T6!j6bvvwtgo<=rC`sIOFZGT@g9DtAmnor#5flr86fs|5t0D{tBT?w86XaD5t0GoKo=ny zAP#a7k^$mi7a6jdhZ0zZYF{!ypu-9w86YOQ2+08P2Nxk3AP#pC zlHoP2H-2SRU`uhf-a>8$pCSJi;xTub6kXEfWVAYRU`w%A6<>{Wf0@y$D7QbA zp+eucx7nXdzLE?a1NuVeP2~SAd0D>fFIAr1x&5`|OE}KQaLdUB`$v`M?SC6fB;)z0 ziv0=a>$5Qn99X!0yjp9|#xj^jMP6%v;)|L7nJ*>jANbP2MOb8e%OcBwdapGTv%vSs zJN39_SMS;4MS6bC60e@~mpyQ+62iKT4?Kmy65mJ)SshFPmSw_{0nJi)!tL;P)xzyI z3S6H3xt@`(=Zl$6@Wq=(AQ-ZIX*?1QS%uzo6JJZxcq0u>a0N8cN19;3Z31nW{Ctex z#}2oT6CIf8@6j*P$61X;4+Ae!?vEmVXEbEvmC8^OZxV;}w*)-=Zav>0U~Q89G{Y`O zJIc)o|3N4}K+5gkpn5mFui_&Ch+J_~;9zwz_;>)K+9!~zz+H`zhu_g8xPQJ!Q1zu5 ze2E5i^|l_`QFL9}X$V*x595SMAO{|sdGDU@ zTloZL#okl{eR+5ez=(FH7rY)5Q+j~{c+aTALxjaGO!1J7a5&UZB$wnc_98 zq#zF)Vy;lU$=8M|jqB8%dVfR^?t6%64S{f|aS@8lPCS;%7RgA?YXc0MYGLxe2pNwNBmVUXy(}KHD zM3QY+sC@?m!E5SXl_&a%ibEb5SE7GV#~(a>c#PruIxv$YNRkY`Maeen9*cnsg57%g zET}p&Y1oMP@fM6wVZu5?htj;5dlt~LWwP)pus4%smjmHr$hR{OVLOpeTO{`Z5q|_T zVOR2e)Hl^Qo^GVl5Gx67St#hC$Q81^FOcp>)lSgP88O~`R50wZ;Fw;(U4mU2e6LIs z(4LXv;*eGGYZIPkS*1-zBA+(noIP&Ztc^I+7fYYZ^<(Mt)aB27spu50P=eaiDZ%k{ z4x?c**wZ;1Hjki8^Um|*JC8g7sE8lLrbIANm^i%^B4Ju=;xDw~Fq??ko`+^tiz#V0 z1*h&!bDu$Eq!uERjKfrvI2FH2wZw1~v3$uW7qN&;%-8gvkl>^nb1w~T`iv#fwYYE6 z8&wsf9%_78b)1W&zaoTEIUH=LAz|cT;8#NpJ##Twh(h)ONF<2IEx}0$Uk(IZ>l_Ai zP&KMuGU2X4f$G!VaO+u7PnB}tNk#vb|&V7fb9GBLVd*8 zdVDK72lp^i3qUJ2HaHIl3S}%q34dHZv5ECAbr#CgJbK8V!+9Q83-O#CgQ)dQ?YJMZ z7Mu@cc50NHsURb8g&WB!$VAdd8mWs=lDZIyky?yY&Rb?#Zd4*U>7fgb}qE4z^^TaaBo>64Ky zlY#!0F_)!CjMP;~(+MP5t>jX|+k533g9dMmd*yH`1`a`swcy$=wazn>GFwW`q|A{b zGud@!U`S>2Jlhc7)VTpXjMNIGHli9UTgL0?AwHtR#pZ4VLC7i{Y9xHEvTz!yn}L$I zVR_}>R02|s>w$vYFT*G_k8LQ;WeP4;p8^s#PQz|p=4ok$sxLGzf9mrD<;Um76-&Kfo-x9U%XTA#q&YxS@rgmV&^%QM{dt4o3v7BiuO^etSzBdrh|&jhzJ zLHi11;U<_miK)Q%t0^u?VsZ$OWxExaB+S1X8h+7AUbX{z8>6q-0sSvV!~D82+0JMf zQ8)BgjJ|pY^f!!#O@UgzH6$Cv{H=uyVo&Y@tiq!7ZPHH}x7#_ZbYi3!NMZpA*$tpe z-@#={wH1<;dJ4hgEu_iWAWa^QO8Ge3f_WKg+{=j9hSF?VMj(ARUkZ$ln{bU7h>9@s z3EK2G44jeT!hEBHFP$Z5v$s*=)&#RDY*=@3eIvz}^qriKDU=d6#okpdv_@hiII_&i zsi+wB;>&x}Se(6$QkQAio4$v6xbk=*PmRdKkGhQ%7e?{5U%qyhjKqSR5eVFl05^PC z*H?#xHsiaE19&@Hl!l-NMH`J2iy#PXHAJ^nMGfM1>HS9qCSF*S!`%EV%6Ru0Oz{aie3W|*sW3o}I2t-+CO1_%+l;O(OrTaUhtTEc@)^c*ZIiR(~PzS&J}Y)u+}Dz1A1 zj{qz4cRzB^19!St-W3pfE_CrX0gt)H_n5+m@kanx00*7R#}9mO;HvTKrRj6rzr>Vh zK#)n||L;X_mH)>pgfJcLV7&={Vp8kpiC)0fTq346F{9j8olOo(Z}Gb z=RI>Y{OO1Ig1LPku5#=RBZ_%%pk*V)g?UB?Uph;g+<7lG!E8F1r61(_Mv5=#2RI*7 zs1ySY1%_Oce}xdZ>%(_;AA^uuN?itamYyUmyT(Fx>;Vg$g9TGdmKfDfO}mP*9P&9Q z!*qIGgb9mxFml*0UI@%hwfNu!OO<5aa!CEAS_E-|V#XSU*j7-?RaLZ)MNhS zN2$9-M$>MY7$#@7w5bCgIVw+Q$$}+qIK6F;C?mr3}B@& zBlQ&W>JSAU-JS|zZFpfTZ&MG{&Ug+E&9LlJ>zNoIa&D16am^%_A1hulNbwOU`A0}< zpNJ%xMB?P{0iLh&Y5-?}yZ`oiz#{s}R8O7+1jl27Sqz3rCl_-uW7=~umjW|4d2%l5 zawa+@7qf&hr{-doGUl{g%reHDo{L!y%n8Xea#7ba(V2`%uS1uW`oy%7DPWD1!amLF zz+P4;nMP88AY?wSjbkKk;t?={>6iJ!(|9d15fd}l7BgE5wHhfdg$eSdvt*EKW>OX0 z7Jys&1!iER_>z8>^D%`=G2k9&TL{XA5<_rF2Hclt-B+qH(lH(tHPTJocn-Dtyr_K^ zx3`|#aK<1W@nY;oN1jB0QP%Y~0HMy%H<-ZNA99i~DwV1xtd7tt1W z>`-K+IG;1qAv{EyyR#ytefVmM290nq{gQCGTu3>;1DE%ARwP_D|1lae!lCpAVeymD zab8%+aU~-qFuYpszmejoxGO`d6sB1A0!#QH85gnFFt*iM!OAyf@qYU}M%TMB5&}#5 z1U6NTxTg>D2W#K&;zw$HTQ~eP;P(Ojf!**o0lydU2X(`L1pJ}ED?g~#kb&@8t@!oQ z_^v+Dq<>&Qr;1O6N6KA8-T>HT4VeIIW2Bnse?||D)ZbX8=Ode3goGE83vks72{Xh( z@(;dX7Qcq8EF|?}zF7UikPESp@TIe)#hu|&6U-KaS^6!mZ>0E=ev|Vtg_1XQ(tl@6 zit+l9_ONr&Q<=YvOkTt+-bOCb1}2kVE^bIs?f|faZVlz(@&rDL{2-fWv-9 z>FUsKsPVzgJ#k|cQz+gA6V6!V@$U+NoFS}qBiR1A3Gp}C7yGp1m!iDQ`$c^Q{;`aA zrH&(YIN#mcrN6vF`q&CZMWRz2xx5UrYAej*{r2UIhPFqIhd!W_E%+UR-yo>IC$8=v zFQEu=<+(!>^11eNGw^rew=4U>D$HlPu&?(&kU1v?`6s{~?1z!cey)IQMrt$na|vtu zN+fJQOL5iq!wg|RAMyqEvk_OZpM=;CI~#c$gzblEI!jtz`;nSpb`_YV-{<;9iZAK+ zI3H6eWj|XOlVZGkBm$q-O=YosbUTC<{t+1$#_wV*xhQY*fod#206@+UQit<7V_C!e zjFhP79CoFnC%dR7u#k(Uq3KNC@c-*$(7x2itH(kbU2ynyk`@L~HLdNYQ$d@y2 zp90)r+!(3GZ5dQ*@F93_@@iyvHg3!in9`H-K6C8?JAp_>%sb^D#lSKLVv8 zre#!e1&eSW5FF(S=0;%LqfIw)>B?P|!Xt%}59XHM!kCA0G0eX&PZ9nbio4WIs~Wo< z@2}vFI{9#Jty`JT8ph;pT7Zh`uH{<@OwL(*90$#qG{8!P#I!hCHT)M>MppE%3?9zp)PxGo6bY^0^IWaf||6WLb+;= zLX8yDb=RuKc2}))jwn-F=jY=&mF0uGT?D}K%t)4~_2{f8yU(LfJ7gw)bM>b~d*6@vvf#4lY5D z?E|>F+i=KYY#-zc#[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%0Aa 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 WmWrWi%XQcOjW+WCH|wXxf&T+CSno^# literal 87040 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 diff --git a/Defs/ImageSizePresetDefs.xml b/Defs/ImageSizePresetDefs.xml index 1db4801..db3e967 100644 --- a/Defs/ImageSizePresetDefs.xml +++ b/Defs/ImageSizePresetDefs.xml @@ -3,7 +3,7 @@ Size_512x512 - + 512 512 Square @@ -11,7 +11,7 @@ Size_768x768 - + 768 768 Square @@ -19,7 +19,7 @@ Size_1024x1024 - + 1024 1024 Square @@ -28,7 +28,7 @@ Size_512x768 - + 512 768 Portrait @@ -36,7 +36,7 @@ Size_768x1024 - + 768 1024 Portrait @@ -44,7 +44,7 @@ Size_896x1152 - + 896 1152 Portrait @@ -53,7 +53,7 @@ Size_768x512 - + 768 512 Landscape @@ -61,7 +61,7 @@ Size_1024x768 - + 1024 768 Landscape @@ -69,9 +69,9 @@ Size_1152x896 - + 1152 - 896 + 1152 Landscape 90 diff --git a/Languages/English/Keyed/AIImages.xml b/Languages/English/Keyed/AIImages.xml index 4a99787..202242b 100644 --- a/Languages/English/Keyed/AIImages.xml +++ b/Languages/English/Keyed/AIImages.xml @@ -7,6 +7,17 @@ AI Image Generator Character: {0} Refresh + Copy + + Character Information + Gender + Age + Body Type + Skin Tone + Hairstyle + Hair Color + Traits + Apparel Appearance Appearance information unavailable diff --git a/Languages/Russian/Keyed/AIImages.xml b/Languages/Russian/Keyed/AIImages.xml index 5d8467e..7ade9a6 100644 --- a/Languages/Russian/Keyed/AIImages.xml +++ b/Languages/Russian/Keyed/AIImages.xml @@ -7,6 +7,17 @@ Генератор AI Изображений Персонаж: {0} Обновить + Копировать + + Информация о персонаже + Пол + Возраст + Тип тела + Тон кожи + Прическа + Цвет волос + Черты характера + Одежда Внешность Информация о внешности недоступна diff --git a/Source/AIImages/Window_AIImage.cs b/Source/AIImages/Window_AIImage.cs index af067fa..b859683 100644 --- a/Source/AIImages/Window_AIImage.cs +++ b/Source/AIImages/Window_AIImage.cs @@ -51,7 +51,7 @@ namespace AIImages { this.pawn = pawn; this.doCloseX = true; - this.doCloseButton = true; + this.doCloseButton = false; // Убираем дублирующую кнопку "Закрыть" this.forcePause = false; this.absorbInputAroundWindow = false; this.draggable = true; @@ -75,6 +75,11 @@ namespace AIImages private Vector2 negativePromptScrollPosition = Vector2.zero; private float copiedMessageTime = 0f; + // Состояние сворачиваемых секций + private bool showPositivePrompt = false; + private bool showNegativePrompt = false; + private bool showCharacterInfo = true; + /// /// Обновляет данные персонажа /// @@ -395,54 +400,142 @@ namespace AIImages portraitSize, portraitSize ); - GUI.DrawTexture(portraitRect, generatedImage); - contentY += portraitSize + 15f; + + // Рамка вокруг портрета + Widgets.DrawBox(portraitRect); + GUI.DrawTexture(portraitRect.ContractedBy(2f), generatedImage); + contentY += portraitSize + 20f; } - // Секция "Внешность" - Text.Font = GameFont.Medium; - Widgets.Label( - new Rect(10f, contentY, scrollViewRect.width - 20f, 30f), - "AIImages.Appearance.SectionTitle".Translate() - ); - contentY += 35f; - - Text.Font = GameFont.Small; - string appearanceText = pawnDescriptionService.GetAppearanceDescription(pawn); - float appearanceHeight = Text.CalcHeight(appearanceText, scrollViewRect.width - 30f); - Widgets.Label( - new Rect(20f, contentY, scrollViewRect.width - 30f, appearanceHeight), - appearanceText - ); - contentY += appearanceHeight + 20f; - - // Разделитель - Widgets.DrawLineHorizontal(10f, contentY, scrollViewRect.width - 20f); - contentY += 15f; - - // Секция "Одежда" - Text.Font = GameFont.Medium; - Widgets.Label( - new Rect(10f, contentY, scrollViewRect.width - 20f, 30f), - "AIImages.Apparel.SectionTitle".Translate() - ); - contentY += 35f; - - Text.Font = GameFont.Small; - string apparelText = pawnDescriptionService.GetApparelDescription(pawn); - float apparelHeight = Text.CalcHeight(apparelText, scrollViewRect.width - 30f); - Widgets.Label( - new Rect(20f, contentY, scrollViewRect.width - 30f, apparelHeight), - apparelText + // Сворачиваемая секция "Информация о персонаже" + DrawCollapsibleSection( + scrollViewRect, + contentY, + "AIImages.CharacterInfo.Title".Translate(), + ref showCharacterInfo, + () => DrawCharacterInfoContent(scrollViewRect) ); Widgets.EndScrollView(); } + /// + /// Отрисовывает информацию о персонаже в компактном виде + /// + private float DrawCharacterInfoContent(Rect parentRect) + { + float contentHeight = 0f; + float lineHeight = 24f; + float indent = 10f; + + Text.Font = GameFont.Tiny; + + // Базовая информация + var info = new[] + { + ("AIImages.Info.Gender".Translate(), appearanceData.Gender.ToString()), + ("AIImages.Info.Age".Translate(), appearanceData.Age.ToString()), + ("AIImages.Info.BodyType".Translate(), appearanceData.BodyType), + ( + "AIImages.Info.SkinTone".Translate(), + ColorDescriptionService.GetSkinToneDescription(appearanceData.SkinColor) + ), + ("AIImages.Info.Hair".Translate(), appearanceData.HairStyle), + ( + "AIImages.Info.HairColor".Translate(), + ColorDescriptionService.GetHairColorDescription(appearanceData.HairColor) + ), + }; + + foreach (var (label, value) in info) + { + Widgets.Label( + new Rect(indent, contentHeight, parentRect.width * 0.4f, lineHeight), + label + ":" + ); + Widgets.Label( + new Rect( + parentRect.width * 0.42f, + contentHeight, + parentRect.width * 0.55f, + lineHeight + ), + value + ); + contentHeight += lineHeight; + } + + // Черты характера + if (pawn.story?.traits?.allTraits != null && pawn.story.traits.allTraits.Any()) + { + contentHeight += 10f; + Text.Font = GameFont.Small; + Widgets.Label( + new Rect(indent, contentHeight, parentRect.width - indent * 2, lineHeight), + "AIImages.Info.Traits".Translate() + ":" + ); + contentHeight += lineHeight; + + Text.Font = GameFont.Tiny; + var traitLabels = pawn.story.traits.allTraits.Select(trait => trait.LabelCap); + foreach (var traitLabel in traitLabels) + { + Widgets.Label( + new Rect( + indent * 2, + contentHeight, + parentRect.width - indent * 3, + lineHeight + ), + "• " + traitLabel + ); + contentHeight += lineHeight; + } + } + + // Одежда + var apparel = pawn.apparel?.WornApparel; + if (apparel != null && apparel.Any()) + { + contentHeight += 10f; + Text.Font = GameFont.Small; + Widgets.Label( + new Rect(indent, contentHeight, parentRect.width - indent * 2, lineHeight), + "AIImages.Info.Apparel".Translate() + ":" + ); + contentHeight += lineHeight; + + Text.Font = GameFont.Tiny; + foreach (var item in apparel) + { + var colorDesc = ColorDescriptionService.GetApparelColorDescription( + item.DrawColor + ); + string apparelLabel = $"• {colorDesc} {item.def.label}"; + float apparelHeight = Text.CalcHeight( + apparelLabel, + parentRect.width - indent * 3 + ); + Widgets.Label( + new Rect( + indent * 2, + contentHeight, + parentRect.width - indent * 3, + apparelHeight + ), + apparelLabel + ); + contentHeight += apparelHeight; + } + } + + return contentHeight + 10f; + } + private void DrawRightColumn(Rect rect) { // Рассчитываем высоту контента для скролла - float contentHeight = CalculateRightColumnHeight(rect); + float contentHeight = CalculateRightColumnHeight(); Rect scrollViewRect = new Rect(0f, 0f, rect.width - 20f, contentHeight); Widgets.BeginScrollView(rect, ref rightColumnScrollPosition, scrollViewRect); @@ -454,132 +547,35 @@ namespace AIImages curY = DrawProgressBar(scrollViewRect, curY); curY = DrawGenerationButton(scrollViewRect, curY); - // Позитивный промпт секция - Text.Font = GameFont.Medium; - Widgets.Label( - new Rect(0f, curY, scrollViewRect.width, 30f), - "AIImages.Prompt.PositiveTitle".Translate() - ); - curY += 35f; - - // Получаем позитивный промпт - Text.Font = GameFont.Tiny; - string positivePrompt = promptGeneratorService.GeneratePositivePrompt( - appearanceData, - generationSettings - ); - - // Фиксированная высота для области промпта - float promptBoxHeight = 100f; - float actualPositiveHeight = Text.CalcHeight( - positivePrompt, - scrollViewRect.width - 20f - ); - - Rect positiveOuterRect = new Rect(0f, curY, scrollViewRect.width, promptBoxHeight); - Rect positiveViewRect = new Rect( - 0f, - 0f, - scrollViewRect.width - 20f, - actualPositiveHeight - ); - - // Рисуем фон - Widgets.DrawBoxSolid(positiveOuterRect, new Color(0.1f, 0.3f, 0.1f, 0.5f)); - - // Рисуем промпт с прокруткой - Widgets.BeginScrollView( - positiveOuterRect.ContractedBy(5f), - ref promptScrollPosition, - positiveViewRect - ); - Widgets.Label( - new Rect(0f, 0f, positiveViewRect.width, positiveViewRect.height), - positivePrompt - ); - Widgets.EndScrollView(); - - curY += promptBoxHeight + 10f; - - // Негативный промпт секция - Text.Font = GameFont.Medium; - Widgets.Label( - new Rect(0f, curY, scrollViewRect.width, 30f), - "AIImages.Prompt.NegativeTitle".Translate() - ); - curY += 35f; - - // Получаем негативный промпт - Text.Font = GameFont.Tiny; - string negativePrompt = promptGeneratorService.GenerateNegativePrompt( - generationSettings - ); - - float actualNegativeHeight = Text.CalcHeight( - negativePrompt, - scrollViewRect.width - 20f - ); - - Rect negativeOuterRect = new Rect(0f, curY, scrollViewRect.width, promptBoxHeight); - Rect negativeViewRect = new Rect( - 0f, - 0f, - scrollViewRect.width - 20f, - actualNegativeHeight - ); - - // Рисуем фон (красноватый для негативного) - Widgets.DrawBoxSolid(negativeOuterRect, new Color(0.3f, 0.1f, 0.1f, 0.5f)); - - // Рисуем промпт с прокруткой - Widgets.BeginScrollView( - negativeOuterRect.ContractedBy(5f), - ref negativePromptScrollPosition, - negativeViewRect - ); - Widgets.Label( - new Rect(0f, 0f, negativeViewRect.width, negativeViewRect.height), - negativePrompt - ); - Widgets.EndScrollView(); - - curY += promptBoxHeight + 10f; - - // Кнопки копирования промптов - if ( - Widgets.ButtonText( - new Rect(0f, curY, scrollViewRect.width / 2f - 5f, 30f), - "AIImages.Prompt.CopyPositive".Translate() - ) - ) - { - string positiveForCopy = promptGeneratorService.GeneratePositivePrompt( - appearanceData, - generationSettings - ); - GUIUtility.systemCopyBuffer = positiveForCopy; - copiedMessageTime = 2f; - } - - if ( - Widgets.ButtonText( - new Rect( - scrollViewRect.width / 2f + 5f, - curY, - scrollViewRect.width / 2f - 5f, - 30f + // Сворачиваемая секция с позитивным промптом + curY = DrawPromptSection( + scrollViewRect, + curY, + "AIImages.Prompt.PositiveTitle".Translate(), + ref showPositivePrompt, + () => + promptGeneratorService.GeneratePositivePrompt( + appearanceData, + generationSettings ), - "AIImages.Prompt.CopyNegative".Translate() - ) - ) - { - string negativeForCopy = promptGeneratorService.GenerateNegativePrompt( - generationSettings - ); - GUIUtility.systemCopyBuffer = negativeForCopy; - copiedMessageTime = 2f; - } - curY += 35f; + new Color(0.1f, 0.3f, 0.1f, 0.5f), + ref promptScrollPosition + ); + + curY += 5f; + + // Сворачиваемая секция с негативным промптом + curY = DrawPromptSection( + scrollViewRect, + curY, + "AIImages.Prompt.NegativeTitle".Translate(), + ref showNegativePrompt, + () => promptGeneratorService.GenerateNegativePrompt(generationSettings), + new Color(0.3f, 0.1f, 0.1f, 0.5f), + ref negativePromptScrollPosition + ); + + curY += 10f; // Кнопка обновления данных if ( @@ -641,10 +637,9 @@ namespace AIImages return height; } - private float CalculateRightColumnHeight(Rect rect) + private float CalculateRightColumnHeight() { float height = 0f; - float contentWidth = rect.width - 20f; // Превью изображения if (generatedImage != null) @@ -694,6 +689,137 @@ namespace AIImages return height + 50f; // Дополнительный отступ } + /// + /// Отрисовывает сворачиваемую секцию с заголовком и содержимым + /// + private void DrawCollapsibleSection( + Rect parentRect, + float startY, + string title, + ref bool expanded, + System.Func drawContentFunc + ) + { + float curY = startY; + float headerHeight = 32f; + + // Рисуем заголовок с фоном + Rect headerRect = new Rect(0f, curY, parentRect.width, headerHeight); + Widgets.DrawBoxSolid(headerRect, new Color(0.25f, 0.25f, 0.25f, 0.8f)); + Widgets.DrawBox(headerRect); + + // Иконка раскрытия (треугольник) + string icon = expanded ? "▼" : "►"; + Text.Font = GameFont.Small; + Widgets.Label(new Rect(8f, curY + 6f, 20f, headerHeight), icon); + + // Заголовок + Text.Font = GameFont.Small; + Widgets.Label(new Rect(30f, curY + 6f, parentRect.width - 40f, headerHeight), title); + + // Клик для раскрытия/сворачивания + if (Widgets.ButtonInvisible(headerRect)) + { + expanded = !expanded; + } + + // Рисуем содержимое если развернуто + if (expanded) + { + drawContentFunc(); + } + } + + /// + /// Отрисовывает секцию с промптом + /// + private float DrawPromptSection( + Rect parentRect, + float startY, + string title, + ref bool expanded, + System.Func getPromptFunc, + Color backgroundColor, + ref Vector2 scrollPosition + ) + { + float curY = startY; + float headerHeight = 32f; + + // Получаем промпт + string prompt = getPromptFunc(); + + // Рисуем заголовок с фоном + Rect headerRect = new Rect(0f, curY, parentRect.width, headerHeight); + Widgets.DrawBoxSolid(headerRect, new Color(0.25f, 0.25f, 0.25f, 0.8f)); + Widgets.DrawBox(headerRect); + + // Иконка раскрытия + string icon = expanded ? "▼" : "►"; + Text.Font = GameFont.Small; + Widgets.Label(new Rect(8f, curY + 6f, 20f, headerHeight), icon); + + // Заголовок + Widgets.Label(new Rect(30f, curY + 6f, parentRect.width - 80f, headerHeight), title); + + // Кнопка копирования в заголовке + Rect copyButtonRect = new Rect(parentRect.width - 70f, curY + 4f, 65f, 24f); + if (Widgets.ButtonText(copyButtonRect, "📋 " + "AIImages.Copy".Translate())) + { + GUIUtility.systemCopyBuffer = prompt; + copiedMessageTime = 2f; + } + + // Клик на остальной области для раскрытия/сворачивания + Rect clickableHeaderRect = new Rect(0f, curY, parentRect.width - 75f, headerHeight); + if (Widgets.ButtonInvisible(clickableHeaderRect)) + { + expanded = !expanded; + } + + curY += headerHeight + 4f; + + // Рисуем содержимое если развернуто + if (expanded) + { + float promptBoxHeight = 120f; + Text.Font = GameFont.Tiny; + float actualPromptHeight = Text.CalcHeight(prompt, parentRect.width - 20f); + + Rect promptOuterRect = new Rect(0f, curY, parentRect.width, promptBoxHeight); + Rect promptViewRect = new Rect(0f, 0f, parentRect.width - 20f, actualPromptHeight); + + // Рисуем фон + Widgets.DrawBoxSolid(promptOuterRect, backgroundColor); + Widgets.DrawBox(promptOuterRect); + + // Рисуем промпт с прокруткой + Widgets.BeginScrollView( + promptOuterRect.ContractedBy(5f), + ref scrollPosition, + promptViewRect + ); + + var prevAnchor = Text.Anchor; + Text.Anchor = TextAnchor.UpperLeft; + Text.WordWrap = true; + + Widgets.Label( + new Rect(0f, 0f, promptViewRect.width, promptViewRect.height), + prompt + ); + + Text.Anchor = prevAnchor; + Text.WordWrap = true; + + Widgets.EndScrollView(); + + curY += promptBoxHeight + 10f; + } + + return curY; + } + private float DrawImagePreview(Rect rect, float curY) { if (generatedImage != null) diff --git a/Textures/UI/Commands/AIImage.dds b/Textures/UI/Commands/AIImage.dds new file mode 100644 index 0000000000000000000000000000000000000000..573f9ac9b2465ce562bd6206aebbde73451fed64 GIT binary patch literal 5636 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