From f939abcea68c73b40a729439bac5b9602f05fb71 Mon Sep 17 00:00:00 2001 From: uniflare Date: Wed, 11 Feb 2026 03:54:30 +0100 Subject: [PATCH 1/4] Update project file to v143 toolset for Visual Studio 2022 --- MSCeditor/MSCeditor.vcxproj | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/MSCeditor/MSCeditor.vcxproj b/MSCeditor/MSCeditor.vcxproj index c71abe1..1e69085 100644 --- a/MSCeditor/MSCeditor.vcxproj +++ b/MSCeditor/MSCeditor.vcxproj @@ -37,40 +37,40 @@ Application true - v142 + v143 Unicode Application false - v142 + v143 true Unicode Application false - v142 + v143 true Unicode Application true - v142 + v143 Unicode Application false - v142 + v143 true Unicode Application false - v142 + v143 true Unicode From d76e8bf49c7bb9da84f7072c6dc3139d03733d69 Mon Sep 17 00:00:00 2001 From: uniflare Date: Wed, 11 Feb 2026 03:54:58 +0100 Subject: [PATCH 2/4] Re-add placeholder map image --- MSCeditor/MapAsset/map_dxt.jpg | Bin 0 -> 759390 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 MSCeditor/MapAsset/map_dxt.jpg diff --git a/MSCeditor/MapAsset/map_dxt.jpg b/MSCeditor/MapAsset/map_dxt.jpg new file mode 100644 index 0000000000000000000000000000000000000000..bf6a433f4a83d8ffc3504932271999b275408a4a GIT binary patch literal 759390 zcmeF%cR&A|2PlE_}|Zii}5oLh6>lOytzjXW=C0(Um`O2JMeViBPGN+14nafifiB#CBoUG z+@k4p1J9^9N{FAIe+a+OkRd{1f&zkK!$gIIM2AU=iw_eQmlPA?EI)n*cm8(G5Ec{^ z77=ENh_EC?L_{R$m59XPA!7fX3%XDVO5LmH>trY1#upYm}CjM28DC)w`q=bsSjAU-P~@N zYoJ#9I9|E}eB-rmJ|LCI9N{)~zD|&P!>=m*;~FUbQH6n8N{GoRQ;ag9I_GVlK5pXJ z?bByWAG>|-_UU7H9{xuGHUm}vQtJEvQtAhPpZeBg`ha~s;;1+^PQZClbUviH>f`-?b&ttx>?DUqrSOzCiAa|AMe%7Jtiy5 zGp_aNeYc*Nt*<`xIPUvmQh4~-w2uyj2TPiLS3ZAu$<(K$KIgs#H;Z3GBqM%rYgXF0 z2IUi#qh9!oxT0J0uBU6Q>XFdevr}xoH666pzCUxqiTvd!4kq}=F48%Fz4`D_@3Grw z%q4a^iQN(6IC0?N-=E1pF@5werLO*$Qa}EeQr8T86n6MyOw&|Rqx8(CTXT=&bTJlZ z{o9HYXTS+)B5OLH9%Cp$ zvLx|CIH}F87tS2iFr>5KnoL%Iobk}#&e&#Ukhi~IAc-GAr!-#~Kpg(qIx%dSBika;h6!L3ls;`g5uN~s}N7iPpD?EQd3@TA`r#TIeFmIL+Irds{%jTWHl3LK($%JBxqA#|^EbuL zBlq6FD%Q@`XE5A0z?Hp_&VjSATm$@9F7R?E7nih9Z$HnUd?IwjTv8`9|DYg$Umt%z z&mV^f{fwcj@LRa>&+xh4o?gF42>y&9b^Dc`?kmiXgLU|EH)j0&<@BTRoH&smg_0kW zXlk&%33I~e*+>{CrPQx|Sx&AUoc$r3HCZt@N0FHdy$Jm1BqW%Vwv!WTMX7ptkQg7b zCi4rjFn)v_Ox^n{giKjT_#(3YnMRuvLbv=MA)GwFk$sBpSp$E$FyGM8e;GCKKZ)a5 z&{>ntICys4^h}Q8%!3By)HwTG49>Z8)AgonPPa8K&e4OjtslLZi%o*bzaQ%KjPUoo zI5R2cbP_gr?wn|PzNRsOYzk2GDL*p8c$0rVWUO(cCR6Gp{72{GB>uVjEsQ?)*PQQX z{9hjQqmpzQzhEDFM5Ira*Tp~B&n@t8db(>6T{PWbD7t(6YJ+6|Z`v?r_N%QAR%7n3 zrp!4l-asF3SNA}BpILNgWc;Zd9!?wy9!mc4adxI#{8kp9XMlh3%0C71`UiM>djA?{ zr`plE+i=229>UJSLH^U+{oDhbgWTOn05vas<nTru{?q5r3=Z)5 z)6Is1|K||vK+iwlka(Sag627U{wbA+tGkcSJom7m>48@BtY`fk^7wxS|0(ehFaLnm zras=DKcz$mPu}WhFgbHRH+K)`V9pRcB*Z-+=r5An{|x?fazPhQbAKQIfZuS%2J<(Y z_A7!MLe2K~qpgPo`L86m@<8|B$2b8WG8q0{sE`Y1@cg@QL2`+`{x&(M2hx3qzE_jx zY|_Tr9_+bdoNdP7SjJ61kqtKJ!G24pr?_>vl&hlZtK7N4)VN(=1nH!L8I#^Xfo|7bK#S{h3J05ulYg>79 z{{VM+Z57SQu4?M)@;W*y>RQ@5I_k>ua7C)>cFsUf74e|8Z9>3gE; zT=zi#-~d{{Z>pN+RDE@IQ!^c1Jv9xTsg~xJmKqj1oH~(XE&N@BX}O=ry3xmK{r8R?oH9E5 z{Cj!0xf*!*2lzUZ#^CMi?CGw$e5Jdmg8Z+mV!)XNS^K*YT1~pml2aoUw(<@n7byHk zFR*i8^<&G&Tb|Rj44hr*=l&@QuJomJcT@Ng?EP0r|K*7eW*JJJRR8Jq9ZVMJ?-3O0 z9N=#1NkIRr=A-(L>K*7D@?X^Yzr3{nxmy3gboFxf^K>VJqN)OY9;)>4F?cCd|Mn_z z;(i-yekLd57rpsw;57a@z~L7H5P$##AOL~?j|BdB^m6wjQ;SgYU`0NOkN^FXIFlO2 z&Eyprd=*a~2Y)V{Pv!EXM{ADNoTH{T$4pgK)l5;EEQ$&v=tbeb^QD`ipsA@fUQ0nz zQsLkHRDP3uDj(0UG2ypQ<;7GXdA9xi6FI3fFAq19ybfp3&%D1c4DwZ+$>e7K5k+2| zFj?y2@@is3*>xHjqpK9iD>*Kv2rm~&H24*XYLjQ&R}&kpKF2wRd@wJpZ-2mI*O{(r z$hc|C<)RQ!wf)f0zb&XvoP4Ke^3f&HPsL*mB9WM>q%-M6i8 zuNwSJ%_LvvNzsg|-|LHQ2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_< z0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb z2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$## zAOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;| zfB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U< z00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa z0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV= z5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHaf zKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_ z009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz z00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_< z0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb z2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$## zAOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;| zfB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U< z00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa z0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY>&t^lLGyrtOd+@{R#16n3}e1UOZYnz4B zXQ{eB2@Hx359nW|7#O!a==FyQoC5eZn5gaz)teT&On1&v2@=Gpi|F$V92se3@wU57 zc7R$^bn%&*@AvT4IVKxSHj|Wraeu75x}5z~TUG5xKdo0JIe2G~90G%0r>P7L4QdSD zYs#j&>kY%hOvE$G>Uh@nbYz-mjrj81^Q&qV#Y`znYBJnEW<~3k^K6QeOD||CZC<6d zu*ke4IyACPSgs)V+}rrB{8^uh9#Pcm_eF;L$9`Iw*uwvF)w(9fb;)N()%^`#=hkm% zp-6aZcKfl93Azq1w$%20|9Aax-2aOLb@f%1>q@ZNg(JNbWo&#lDM_QSCo-ZdcxGwqJL9ORX_YCL>O0?3 z?j6Aa8TKjH(=D#q%xUWWU=+EU&!okw`7N*IHPZ%VFV8onPPPpI;LkZJJJukhJS2U)I0X-Ms07|qn$!gs{RrJ58pMv-AQgSP4Ams z1!enX)L-?!aa2u=xmAB$ZQqiKB@;xg*UaAYNTB%HEn}Xo`+aYJ>+4kA@hGf6A~C8W zx$NsFx%BJnC3C;Fclq>hkLhmupn2(Q*u8qEQI2b_&W%Q+fWS|I0FSrL@(Vl?{dQ(h z%rTC7uZJ66ipXp=oT(-7_R+nEq!E%qJvFVup{M&}V&5shspZ49G{28=o4{;rs_5w^ zoycFLhD{PNb$8?>bDcK`zv52z2HX6|g;(Z0CNmxPckcUdmL!HGgz&ts_|m~XdQ68D zM~PP6-%)=qF@4?MZkbhwM~o?bRro7|HEa7M50y?cDOf>9a{WNvu!MG}kyoV_oy`r& zO;UFa6!mi?IZ%wa?|r$Q9bbGmu^HVx>c(sPl$q1crJS@SaabV05fJgYIxA1${e$uc zq&a(fy*^+@+G0Vt$6Jq>rHjJ%21JuoOq1&p-NSVPgO9BFE@V=1%|hVuSJM3Xe zs+6*9G-uoL)%UbDOz9{V=zQAzHYG*VMxE@8- zIJ@S@kIX)J^6ucOz?hnNWZw~)@I{x(nw3M^z34d){hXRP`Ud_n0qk&h0Hfjt6%P(Ie(|Nl&ejPo>zoh@7_Xo zad%I5Zf|#wpYhP|1^qUjiZQQtwS0@QHW8L$lY+27U{IjB>`@szXLh1ia9@Y0zv?Z@ z#HONk_GNa{y@&VMr%xG`>$6G1u!v^qL#6)1@2%!xl-7K9F^MAM`_{^reyQP{PV_ZU zG=MXG80-bn6g6s3#Mx+)w|+d?A-!X!?hJ!=o%Rup4iE1=O5Bz~!WchY6DDCXPCEHodQI9h0SR23R2Q zLx9t)Gv8OWN31Q?Jol)g_fh9E*~&AN^yR(b8;4aN+joS1Ln$YD_4$Nhy&vnQyyX8H zCK?+3y>Eg@+N{Z`YtGVR`^8OJG7L6J$23ejx0NezwbAM$pI0ZTRyx;rR~fC1=3RDl z;XUQhHt%WqRoDDYo4?5Vo3^B7?G6;AC-F}@D+{7 ztQX3U$Yj3aKAFrjx_j?>_6-*`FMpJ{z_uw^gkFUoP)K`jvg+K1%R8@em3qp3@G~}k zMCYY>si&KzWRtbyG-q1A=(1vTZf07hObnYEZ2n#?UZoz(jtR60%1FNsZvRU6E0M^A z*9i_&%54rUNf(XcCXWT}U3AGEooy~#WUnntJ}W^wRp}VgsjhXM`!de;gR87d$zv6A zdm%?N#aq69zM*RpW#UeWtU2|Zyf$sE>)Cp-{bITxm8o_7Dd-iFDW`<_bl+dXqnfo2?S5zgwQk`2rg}frkzb?4U(TOzAw(gQQ z&FrH|BKIQWZ?|`~vrk3&t1e`d+lgGHhZ_9?(RTXOIBWwhtbN zS^A>;>fA5-rRIBrE?*ZprdZ!p+WReLslooVfM}AYuqbC+jP-uMZ@uL&%9c4h$-H

k8W#57?n}}4ZM42m-H=o~ixidt^Jb9gz(AlOeckJc$((DX%opv(2ah0<) zlx}(x*e|2vUv%Qmw-CK+vj?b(s6dtj@2e-J&od~#^|L>zH!H7j>nz#Ed8`;z!TSGm z0p=Ey{CKXbI;%pC&=MlDBA+D4OGMK8KP>;w89{H=mh1B**{J7tH+@vGS>GHGAV7&; zzb@9=(U|n==3c3uRd*^|>*!eq#oKILqII3CG*px`L6;i&jl9`;cB^LOXvg$SrSw33 zeI7>d{dlRz2Ml7$3rye_wr< z5}Hz=rc5Uh^_^8daaDY@Pfs`rrt}Q^5>~l>ZS(!Us%r)vj|Bp>fM>gJVCpFa&yU|C zj{mmrk+*(@)o-h=h#=LcbbLT?zof5%N8X0g(9+tN`l6F+`;6Z1f8SvwdtJNj%XgzR zZUfHPYPXFprNDl!BKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb z2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$## zAOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;| zfB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U< z00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa z0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV= z5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHaf zKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_ z009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz z00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_< z0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb z2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$## zAOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;| zfB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U< z00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa z0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV= z5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHaf zKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##{e>+_j&koVakty|{zR5~Juuk5bG;_&$Hvc@sY5Ec1}B(Dik%@7x#b|8%+j`0d#bl@Ir{ z3BMP4*y`Ya^3H>g7v`_^=-l9ElXj+owTqAWdfJzC-y03$?tRy+uia77+1OvecYt?W z*mK3WxB4%4ybqfHB-_yDs`I0k;Mt+RkMmEi$X_1(UiiY{?w39V^5N|YJ+m)#$W=Rj z?$kLg@NNO0i{e~gvF~BxGOG?)-kD;T_H0$k;fpUuWVSkl9PY_BSk{01Kv4VL5_^SQ z3Dc1=_1Z7;u61sHW^*YnqO9X~!!wr&#S= z)e>ycaU@sCJILvn*2S4N^F$5gR^ReHR-2n>!@d$&*yu?s->|(Z=y-bnW~PpOJWTo_V{kfYc{)Q}xf3ZJ^SyA-j8C&{j zX-VV7>?p(SYwbt*lyy1;O?k1E-K3rtqH>_(ifib|u|3)LwZU1#I>qh=Ey@fXDHA1p z@yQsiTmEIm7qSgirAOWz%yS1@f0Aio_OvCZACz>y*xR|KCBWunk#DNMgYWdECA&3G zKdX5%Q&fQzqndVXQSMrwDf{1TeZJYCU-DX^^vEJkcDhgZSxj1Cuhgp7ro?|Zv)lfF z$UcSe`{JQTuew}lOrO8`na0aAwTVW1i(iIH>pv9he_(U6v?I^gq5p!L$DT^wq^p*1 zkJs#Ym%I3L`{XR)uJQMUkB}4oa?E@hSKO*Ynz!#y?4O^x+*0C`X z7M2#iV;LQmojyOQ#p_Mdd+(3$fBCr>q1V|=cvIL>9iWYG3KP{64YrHQH$q_SZ@4~PBL39 zyg`;{k-kYvYUGMxowvUWN$;ARHSDXq$=zbTVPTD4d}-^Wc)!$2w((kKZ(X?PZ2V5r zNl3Riy7;kfw1&3Z^4rzPS!3+!$dPBYNzv=?E`BU0qBPMsORnNe)M8Hyt+nsQa#AVT z+n$ZzqkJdlI`|g6e>`ep(o^m;I`IF#< zoA24rJ*yvBalB@suS3qIjvLwL^D@nCc(<>46eb>~@v3n1?U%WW!@p*0rM%1SYn|44 zaq@d%xwV)2^G1Dqp`lvVc-=5MAXRSUIC7a9kL|Eed8y0R!I|50A5TYj?Iydfer(xtI)B!!~A5bx{&? z*c>Prq}4VrHr6(b-NESuq;u=k>?XX9? zzv!^Ot23A1>de>95_!I1hr@;r_t(j!H|>nlvizib^r|!6H`mjBvqmpK%i`nBum$&7 z{c~+jo_%In?c25FQzq$uiB}iv$|2;4fr8wN%jrDsV!*@nbvpEhpj z@Fiz0K3%FLqv6pwepc{^=(BO6lSt>J&T=~EuB-_Q&FH(E^6i=Ba;uBZlOg>67;T-U z7SZX72Ckk4j;lA3j!XCBUrBjVM}+uV9;y@DC0-G&Z|%QS(R>*-*w5{=4-Vc@&yBxR zBct$4M0#X#)b*6`JdNISVeC~`>I<`Mc#}MrCf=gk`|~&JAAAoJx$0a?0N+L!yyJ@- zr=)Q&;h3G&GrQJ;XI>xZ8~xI|Ew<7}HFGvsX8Hz%1d9y%y9@I?e;`_d%^AQ$M0JO{m#eVIrX00b>DlrUy#)wsbErBmRHO3 z)uYY%5)MvEC@EpnB|? z`Q)?hh1sEf`C@l(4riT-ds-B_vB_DG-@%ODjgM0v{ihv9NxwWNlu>f1YR*RGajpSx z7R2k|MTEn0sWXVI#ZUk@6Rp&r8`)b8kg?h6x*pVYPM6rUl!;r zC`pbwldU9h(_Z1su6P%IE#Y&LN`GCy@g<|oS#-@uU-(fIYbXDf{OBw3H~z0o`2K2Q zS!2VQeRBPeW}ohZQ&{HzMkZWbye3>x{R7nZ0jifX6K)-#UJX#!$;9|?LZ3|_(`9<@ z%=|ZwVK7KJ?+2)UlJS4&XMpPS4nM)p8@{e;aj8+9eb2^IoqY0WCs&b*ztnFed3tV-Ssqi^<`=lLE5_yTiufBr{ws?dlmXZ`(;&omwmnUrXnV7yy>oW{Qma}D@H0ecwH9N?Q&Nce=w-@ z%H+a1>#{%cgkFo4zrx_TY^12}SzHmb%XREb%TqiBqN)1g3fr;{d71$i^vmWdu)({e7+oIapo%^i*TV{fal=D*mIJI3Z#W5t^RD&l+2 zCh_L4h3Pvxc$?>L*b}0YvM{N~?RKS0fliCL0q^`PsS+{!wqMT6G`cit#dD74XOFbMdFn^PTX$c(gNe%4y54NuGA!1IAC4k2)~*tzY@^%FxeG^z(hEB3`@rf4xnU~%UcGiS@XBTC-uiN{!6s-@FY~*+N2q$2Y0sz)q9as{Sn8q6 zJ>qR+JHvMGE6A7X7T4hQbk!9f;gQiDRh_s#{?M0;S&H9MhuujX-uON6q~oOgo5oJH zccUn`xxDVq?Q1plcGPf1#L}6r-c{$xE`4Dr<)S)bSK4jK{C?KGMo)J6&AXr1ipzyA zDC<7icyBZN?!`cb=bvuPTk^GD)W2gLUx8kq3lXNH|YQLV;HjPuyZ(lTFeL6c* z?A)l7O3B`d%n>1L9FsoReLk_*UpL%rfRegp!!+Ra^gNQk;FNj!i+wYOKdNSLQqxw&8u&FO!P_20F`r= zuR=PtBZ;ZOJ3l|Qn=4{m7H{^*bDO*-*RP)xsxx6p_5uT0zYp09+9OTw&f1`4k@EQN zeXWU?S88TNrL2(fTw-LcGj90_w|VlNlS-a_JJ9CZ9jME!6=G@Xrjqlhygh$QZnB?# z+r44Wzv-QszP!do^>qA9gXZhSQ6pZrP;}Q;w(hLTIop=ADUI28W+QS9xWs{U^`HNw=QfzBXgzzR52m)omM(W|N*mQh&RCP2dz$E@DZa>4mcE8c_!# z^B;fm4ARW-T#=i+yzz|N$!|sb8d#4`-OC>3Zc!1_zf^d5W+rdKNHwoQ&W|*!gZHsr zdE+Lp>Wqels8mby(c5mjX-EmJw|cnYUGlyino2RL0cq z);I}TZsp@ET+FaDUHXYPNa%W2=A)eVTla4|S``tMEtb1`$~SYxcOTrohsm}z#IzOY zYrd4_brZ^JF6WnRJKgVSzpjeprngaQ*X_OY+qarL;Po`0x_`@~tdH?0j6BbNnpJ)~ zH7((}XkT6Yo|Dyv3zvi#rzTrTb!Wa5s?w^doE>$yEqTO=1vL&&+7mP)EBgID-L=(^ z&6COa$meBfS}Rf&5}T)~J&|d>f3p7oWpikjNJ)@T#nGwq9wC}5BNOHabSrM@p7dq1 zd(J8ir2}Etx96DljP#s++PSA~srtN_qvzKwOXy2Zds$MuVc#Kp75hg|liPV8+sdh` z8r}~(;j=imf163!2~wlW%qFX=_LE93nwup@F5b1TZ`S6}Qv&->f8KO#tJnN{;#{iJ zLuM8=e2zLSv?YXGn1K9>Irnc%X3mv$dgde1rZss)ibY5G^|BMBqnt>dUE=m}`SGPm zV!g zK}$~6Q^rbaTULtBki(^2YNNyR+w7}%ym`9jL{p#ZLG|0(PSvsY@{2_37A5VMw^!L+ zEn;&IgSP zPhPq|_-DzBi%e{t+e!l^mYcryx3}qYNqFABrjm3n zIhARkxm2TV;i75p+LU=V3oU;&V@0!FL_pS*2g)PWq@@+rCavhUGnlV;-EvYXecuyE z%j)^8L&l!c3p3{`=1H}$JN<6?sSr&i%5A}zMZ;Y0nr6=P3|X&ae{0x`G{5(UzWOYj zQ2e4yYPeE}@w_b$mK41DmY;fgjIM%>r;BU2xb>vNhI_`{MkUd#|%1infoq5P!8jRQtGh9{s1wxAU0mqV@YM z|LLFUDZi#z>rC>O@i=d5`?`XUJk~rJb!41lH;}18$*GuZySsJEKWWwe<3Ev?Lbp1V z2TL9KxUnon@}U>~r*o;0=cMn!gvDjkv+drqid^=s*rC35=1AXv{3j|ofoH!)7f*p8 zqgGHt(6sP<;Wb?yM}gh{xOA;r!C{4aImM51vfHOQw}f-T=6)aB$(8)i%_9G1f_in= z;Ok;0!({Y-Xx{pxL^3z_4!c#^pULi7%6uCndZfxYIW6gM#mnm9hlDcGHI)uJrQS1K8BI|| zOL|pI)43VRoq9u;?Npwg`n;Br`aGlaAm!$}ihKPMKX&>0*IL{ZbA()%aLw4@_v^gm zW@fBaiRtV=8e$kfb))U>m@m;wCkYhCjCvg+r8dmabq#y4*wvz*p~Ith7r&F*@#AC< zR~hdxj36^I_5^c7IV-{E^Tu0E<9pYq5q@>W>kDI@G($Ah0!7uvJ*hWJJ0YM|@%lyE zyLh2|-bT*=A*~3B$`98Bf^F11u6R5u)JV_0Bbms&ywLEW!`Rf@yl(KTtwt9Oc>Gpfoh?WVyV^;_8PoYsa>)1d#g_a)bN-W{gcP!UMjC?l#P<#)lzqMP4dxE15|vKq<)*`I38v9-KJrJ zTbJFxsd{9=whO*a+rBlt^V}#@l_5OGLQykLV$VYf(IYb^eww#o(XevHFi8uE=kjW6 zx<-$GR9F#~Z*%O%XuXbPici+kUBF*)-zQBMbMs>50qRR$VrkzZzR+)ZBCYMLS6@dR zvnsR6s8`AnOD}{-Z#(UR!pt5;0P%falY2g+ZKEleVDYaF{0h4rYn7q(C{rg zsmo^K=_0omIkd)5$C3`+2#__Kr7Z8kIL@CkmMXs^f6Mqo{4vRB+wBa!26mA5)-AJq zhHrd2S?ugX!I?WBbfu}fPx=%+^L4CL!YRclH~Cb@vJ)@m1KH7X&d(2xO1;6X(^>dz zMf6Z-E4Mv)rdsW(L#CG|KbMa$S*iF~Brs&3IW?_}Lh zwr6Y9XvJx@Rn?0PDc#^gNm~_?cA!;K+5V#nHC|hH?^z^!*E?c%%DMiN`G*qaE*LBG z+D^|IJ>0r!Xu_)H8~2K?iOiWetS?r*y}Wq)DYe*;F5}JHmAaX6eL}h>7Q$UE42I8| zqtRbW>br){bYKjLtIFN)&-+@sa98t})CMm1D3$aLEUV>u>!Q^TamU^C8hLIBD<-Gl$%QR@5(tEbB? zNZG%N*VX1(O8*14=J=^m^6lxBG1gs+gw3xHpJx|)PgXWTLVdUScqdBwOzL+26??z5 zB|1g!e_7Ga)H$~082>u=sL9SRwDdDmj|Eu;b=cpY6=C9(m)gMhrTLS)o}|fa70;V9 zY#+rRQhbseJ>$!>NtydnVxA_`r(m38Jg1lYZshY=G0Ufg_cm!uvtR4BygqO1@l82B zi1ITQp2MA6;jpu_VkNJ6bBN=}sU}X51*GI+k-%F|5+VyVuJ2Ayim_mBu$u8%)AhC4 zI?3EJCNm^Dt$}yJ0qf`QWaW1?zl{(omVfHEtZY{80jC`+YA#+_HK+VuC2LHMooR4v>(F2+G-!>k2&O06tr zYpvjJm1gg1{;(r#YUa zPE!5mtg|_1$SrK)(;l;`hP3qDFnPVr`czhfl9K z%s#pxCXy**qc$t2?p#~LkY#=kCyb49593wkTPa`eYSOE8XPGnc^V<7plu32AuAr^Y z05wO}^`=EYVExW{+otO!8tjqzuy)z4^bKmP{dRKvRk9D+5sM;5kB^{OJB#;j_p|j| z#Z2f}os;gy{Vnd>{g~)yiJgnnUMF+k%uJ6_>u3v`)_SwWXknTixw!pnowhw%B zmu;s!MiuYTT_Yy6_`)dDrC%KMEyR5*Z|t${2xAuAG#;VfP+W3skG^$Z58ZttrA;S& zNHtaJRVtN?7S|f(U~{Uj?*1z)3sMmOY@>wD!(-E{+f79L8b^2DEu-`-S^GJSwCMiF zyF=Ej*=On#;WGT<;rFX&|GwI`ztSkf`ErDEU_roWMbQ_DUpoY3ol51UXOHE|E4g)4 zhYYI2H`aK^AN+7MCC^nM;$}U|C0b;>lXNmY)XpNn!}rwmPgXzIx5(A=TOMacNO z%7h#nwb4>UQixZkuE~Kk29c<;ZvA;3RIB2aAush}$jSI~=X}^&e>qGxj;ne{x5rv1 z54E9EhLhEEy|=ErKZ8&O2y*en`HN49h@01Xbx)9r z3kyoPX)UF%^Ho%@L8w-4ual;1$I1ALB!1_I@jXP7Z(`rodRD-`%(%$HyFQG>!#6g& zY}i*flka0xKjx3vCJ#C9jOt#aj?jL*!-Xy_ty3$F;v4HFNN8-(c- z*{HjEpQ;+B3&+%Q?MpI<6PNZ(s(!!Iv?NNEbj$H}T_0A?o_1Z1_dxXMw)QKdFU6e8 z5}On0X4fSWxVle|jJ_%b3PX1FofUTA@QBns#OSTF2wkheX8J-jyc>wQ^T-^Url&;(pWa`H?Ai z|88|uezElUXm#1=3-#W|-s34s$ep#sb4{|%Q|Xp1&s$k!EDWw^&B|#?U^I46Tu-}- z!>r}5>E@(K?#=KqaA{vo4~$(NpMphM(~sw`c~e}?Os_kYSG#AdUG&v`VcfpXM{GyG z?_!S-eI?cz-oi4Ot$KLDXQ7hVeOL4f8+cNpxZYe(61b`M{QHpW2lb|R9Clx$;iVr# zZbFY*S(-}SL49FFgD0uz_VKui#~mM^H+{%R(XSL|MhKdDZj{o>Pn*p|p!`SA-rzY9&2w_4Hd zD_OUWS}ZqOg7nf`4_7t2TlY}wl?F!e|3q3J!u^fMVR8m%XgVksAr%93X?(7hM zJoZlelC)QnF{J!+*U!>(f-6MYyrJ63RZzr_#afYe`|{Jcu$qU)8Pi|Yuv2DpeOfEZ znsL0j&ZR~4kxIfg#-@uQ{7gwJC;2qHJL{}fg){_2R3^RVo^(xp-r8kcQ=^224p3*W zZJXE5EKaNupFHf;TZ5O$^gSTy+x6X(PT#$D$I)po--8|L*VMFH>k39B*E?9e;@Q|# z{IXr*T*w5On&TGRSza!)Hnwk?HnHL?TX2(#81-=MKCZA+^dP_0f2zrPI-6HrSs%pN zJ@z5SyM{=q4>Nr2WRpEqZp8EhD%1+0vt4Q#!;Aff&#t{;TI_m!eZ+=w+&9(Y{FW*f zsHHnllu`81+v1BKXkQ((_`Xg3=6;8h`ICBi?i+FsKKXEoJrmnMxB>aHH)dAXl7K+RtOvO!yv?8v9aep0r>} z{dwETAB=N&S}`q8{K$~)9i?^& znwE$5FrAF}Js!R4VLmk@PfDk3Otq&dI!4DO+|eFeZ05X)Ez+If;2EXVJ2uU{SmW)D zC3ilv?^HgMm=*c0wKMb%L!ltP%VwS0+cnmPm%j3!N$0)5CC5B#tZepe&dcdDJd@Vl z%NfJF;^NdCA4nb(-tzC^5MNt=7=4^heVp<)H?R`xg||ZpUo?!HA2Oe zbgZa%pO}h!hMv^FcBiE-c4&}qYo@O2o14SAZCknSi@F@$-x@ZwVCSs<+m4%R$fQ^^ z?27e?b?zpvNwQqg2kHy2jMHml8HH^vBtvghpTWz3u4?Y0VK)=5@x8sd&s^xrQvD=_ zZOkzueiM4~qi-ekE1Z6lb!F10bt39o&TE*%O}=f;KQtKhPd1_j1?x7<|0=j3X#R^~ zq3m067RAPwkDt){GX1vvr*+B~Mr+Nk*y}E=ncuf)jfmBVGbgM*8H!bJV|)8Z6s^*t zkD0pk{@}rXzrh|6*)d!||HfC336nl?Dj|7hfO>Yw*|@`J+~8qcyrY`^xS2*l6B?=2 z8AHWa*;-HuFG|VRPEEPHT-2R;=>to|Z~4OM6m!X^*Et(oV{V< zQ`Nbp*|yicS+p=Y6Vn5MtJg-v)riWIdnI*N_CNJy?Qh0%nZ*eaUP)0Ki{iBIQIwz%Nx&_hp!aZNG{ul7X^NIubW|9<){7<)SRgPcFot{X zbZ%CivSc*9&tPy%k{{^=mMM>eAUDgDd+2r^HHzYi5u!x6huVyl@Sylj>4a=kI#z?) zL)I)iHp`lOo9Qe%3oH=e2yhj$DN0D}HLpCq%cW+{TSqZ&Or0dey1`!<%gv$~F-u5< zyg3y;bu%Sz#PZ@&W7A0`Zg2?}a<3f99YlsLZXQYMhWwliIsyv>XaTM>US!3iSGbYm z!4t-irnr@dM$>zA6lqk`$V!rRBU>VxqFC9i8wn#x05>dcu95vd4qRd!M z^d=Sva0HY|%ixKTJ~M;fA1eAC)xYg9GghocwySY}BQz+w%9Vd#(t5qc8#KmLOQE5~t z<3x{L6g82TDwHQJi=xvooy;9rMO%$-aBZ_tiz}Q!g0MhfP(Ywi)W~$0Jd-zr?6c_U zI?F3zu$fVXWR~v59YfF6SqrQrZqP>v6w0e{?vgBe*FoYj9lMe`OxEIb2o?wo3UHk< zRo2`_QH9ZDpSO@(ttd`Bi)SSr$#ur6P)MGVr$;9T)?<2RMFO{Z3DHw43C`|tp5Pc6 zeu_0c&yoe*VK zm_atV3THW)E@4yhRN*Bqel;qFehef-lancbG&PImM4hpsVkxI#Y|1ib7(G&PQw$;U z>WiXc@UoOBVEG|%#)aPCr>E=Oq_vP6ozooom1NRhI7^MJO}R7ZiI(KB8)j;zl}4td znZ=PnmL0dG9XD$^#T7%Rk%*z+MNoKIN-JO)6gbYA9dTvQUjT)jIALerP|QjR+gfG% z(_txFJDP;jQSx`V&(u-W82XcR`E)3}t|*#ppSev|SRn8(3vljv|MF2d z00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa z0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV= z5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHaf zKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_ z009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz z00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_< z0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb z2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$## zAOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;| zfB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5cogs*LzfqYu^X(d#0(GYN}}_ zH8hw`l%knIhaH;fpeQM}4t6@}z)n$ZI~03n8c9OubX1Oc6cZsrlcyMkutV5UIz5j= zLK3@O5B_@pc%Ofswcd9ZS9j@Em0*6oE~on3TD!Y#nbV%>29Ah!b{1|L4ZJ`**!j-0zTP6kbCs17=gg6U z8YA0?+>rj>&l?`Q3ivmyw8aLUd7aHi}m^$ni5?L zdkyuh+$D2`S!TxMW4#u)6luca{CN6_Ybu)ch6TT#5!x##x*^(WlOEDf(fT6f_C+du zLHJVRSl`A9wsR{OrBc{X5Z`H$4lXe>(VbW zFKW~+QJX9wvwO0ncjUqq2t$ewQJsTI{y}fpk>wDB&Ci@wQ zVPjYqu*fwhLBCl`1*5Bd+NhJhv}bNH=8U%pcV9 zibq`M_1dV}ZV(QR1xC^0_eV-gA160oIjtEmQp%GaMKx%fwEh>jaxSRmQXm(kcUqwFU~u3rWT=zAnHN-#dT*VAthmZ`+7>biJ)Durwiq%NYKQB(_n((?#f_OZ+`N_n=Cz13 zlX~ct1KH7Lvlx2fX)H~)n(wqFx;)dS#l!K_j2A!Mx0V$lckr)ybHtrLX=U`_n5l|3 zl^m83v?{yOYN`o&GX4rQyt#XIMpt`1#}` zsfwjW`Arp7>*)Nn&I`Zwyy;;^)M!-&Rv+NAnsYKLV`DPu?YBs-8P%?t9c&V}?!f95 z)BSSpH-5Q5$aYb9s|=dgJ(Y18|5)LZ`7l%L$yMvk@UXH`88W&U^e5A=t8WXrvSQg^ zLCZJ>@>Fq=DyL!6npnkZ?M?Ps1aVEYaGq9>NxkEVm1){3v!b@$Wc-*ub~$uqk4V;K zMRmGF7SrQY!@_hYx45?*a*geZYmB!@kVTxNncg59t=;lIwa+^!g*m6kXvoq3l4y2K z&72`dlx))2ljnaHk)^?`XxYVp*J}mhq@S3FO~oP)yQ@5I(dD9N&yKL;k_}h?RXwV? zL8((xmf&elHO^cdm2_~XY_4zU%qi*oF zE+wa$^C&@hMlCGUTxOrEM%~#%c+n=mKk;=-!8B&{ospPDrVssoQ&%vwYmWq7zn42n zD>j@wIzcG3X6P@Hs1m!$GZ>+qeCzF$qU0Ppr{^;1Eo*zw(uj~_fvqG{dOa(G$=&_v zA<2v@@=CCD_TdTEtBa_UTUh_BbPP9e-1VIKHsI5pJ`u~fSkuz7cXO^q!)u)rza1^~ zG8n!>F^=h}@6nZOxNZ%k-^jjaS}@mUQz|)Jyx4v=o2fLS<=zyx4lXi`OHHVr6)<1pqu1~Xolqa8=pK78F;Z`h9z#U= zc71jrlRV{X+``!tM5J|*B0rQCcEfyH%+75EUjo`CuRG<0D9fw4i0a{DNg-aSM8tkg zcJ96?TUuam9@0bZ@^P<{A%?THfI_6ScK2goTpPZ;`9Qvtb=1ds2fBY;p?W9Nd5Q zP}R}rM}|V0^3%%^0;=R+k>uoR_XTpoahv`lKM&ZOqz>Oz}?)(*)JiR?N_9k8nA?~ zO{?sjs~WltdlI@LgBSM)%yyI+#CHWSJPPa;ZG%?(S4E?IF3?> zj3c;Lsy|(Qczd|f(qFkT=b?8jMa(jHQm1$=ck5eVcvXwK?a+m!w|l0MeN?-p=9x<} znpk^Yv9G?~^I1((%s*>Kxe~FuC$tcRr4C(NFru6VKx65DOy*?v;ZiMRLri-f&4tz?P`ZmF` zMV%5`pP8&@A`m*MQy&bwqz4D(PY~Vr%D3>8vw|v07!fmfjmgrMn z#rA^BR=Vx1>`#YdWUD2$M#KznBkf>aLtB0oQ)9773x(4x5Wime z<#N#ihEKBb?3d4DP1z!W22D*kXYk2ogP&D3Gwze9bK+UCTH9JJ2c8V4w5M$I@Tw-K zIgunZ%}<}Y{6o`uGNw-1ik{f(rWrK1uJa#EdJDIA&MHvj=8_y)+atYZyKi|SkRH}| zx3+Jl7*eD!qFsFM+Xh5v)2Qr}#IYx1?1j%|LtDFE#iXkGm=oGfvvBOi?GitpH!>oNo8?|GRQ z-BCVLbu`_%Q23y4tJmv!Ms}Kc#i4;t$N627MxsQdPnzvOqQxs@yhQU~X#RUEA`1M^ zSNL998t^8-gHzgMl3nLYU$ty-Y*z7>JLaA)yv0UjdsV&p3Wg-`#Zr0bUS(m%E#KVl zQ9&op{N5o|owM(+O1lHvHOzZc^DUTz*SQp+og2N57q>-9RO>uSL*IvOhj*SAS#KQ5h!e-Cwag zFly#fqU~H>PK0{p6G@uHeq~o!qi}CmT&H6s?cFi@x8E7#7{^sV!K`{&4)I|UOX;g< z)F896%tiZzTroq9%qW{6$+JW(nzwx>S*EwM|iey9eiVbB04&`?*_pY=)dGX4ht2K?1kH6WN;_&3p#78$K z2o;T3C42IXw59ZLiiTf^vZO6;#~yKeK#64evPTESzvf+ETYggOzEb|j(S4I!KMp=y zVxs9U%_Yfo?^KKu-LAc%a}&Kf7I4xsgo{qSpg1cIS046Rd?>>`Sj~NxWck>WHE;D7tvxlJy^o9a({ z>{NaEzijTC!d_Qx_8x!fiJddP4#{3?7rjvv5n{>r>YVQgc3e^PQ);GUs+^u69tBSj fA187QqaXhZ&2w_A literal 0 HcmV?d00001 From 40b2b3f7a48098ed9d8537c0299b2c026cc87560 Mon Sep 17 00:00:00 2001 From: uniflare Date: Wed, 11 Feb 2026 03:58:32 +0100 Subject: [PATCH 3/4] Fix missing coinitialize on map image creation thread Remove obfuscation code, fixing missing image data copy Remove "Check for Updates" option and mechanism --- MSCeditor/MSCeditor.rc | Bin 47718 -> 47548 bytes MSCeditor/externs.cpp | 2 +- MSCeditor/externs.h | 2 +- MSCeditor/main.cpp | 33 ------ MSCeditor/map.cpp | 255 ++++++++++++++++++----------------------- MSCeditor/map.h | 2 +- MSCeditor/resource.h | Bin 13510 -> 13416 bytes MSCeditor/utils.cpp | 5 +- 8 files changed, 115 insertions(+), 184 deletions(-) diff --git a/MSCeditor/MSCeditor.rc b/MSCeditor/MSCeditor.rc index 042b1632e27dd138b072df2a58c82b1b4b6302b8..5a1f4a5bad1285b401833cfda880d8c68a733230 100644 GIT binary patch delta 14 WcmaF%g=x=crVRp1Ht$-pMic-(N(aOM delta 90 zcmdn(3AbR2jhF!r;gdGP!bz{bqqBYeWHd;}}2y diff --git a/MSCeditor/externs.cpp b/MSCeditor/externs.cpp index 8d36de7..29a0a15 100644 --- a/MSCeditor/externs.cpp +++ b/MSCeditor/externs.cpp @@ -28,7 +28,7 @@ DebugOutput *dbglog; class MapDialog* EditorMap = NULL; #endif /*_MAP*/ -bool bFiledateinit = FALSE, bMakeBackup = TRUE, bEulerAngles = FALSE, bCheckForUpdate = TRUE, bBackupChangeNotified = FALSE, bFirstStartup = TRUE, bAllowScale = FALSE, bDisplayRawNames = FALSE, bCheckIssues = FALSE, bStartWithMap = FALSE; +bool bFiledateinit = FALSE, bMakeBackup = TRUE, bEulerAngles = FALSE, bBackupChangeNotified = FALSE, bFirstStartup = TRUE, bAllowScale = FALSE, bDisplayRawNames = FALSE, bCheckIssues = FALSE, bStartWithMap = FALSE; const std::wstring settings[] = { L"make_backup", L"backup_change_notified", L"check_updates", L"first_startup", L"allow_scale", L"use_euler", L"raw_names", L"check_issues", L"start_with_map"}; PVOID pResizeState = NULL; diff --git a/MSCeditor/externs.h b/MSCeditor/externs.h index 4c9ab84..033feac 100644 --- a/MSCeditor/externs.h +++ b/MSCeditor/externs.h @@ -88,7 +88,7 @@ extern HFONT hListFont; #ifdef _MAP extern class MapDialog* EditorMap; #endif /*_MAP*/ -extern bool bFiledateinit, bMakeBackup, bEulerAngles, bCheckForUpdate, bBackupChangeNotified, bFirstStartup, bAllowScale, bDisplayRawNames, bCheckIssues, bStartWithMap; +extern bool bFiledateinit, bMakeBackup, bEulerAngles, bBackupChangeNotified, bFirstStartup, bAllowScale, bDisplayRawNames, bCheckIssues, bStartWithMap; extern PVOID pResizeState; diff --git a/MSCeditor/main.cpp b/MSCeditor/main.cpp index 05957df..e57df45 100644 --- a/MSCeditor/main.cpp +++ b/MSCeditor/main.cpp @@ -63,38 +63,10 @@ INT_PTR CALLBACK DlgProc(HWND hwnd, uint32_t Message, WPARAM wParam, LPARAM lPar HWND hHelp = CreateDialog(hInst, MAKEINTRESOURCE(IDD_HELP), hDialog, HelpProc); ShowWindow(hHelp, SW_SHOW); } - - //check updates - if (bCheckForUpdate && !appfolderpath.empty()) - { - std::wstring path; -#ifdef _DEBUG - if (!DownloadUpdatefile(L"", path)) -#else - if (!DownloadUpdatefile(L"http://mscedit.superskalar.org/current", path)) -#endif - { - std::wstring link, changelog; - if (CheckUpdate(path, link, changelog)) - { - switch (MessageBox(NULL, (GLOB_STRS[36] + changelog).c_str(), Title.c_str(), MB_YESNO | MB_ICONINFORMATION)) - { - case IDYES: - ShellExecute(NULL, L"open", link.c_str(), NULL, NULL, SW_SHOWDEFAULT); - EndDialog(hDialog, 0); - break; - default: - break; - } - } - } - } // Apply settings if (!bMakeBackup) CheckMenuItem(GetSubMenu(GetMenu(hDialog), 2), GetMenuItemID(GetSubMenu(GetMenu(hDialog), 2), 0), MF_UNCHECKED); - if (!bCheckForUpdate) - CheckMenuItem(GetSubMenu(GetMenu(hDialog), 2), GetMenuItemID(GetSubMenu(GetMenu(hDialog), 2), 1), MF_UNCHECKED); if (!bEulerAngles) CheckMenuItem(GetSubMenu(GetMenu(hDialog), 2), GetMenuItemID(GetSubMenu(GetMenu(hDialog), 2), 2), MF_UNCHECKED); if (!bDisplayRawNames) @@ -339,11 +311,6 @@ INT_PTR CALLBACK DlgProc(HWND hwnd, uint32_t Message, WPARAM wParam, LPARAM lPar bMakeBackup = !bMakeBackup; break; } - case ID_OPTIONS_CHECKFORUPDATES: - { - bCheckForUpdate = MF_CHECKED != (bCheckForUpdate ? CheckMenuItem(GetSubMenu(GetMenu(hDialog), 2), GetMenuItemID(GetSubMenu(GetMenu(hDialog), 2), 1), MF_UNCHECKED) : CheckMenuItem(GetSubMenu(GetMenu(hDialog), 2), GetMenuItemID(GetSubMenu(GetMenu(hDialog), 2), 1), MF_CHECKED)); - break; - } case ID_OPTIONS_USEEULERANGLES: { bEulerAngles = MF_CHECKED != (bEulerAngles ? CheckMenuItem(GetSubMenu(GetMenu(hDialog), 2), GetMenuItemID(GetSubMenu(GetMenu(hDialog), 2), 2), MF_UNCHECKED) : CheckMenuItem(GetSubMenu(GetMenu(hDialog), 2), GetMenuItemID(GetSubMenu(GetMenu(hDialog), 2), 2), MF_CHECKED)); diff --git a/MSCeditor/map.cpp b/MSCeditor/map.cpp index d5738ee..e55d120 100644 --- a/MSCeditor/map.cpp +++ b/MSCeditor/map.cpp @@ -88,28 +88,6 @@ D2D1_SIZE_F GetCursorSize() return size; } -// MAKE SURE THESE AREN'T INCLUDED IN THE SOURCE -namespace Obfuscate -{ - HRESULT ObfuscateIStream(IStream* pOutStream) - { - /* Omitted */ - return S_OK; - } - - HRESULT DeobfuscateResource(BYTE* ResourceBytes, const DWORD imageFileSize, BYTE* OutputBytes) - { - /* Omitted */ - return S_OK; - } - - HRESULT IsValidJPG(BYTE* Bytes, const DWORD NumBytes) - { - /* Omitted */ - return S_OK; - } -} - HRESULT PrepareResource(BYTE** pResource, DWORD& imageFileSize) { HRESULT hr = S_OK; @@ -141,16 +119,7 @@ HRESULT PrepareResource(BYTE** pResource, DWORD& imageFileSize) if (SUCCEEDED(hr)) { *pResource = new BYTE[imageFileSize](); - hr = Obfuscate::DeobfuscateResource(reinterpret_cast(pImageFile), imageFileSize, *pResource); - } - if (SUCCEEDED(hr)) - { - hr = Obfuscate::IsValidJPG(*pResource, imageFileSize); - if (FAILED(hr)) - { - delete[] *pResource; - *pResource = NULL; - } + std::memcpy(*pResource, reinterpret_cast(pImageFile), imageFileSize); } if (imageResDataHandle) FreeResource(imageResDataHandle); @@ -202,11 +171,10 @@ MapDialog::~MapDialog() m_MapDistanceNodes.clear(); m_MapDistanceNodes.shrink_to_fit(); std::forward_list().swap(m_MapMarkers); - CoUninitialize(); EditorMap = NULL; } -HERROR MapDialog::PrepareRawImage(BYTE** pDeobfuscatedResource, ComPtr& pConverter, const DWORD imageFileSize, const GUID& format) +HERROR MapDialog::PrepareRawImage(BYTE** pResource, ComPtr& pConverter, const DWORD imageFileSize, const GUID& format) { HERROR hr = { S_OK, std::string(s_eSz, '\0') }; ComPtr pResourceStream; @@ -220,7 +188,7 @@ HERROR MapDialog::PrepareRawImage(BYTE** pDeobfuscatedResource, ComPtrInitializeFromMemory(*pDeobfuscatedResource, imageFileSize); + hr.first = pResourceStream->InitializeFromMemory(*pResource, imageFileSize); MAKE_HR(hr); @@ -254,140 +222,142 @@ HERROR MapDialog::PrepareRawImage(BYTE** pDeobfuscatedResource, ComPtr pRawImage; + HRESULT hres = CoInitializeEx(NULL, COINIT_APARTMENTTHREADED | COINIT_DISABLE_OLE1DDE); + if (SUCCEEDED(hres)) { - DWORD imageFileSize; - // Lock and allocate resource - hr.first = PrepareResource(&pDeobfuscatedResource, imageFileSize); + HERROR hr = { S_OK, std::string(s_eSz, '\0') }; + BYTE* pResource = NULL; + ComPtr pRawImage; - // Convert JPG to raw image - if (SUCCEEDED(hr.first)) - hr = PrepareRawImage(&pDeobfuscatedResource, pRawImage, imageFileSize, GUID_WICPixelFormat32bppBGR); + { + DWORD imageFileSize; + // Lock and allocate resource + hr.first = PrepareResource(&pResource, imageFileSize); - MAKE_HR(hr); - } + // Convert JPG to raw image + if (SUCCEEDED(hr.first)) + hr = PrepareRawImage(&pResource, pRawImage, imageFileSize, GUID_WICPixelFormat32bppBGR); - // Encode and save DDS - { - ComPtr pDDSEncoder; - ComPtr pBitMapEncoder; - ComPtr pDDSFrame; - ComPtr pOutStream; - WICDdsParameters DDSParams = { 0 }; + MAKE_HR(hr); + } - if (SUCCEEDED(hr.first)) + // Encode and save DDS { - UINT JPGHeight = UINT_MAX, JPGWidth = UINT_MAX; - pRawImage->GetSize(&JPGWidth, &JPGHeight); - DDSParams.AlphaMode = WICDdsAlphaModePremultiplied; - DDSParams.ArraySize = 1; - DDSParams.Depth = 1; - DDSParams.Dimension = WICDdsTexture2D; - DDSParams.DxgiFormat = DXGI_FORMAT_BC1_UNORM; - DDSParams.Height = JPGHeight; - DDSParams.Width = JPGWidth; - DDSParams.MipLevels = 1; - } + ComPtr pDDSEncoder; + ComPtr pBitMapEncoder; + ComPtr pDDSFrame; + ComPtr pOutStream; + WICDdsParameters DDSParams = { 0 }; - MAKE_HR(hr); + if (SUCCEEDED(hr.first)) + { + UINT JPGHeight = UINT_MAX, JPGWidth = UINT_MAX; + pRawImage->GetSize(&JPGWidth, &JPGHeight); + DDSParams.AlphaMode = WICDdsAlphaModePremultiplied; + DDSParams.ArraySize = 1; + DDSParams.Depth = 1; + DDSParams.Dimension = WICDdsTexture2D; + DDSParams.DxgiFormat = DXGI_FORMAT_BC1_UNORM; + DDSParams.Height = JPGHeight; + DDSParams.Width = JPGWidth; + DDSParams.MipLevels = 1; + } - if (SUCCEEDED(hr.first)) - hr.first = m_IWICFactory->CreateStream(pOutStream.GetAddressOf()); + MAKE_HR(hr); - MAKE_HR(hr); + if (SUCCEEDED(hr.first)) + hr.first = m_IWICFactory->CreateStream(pOutStream.GetAddressOf()); - if (SUCCEEDED(hr.first)) - hr.first = FindAndCreateAppFolder(); + MAKE_HR(hr); - MAKE_HR(hr); + if (SUCCEEDED(hr.first)) + hr.first = FindAndCreateAppFolder(); - if (SUCCEEDED(hr.first)) - hr.first = pOutStream->InitializeFromFilename(m_MapDDSPath.c_str(), GENERIC_WRITE | GENERIC_READ); + MAKE_HR(hr); - MAKE_HR(hr); + if (SUCCEEDED(hr.first)) + hr.first = pOutStream->InitializeFromFilename(m_MapDDSPath.c_str(), GENERIC_WRITE | GENERIC_READ); - if (SUCCEEDED(hr.first)) - hr.first = m_IWICFactory->CreateEncoder(GUID_ContainerFormatDds, NULL, pBitMapEncoder.GetAddressOf()); + MAKE_HR(hr); - MAKE_HR(hr); + if (SUCCEEDED(hr.first)) + hr.first = m_IWICFactory->CreateEncoder(GUID_ContainerFormatDds, NULL, pBitMapEncoder.GetAddressOf()); - if (SUCCEEDED(hr.first)) - hr.first = pBitMapEncoder->Initialize(pOutStream.Get(), WICBitmapEncoderNoCache); + MAKE_HR(hr); - MAKE_HR(hr); + if (SUCCEEDED(hr.first)) + hr.first = pBitMapEncoder->Initialize(pOutStream.Get(), WICBitmapEncoderNoCache); - if (SUCCEEDED(hr.first)) - hr.first = pBitMapEncoder.As(&pDDSEncoder); + MAKE_HR(hr); - MAKE_HR(hr); + if (SUCCEEDED(hr.first)) + hr.first = pBitMapEncoder.As(&pDDSEncoder); - if (SUCCEEDED(hr.first)) - hr.first = pDDSEncoder->SetParameters(&DDSParams); - - MAKE_HR(hr); + MAKE_HR(hr); - if (SUCCEEDED(hr.first)) - { - UINT ArrayIndex = UINT_MAX, MipLevelIndex = UINT_MAX, SliceIndex = UINT_MAX; - hr.first = pDDSEncoder->CreateNewFrame(pDDSFrame.GetAddressOf(), &ArrayIndex, &MipLevelIndex, &SliceIndex); - } + if (SUCCEEDED(hr.first)) + hr.first = pDDSEncoder->SetParameters(&DDSParams); + + MAKE_HR(hr); - MAKE_HR(hr); + if (SUCCEEDED(hr.first)) + { + UINT ArrayIndex = UINT_MAX, MipLevelIndex = UINT_MAX, SliceIndex = UINT_MAX; + hr.first = pDDSEncoder->CreateNewFrame(pDDSFrame.GetAddressOf(), &ArrayIndex, &MipLevelIndex, &SliceIndex); + } - if (SUCCEEDED(hr.first)) - hr.first = pDDSFrame->Initialize(NULL); + MAKE_HR(hr); - MAKE_HR(hr); + if (SUCCEEDED(hr.first)) + hr.first = pDDSFrame->Initialize(NULL); - if (SUCCEEDED(hr.first)) - hr.first = pDDSFrame->WriteSource(pRawImage.Get(), NULL); + MAKE_HR(hr); - MAKE_HR(hr); + if (SUCCEEDED(hr.first)) + hr.first = pDDSFrame->WriteSource(pRawImage.Get(), NULL); - if (SUCCEEDED(hr.first)) - hr.first = pDDSFrame->Commit(); + MAKE_HR(hr); - MAKE_HR(hr); + if (SUCCEEDED(hr.first)) + hr.first = pDDSFrame->Commit(); - if (SUCCEEDED(hr.first)) - hr.first = pBitMapEncoder->Commit(); + MAKE_HR(hr); - MAKE_HR(hr); + if (SUCCEEDED(hr.first)) + hr.first = pBitMapEncoder->Commit(); - if (SUCCEEDED(hr.first)) - hr.first = Obfuscate::ObfuscateIStream(pOutStream.Get()); + MAKE_HR(hr); - MAKE_HR(hr); + if (pResource) + { + delete[] pResource; + pResource = NULL; + } + } - if (pDeobfuscatedResource) + if (FAILED(hr.first)) { - delete[] pDeobfuscatedResource; - pDeobfuscatedResource = NULL; + std::wstring hrstr(64, '\0'); + HRToStr(hr.first, hrstr); + hrstr += WidenStr(hr.second); + size_t sz = hrstr.size() + 64; + std::wstring buffer(sz, '\0'); + buffer.resize(swprintf(&buffer[0], sz, GLOB_STRS[62].c_str(), hrstr.c_str())); + MessageBox(hDialog, buffer.c_str(), ErrorTitle.c_str(), MB_OK | MB_ICONERROR); } - } - if (FAILED(hr.first)) - { - std::wstring hrstr(64, '\0'); - HRToStr(hr.first, hrstr); - hrstr += WidenStr(hr.second); - size_t sz = hrstr.size() + 64; - std::wstring buffer(sz, '\0'); - buffer.resize(swprintf(&buffer[0], sz, GLOB_STRS[62].c_str(), hrstr.c_str())); - MessageBox(hDialog, buffer.c_str(), ErrorTitle.c_str(), MB_OK | MB_ICONERROR); - } + //if (SUCCEEDED(hr.first)) + // hr.first = IsMapDDSValid() ? S_OK : E_FAIL; - if (SUCCEEDED(hr.first)) - hr.first = IsMapDDSValid() ? S_OK : E_FAIL; + if (SUCCEEDED(hr.first)) + hr = LoadDDS(TRUE); - if (SUCCEEDED(hr.first)) - hr = LoadDDS(TRUE); + if (SUCCEEDED(hr.first)) + OnMapRender(m_MapRenderTarget->GetHwnd()); - if (SUCCEEDED(hr.first)) - OnMapRender(m_MapRenderTarget->GetHwnd()); + CoUninitialize(); + } } HERROR MapDialog::LoadJPG() @@ -395,7 +365,7 @@ HERROR MapDialog::LoadJPG() HERROR hr = { S_OK, std::string(s_eSz, '\0') }; ComPtr pRawImage; - BYTE* pDeobfuscatedResource = NULL; + BYTE* pResource = NULL; DWORD imageFileSize; // If the rendertarget isn't valid, exit here @@ -404,13 +374,13 @@ HERROR MapDialog::LoadJPG() // Lock and allocate resource if (SUCCEEDED(hr.first)) - hr.first = PrepareResource(&pDeobfuscatedResource, imageFileSize); + hr.first = PrepareResource(&pResource, imageFileSize); MAKE_HR(hr); // Convert JPG to raw image if (SUCCEEDED(hr.first)) - hr = PrepareRawImage(&pDeobfuscatedResource, pRawImage, imageFileSize, GUID_WICPixelFormat32bppBGR); + hr = PrepareRawImage(&pResource, pRawImage, imageFileSize, GUID_WICPixelFormat32bppBGR); MAKE_HR(hr); @@ -436,10 +406,10 @@ HERROR MapDialog::LoadJPG() MAKE_HR(hr); // Free memory. We can't do this earlier because pRawImage actually points to this - if (pDeobfuscatedResource) + if (pResource) { - delete[] pDeobfuscatedResource; - pDeobfuscatedResource = NULL; + delete[] pResource; + pResource = NULL; } // Update the map @@ -456,7 +426,7 @@ HERROR MapDialog::LoadDDS(const bool bCalledFromThread) ComPtr pDecoder; ComPtr pFrame; ComPtr pInStream; - ComPtr pDeobfuscatedStream; + ComPtr pOutStream; #ifdef _MAP // If this is called from the worker thread after the object it is called from is destroyed underneath it @@ -480,31 +450,28 @@ HERROR MapDialog::LoadDDS(const bool bCalledFromThread) if (SUCCEEDED(hr.first)) { - pDeobfuscatedStream.Attach(SHCreateMemStream(NULL, 0)); - hr.first = pDeobfuscatedStream ? S_OK : E_OUTOFMEMORY; + pOutStream.Attach(SHCreateMemStream(NULL, 0)); + hr.first = pOutStream ? S_OK : E_OUTOFMEMORY; } MAKE_HR(hr); if (SUCCEEDED(hr.first)) - hr.first = pDeobfuscatedStream->SetSize(stat.cbSize); + hr.first = pOutStream->SetSize(stat.cbSize); MAKE_HR(hr); ULARGE_INTEGER BytesWritten, BytesRead; if (SUCCEEDED(hr.first)) - hr.first = pInStream->CopyTo(pDeobfuscatedStream.Get(), stat.cbSize, &BytesRead, &BytesWritten); + hr.first = pInStream->CopyTo(pOutStream.Get(), stat.cbSize, &BytesRead, &BytesWritten); MAKE_HR(hr); } - if (SUCCEEDED(hr.first)) - hr.first = Obfuscate::ObfuscateIStream(pDeobfuscatedStream.Get()); - MAKE_HR(hr); if (SUCCEEDED(hr.first)) - hr.first = m_IWICFactory->CreateDecoderFromStream(pDeobfuscatedStream.Get(), NULL, WICDecodeMetadataCacheOnDemand, pDecoder.GetAddressOf()); + hr.first = m_IWICFactory->CreateDecoderFromStream(pOutStream.Get(), NULL, WICDecodeMetadataCacheOnDemand, pDecoder.GetAddressOf()); MAKE_HR(hr); diff --git a/MSCeditor/map.h b/MSCeditor/map.h index e190394..5f92a8b 100644 --- a/MSCeditor/map.h +++ b/MSCeditor/map.h @@ -136,7 +136,7 @@ class MapDialog void SidebarUpdateScrollbar(uint32_t nPage = UINT_MAX); // Convert JPG to raw bitmap - HERROR PrepareRawImage(BYTE** pDeobfuscatedResource, Microsoft::WRL::ComPtr& pConverter, const DWORD imageFileSize, const GUID& format); + HERROR PrepareRawImage(BYTE** pResource, Microsoft::WRL::ComPtr& pConverter, const DWORD imageFileSize, const GUID& format); // Gets the JPG from resource, converts it to bitmap, then to DDS and then saves it to file. Is working on a seperate thread. Only executed for Windows 8 and greater void PrepareMapDDS(); diff --git a/MSCeditor/resource.h b/MSCeditor/resource.h index 08e793ebd1abeb2ea787e5113dd3722e0aeb264e..8fa426fc7b9e59432a44af7794aafe0f9d60924c 100644 GIT binary patch delta 16 YcmX?>`66S(6aC2-)Oj}h8C0+U086k3h5!Hn delta 52 zcmaEnaV&Gg6aC2x30M;rG{r~^~ diff --git a/MSCeditor/utils.cpp b/MSCeditor/utils.cpp index 350124c..f58fd4d 100644 --- a/MSCeditor/utils.cpp +++ b/MSCeditor/utils.cpp @@ -947,8 +947,6 @@ void FillVector(const std::vector ¶ms, const std::wstring &ide bMakeBackup = bSetting; else if (params[0] == settings[1]) bBackupChangeNotified = bSetting; - else if (params[0] == settings[2]) - bCheckForUpdate = bSetting; else if (params[0] == settings[3]) bFirstStartup = bSetting; else if (params[0] == settings[4]) @@ -1406,7 +1404,6 @@ bool SaveSettings(const std::wstring &savefilename) setting += L'\"' + settings[0] + L"\" \"" + std::to_wstring(bMakeBackup == 1) + L"\"\n"; setting += L'\"' + settings[1] + L"\" \"" + std::to_wstring(bBackupChangeNotified == 1) + L"\"\n"; - setting += L'\"' + settings[2] + L"\" \"" + std::to_wstring(bCheckForUpdate == 1) + L"\"\n"; setting += L'\"' + settings[3] + L"\" \"" + std::to_wstring(bFirstStartup == 1) + L"\"\n"; setting += L'\"' + settings[4] + L"\" \"" + std::to_wstring(bAllowScale == 1) + L"\"\n"; setting += L'\"' + settings[5] + L"\" \"" + std::to_wstring(bEulerAngles == 1) + L"\"\n"; @@ -2830,7 +2827,7 @@ ANGLES NormalizeAngles(ANGLES *angles) ANGLES QuatToEuler(const QTRN *q) { // unit correction factor - float unit = pow(q->x, 2) + pow(q->y, 2) + pow(q->z, 2) + pow(q->w, 2); + float unit = static_cast(pow(q->x, 2) + pow(q->y, 2) + pow(q->z, 2) + pow(q->w, 2)); float test = q->x * q->w - q->y * q->z; float sign = test > 0.4995f * unit ? 1.f : (test < -0.4995f * unit ? -1.f : 0.f); From 0aaf52e174e4e319be272665b0c5df4e890b36d6 Mon Sep 17 00:00:00 2001 From: uniflare Date: Wed, 11 Feb 2026 04:18:23 +0100 Subject: [PATCH 4/4] Bumped version to 1.12.1 --- MSCeditor/MSCeditor.rc | Bin 47548 -> 48182 bytes MSCeditor/externs.cpp | 2 +- MSCeditor/utils.cpp | 86 ----------------------------------------- MSCeditor/version.h | 6 ++- 4 files changed, 5 insertions(+), 89 deletions(-) diff --git a/MSCeditor/MSCeditor.rc b/MSCeditor/MSCeditor.rc index 5a1f4a5bad1285b401833cfda880d8c68a733230..54658bf7933d7ea3f9bd8a34d50eb8421e41a5d9 100644 GIT binary patch delta 2346 zcmcgtUr3Wt6hE7b=9<$@KbLOW_9aqd&V7G26@@e{l*}|G%tR8D{wU4-hl%A&KGc(X zdWaATds0w0Kk=m=^2JBZ-h-Zfh#(LHiO#*>rVa#FKJGo|{O<3b-#H(D8rS!Y z)9+$?g=zK+&;-3O0>dx}-OvvgHM{9a8fLYaaZ4$#EddGqAVM8H;M)Hm&uBFjUdqYq|Hhyw_1KO~r$C>GeAblSW+)ygdG?I@YvX#M)GZrsSNF6xc zRgTTKtY{l_2tiQDMuKvh6$nF!RvFI)6#Su>l8CGnpQYzuyW4uI9oj%bgL)}LChTE~ zU%@eWJDm8vuQ16tD$^4TCHT3FdzRNi8DU_9F~ji?wlZQ=Ng5|_t3%k8>2R`KDB-Un z)0~JcajY?cVDL>*BOOhsseN`*n-zkp9Ggqw1&AdaD*_TR zpsyqhjN}v~wGeD5rFf9zU`5U7vHpadFiYmNQ`(splhl}xHtO)m}9N0PK#=D{!=VG!!#O?Y5XDjvPQR>$o z^3p?ncbNM2Ac*LFD)5umRbRG9o&z*wJ_jh)(SHA`zd(fR&`Lf2xQ77w9HVh`^7CrY zB~pwL^4|ydDegE$)zx|2V^CB7)8oG8#!s3}_*eX+xcgf0#2dVsbKusf1+DMRIJV~F lTt(NaadXsxzh78zS}k0emvX5F6m2x3Vj@?AMuW-^kOC9m z(C|!R!pY%gV*CNVknrd&@!bcBi800pXLir=SS*Gb({OgroZbCqzWH{BwQu`ge%Uv> zh+j>4IpZ)06EFn#Xsm`C;KXfHVdf;gjSKq-3@cAuW_8OvX?9s41Yu}`c8EX=^uQ_T zrT6nRHj||jqGXHE*ZcT!ro`faDaeEjuweJ$3X=nK((~!*Jy=T5rojuim>%tRfDb%S z3zgsiFVu^%7V01%W_I+$o;i@vj$#3 zi}wGa*(x}L0qH%>^vJxVFP+nWiA;&xlXK}7rx8vaA+UZ8OxCT`&cDT{%ohE|Cfy#q zlx4$5x%)}0zZ5I(j>Pp#HPbVw#h;>Ph4%rx9JgjVD4K+u%h+imlLmILye%@nKEjl` z3TRCHZ*)-~4D^W1w5%2eI%isDB1L>u;zhf}Efw>Nb3*2P%X(!Xa}AUCC}re?O!F=6 zvu7P=6scKOl04Z<+SX^1k7;{x3O6)SQ%wbdBsFnImW#P2OO^Xb-7?1FB8DvTQj$1jNyMw8-DDx&wcnkQi+8ox!!LpuRIKnl4k;DcW*Oj2(hF zZge|QpRRdp^u64&yNCq#wgp-ReaZHutp`r%dm`Fu#^rwl4AS_0ciheOVw_#i+9ho} z_cHOD>)t9I_3ug6Si%ma&~l3W3Q3V{xJ9-WHcqAqE6LT0&z6=m&rsAYqM_D64Nl*& zmc+>OCbAMPaS@^zb&FVwISZv}ayGr-ZgkS>%P>kiCg?XvjeLN9w}dSQSK%&Ms^KQB ZxGr-IWwdITz6`-Ny!g08wY?}X{{+Mtu-E_q diff --git a/MSCeditor/externs.cpp b/MSCeditor/externs.cpp index 29a0a15..5ed74f9 100644 --- a/MSCeditor/externs.cpp +++ b/MSCeditor/externs.cpp @@ -39,7 +39,7 @@ const float deg2Rad = pi / 180.f; const std::wstring posInfinity(1, wchar_t(0x221E)); const std::wstring negInfinity = L"-" + posInfinity; -const std::wstring Version = std::to_wstring(VERSION_MAJOR) + L"." + std::to_wstring(VERSION_MINOR); +const std::wstring Version = std::to_wstring(VERSION_MAJOR) + L"." + std::to_wstring(VERSION_MINOR) + L"." + std::to_wstring(VERSION_REVISION); const std::wstring bools[2] = { L"false", L"true" }; const std::wstring Title = L"MSCEditor " + Version; const std::wstring IniFile = L"msce.ini"; diff --git a/MSCeditor/utils.cpp b/MSCeditor/utils.cpp index f58fd4d..95385dd 100644 --- a/MSCeditor/utils.cpp +++ b/MSCeditor/utils.cpp @@ -238,13 +238,6 @@ HRESULT FindAndCreateAppFolder() return S_OK; } -BOOL DownloadUpdatefile(const std::wstring url, std::wstring &path) -{ - path = appfolderpath; - AppendPath(path, L"update.tmp"); - return URLDownloadToFile(NULL, (LPCWSTR)url.c_str(), (LPCWSTR)path.c_str(), 0, NULL); -} - void FlipString(std::string &str, std::wstring file = L"") { for (uint32_t i = 0; i < str.size(); i++) @@ -257,85 +250,6 @@ void FlipString(std::string &str, std::wstring file = L"") } } -BOOL ParseUpdateData(const std::string &str, std::vector &strs) -{ - uint32_t i = 0; - - while (TRUE) - { - uint32_t size; - if (str[i] < 0) - size = 128 - (-128 - str[i]); - else - size = (uint32_t)str[i]; - strs.push_back(str.substr(i + 1, size)); - i += 1 + size; - if ((i + 1) >= str.size()) - break; - } - return i == str.size(); -} - -// true = newer than local version, false = identical or older -BOOL IsRemoteVersionNewer(const std::string &localV, const std::string &remoteV) -{ - uint32_t iMax = static_cast(std::max(localV.size(), remoteV.size())); - std::string sl (iMax, '0'); - sl.replace(0, localV.size(), localV); - std::string sr (iMax, '0'); - sr.replace(0, remoteV.size(), remoteV); - - for (uint32_t i = 0; i < iMax; i++) - { - if (isdigit(sl[i]) && isdigit(sr[i])) - { - int ln = atoi(&sl[i]); - int rn = atoi(&sr[i]); - if (ln != rn) - return (rn > ln); - } - } - return FALSE; -} - -BOOL CheckUpdate(std::wstring &file, std::wstring &apppath, std::wstring &changelog) -{ - using namespace std; - - ifstream iwc(file, ifstream::in, ifstream::binary); - if (!iwc.is_open()) - return 1; - - iwc.seekg(0, iwc.end); - uint32_t length = static_cast(iwc.tellg()); - iwc.seekg(0, iwc.beg); - char *buffer = new char[length + 1]; - memset(buffer, '\0', length + 1); - iwc.read(buffer, length); - iwc.close(); - std::string str = buffer; - delete[] buffer; - FlipString(str); - std::vector strs; - bool up2date = TRUE; - if (ParseUpdateData(str, strs)) - { - for (uint32_t i = 0; (i + 1) < strs.size(); i++) - { - if ((strs[i]) == "changelog") - changelog = WidenStr(strs[i + 1]); - if ((strs[i]) == "path1") - apppath = WidenStr(strs[i + 1]); - if ((strs[i]) == "version") - up2date = !IsRemoteVersionNewer(NarrowStr(Version), strs[i + 1]); - } - } - SetFileAttributes(file.c_str(), FILE_ATTRIBUTE_NORMAL); - DeleteFile(file.c_str()); - - return (!up2date && !changelog.empty() && !apppath.empty()); -} - // We might have to read the registry to find out where steam installed My Summer Car std::wstring ReadRegistry(const HKEY root, const std::wstring key, const std::wstring name) { diff --git a/MSCeditor/version.h b/MSCeditor/version.h index 058dba6..4c7aafd 100644 --- a/MSCeditor/version.h +++ b/MSCeditor/version.h @@ -4,11 +4,13 @@ #define VERSION_MAJOR 1 #define VERSION_MINOR 12 +#define VERSION_REVISION 1 #define VER_FILE_DESCRIPTION_STR "My Summer Car Save Editor" -#define VER_FILE_VERSION VERSION_MAJOR, VERSION_MINOR +#define VER_FILE_VERSION VERSION_MAJOR, VERSION_MINOR, VERSION_REVISION #define VER_FILE_VERSION_STR STRINGIZE(VERSION_MAJOR) \ - "." STRINGIZE(VERSION_MINOR) + "." STRINGIZE(VERSION_MINOR) \ + "." STRINGIZE(VERSION_REVISION) #define VER_PRODUCTNAME_STR "MSCEditor" #define VER_PRODUCT_VERSION VER_FILE_VERSION