From 17d09f41be22cd698f6880d768fd46b8e557d25a Mon Sep 17 00:00:00 2001 From: Henrique Santiago Date: Wed, 30 Jan 2013 23:44:57 -0200 Subject: [PATCH] Rework UIMinimap --- data/images/game/minimap/flag0.png | Bin 0 -> 335 bytes data/images/game/minimap/flag1.png | Bin 0 -> 397 bytes data/images/game/minimap/flag10.png | Bin 0 -> 387 bytes data/images/game/minimap/flag11.png | Bin 0 -> 444 bytes data/images/game/minimap/flag12.png | Bin 0 -> 362 bytes data/images/game/minimap/flag13.png | Bin 0 -> 373 bytes data/images/game/minimap/flag14.png | Bin 0 -> 397 bytes data/images/game/minimap/flag15.png | Bin 0 -> 412 bytes data/images/game/minimap/flag16.png | Bin 0 -> 418 bytes data/images/game/minimap/flag17.png | Bin 0 -> 399 bytes data/images/game/minimap/flag18.png | Bin 0 -> 402 bytes data/images/game/minimap/flag19.png | Bin 0 -> 392 bytes data/images/game/minimap/flag2.png | Bin 0 -> 418 bytes data/images/game/minimap/flag3.png | Bin 0 -> 431 bytes data/images/game/minimap/flag4.png | Bin 0 -> 321 bytes data/images/game/minimap/flag5.png | Bin 0 -> 354 bytes data/images/game/minimap/flag6.png | Bin 0 -> 427 bytes data/images/game/minimap/flag7.png | Bin 0 -> 392 bytes data/images/game/minimap/flag8.png | Bin 0 -> 400 bytes data/images/game/minimap/flag9.png | Bin 0 -> 423 bytes data/images/game/minimap/mapflags.png | Bin 2836 -> 0 bytes data/styles/30-minimap.otui | 247 +++++++++++++++ modules/corelib/ui/uiradiogroup.lua | 6 +- modules/game_minimap/minimap.lua | 425 ++------------------------ modules/game_minimap/minimap.otui | 86 +----- modules/gamelib/const.lua | 3 + modules/gamelib/ui/uiminimap.lua | 280 +++++++++++++++++ src/client/tile.h | 2 - 28 files changed, 569 insertions(+), 480 deletions(-) create mode 100644 data/images/game/minimap/flag0.png create mode 100644 data/images/game/minimap/flag1.png create mode 100644 data/images/game/minimap/flag10.png create mode 100644 data/images/game/minimap/flag11.png create mode 100644 data/images/game/minimap/flag12.png create mode 100644 data/images/game/minimap/flag13.png create mode 100644 data/images/game/minimap/flag14.png create mode 100644 data/images/game/minimap/flag15.png create mode 100644 data/images/game/minimap/flag16.png create mode 100644 data/images/game/minimap/flag17.png create mode 100644 data/images/game/minimap/flag18.png create mode 100644 data/images/game/minimap/flag19.png create mode 100644 data/images/game/minimap/flag2.png create mode 100644 data/images/game/minimap/flag3.png create mode 100644 data/images/game/minimap/flag4.png create mode 100644 data/images/game/minimap/flag5.png create mode 100644 data/images/game/minimap/flag6.png create mode 100644 data/images/game/minimap/flag7.png create mode 100644 data/images/game/minimap/flag8.png create mode 100644 data/images/game/minimap/flag9.png delete mode 100644 data/images/game/minimap/mapflags.png create mode 100644 data/styles/30-minimap.otui create mode 100644 modules/gamelib/ui/uiminimap.lua diff --git a/data/images/game/minimap/flag0.png b/data/images/game/minimap/flag0.png new file mode 100644 index 0000000000000000000000000000000000000000..1b80e29dee31a5ac360956aa094cf8ef1d6b52fd GIT binary patch literal 335 zcmeAS@N?(olHy`uVBq!ia0vp^+#t-s1|(OmDOUqhY)RhkE)4%caKYZ?lYt_f1s;*b zKvlvZ%*Zfnjs#GUy~NYkmHjTGoEV=>?QbSOppa~4NJNQqer|4RUI~!Pz~Eeznpl#W zqEMb$lA+-4=^K!um&y(l-|Xq)7$R{wImLk~FU;+~!~a$ja5wjUky5Toi;FddME8h=^GhkZpBvjWph$*%$afKz<~oF=5wmeJhr<@ z@k0cE*P-jy^A|`kg#W2}F3c8KE-BJ#p1(gupE> UojW~lx`X`X>FVdQ&MBb@0O)6VasU7T literal 0 HcmV?d00001 diff --git a/data/images/game/minimap/flag1.png b/data/images/game/minimap/flag1.png new file mode 100644 index 0000000000000000000000000000000000000000..560bf79f17c707ed83ae8fec5be97938437e1817 GIT binary patch literal 397 zcmeAS@N?(olHy`uVBq!ia0vp^+#t-s1|(OmDOUqhY)RhkE)4%caKYZ?lYt_f1s;*b zKvlvZ%*Zfnjs#GUy~NYkmHjTGoEX3Gmw3H-Kq1-8kcblJ{M_8syb>Unfx)>bHL)Z$ zMWH;iBtya7(>EYRFO?lA{?XILF+}3>)QKCtjyQ<8p4VaA>Xp3njaXg7j##tUE?pg= zMAsSl2Ha)SX4!j8v={JMeel?Z8@X?SveY&HIjmB-x_Q=&C4&4sHZy+T+g+0>ym5c>@#)vsH6AEVsh-}E>s@ZKcWOnk;`{U8g(~_OB33_j za(cU&Pk-f|719as^L8jH)m156u`9jY#cDA3?8-YGYwg|~d3|^N)R#GSU;Y%<@*L=_ zXLES!cEmmZ$Mad+R<jFtDnm{r-UW|{k)#e literal 0 HcmV?d00001 diff --git a/data/images/game/minimap/flag10.png b/data/images/game/minimap/flag10.png new file mode 100644 index 0000000000000000000000000000000000000000..866d0790982e5c8f0382800230dc753bae55a0cb GIT binary patch literal 387 zcmeAS@N?(olHy`uVBq!ia0vp^+#t-s1|(OmDOUqhY)RhkE)4%caKYZ?lYt_f1s;*b zKvlvZ%*Zfnjs#GUy~NYkmHjTGoS2}wjO^D5Kq1-8kcblJ{M_8syb>Unfx)>bHL)Z$ zMWH;iBtya7(>EYRFO?lA{@l~WF+}2Wa*6{}UYOf|$qNV8B|n!)%n_3~eE;O9dcP&| zyQ0|q_`dy@{w|xIk^lrQVJp@wYg|-NR;AFqOGW%}m0N9F@9#e2O*kZEf^+Baog4Ogg*!<|aRRlJI~1g4{zJ(ynT; z0YTfpPbE86+Sk{l&)8HWd>G_<$%)EKObkU1Z_zw$Zn&Vuc%vZ)1H-Pc^A}!D)dPiv Mr>mdKI;Vst0RO|1u>b%7 literal 0 HcmV?d00001 diff --git a/data/images/game/minimap/flag11.png b/data/images/game/minimap/flag11.png new file mode 100644 index 0000000000000000000000000000000000000000..3c986331ce36ae65bbc0bab291f4e1177496e231 GIT binary patch literal 444 zcmeAS@N?(olHy`uVBq!ia0vp^+#t-s1|(OmDOUqhY)RhkE)4%caKYZ?lYt_f1s;*b zKvlvZ%*Zfnjs#GUy~NYkmHjTGoR|<_hN)gOP)Ig2B%;JQKQ}iuuLQ_tU~n!mw6eXj*yG6a<*n%R18oRF-(zj51^uE$j#o6a~txAdFHro6cI^knBvTYkR${;^ph z^Ih4zM~*9N_zv)Lr(_1Nyq08}_c)=PTXiYZhZ}D{zWg1s%Jg1*b&sDx)wxfI_mFArU3c`MJ5Nc_lzD1A}u>YGO%h zib8p2Nrr;Er*A-tUMf3K{G6wYV~E7%&JZ7yMETz zd2R3S*BjUT`qFjqKzRGZLuqVn{`2z<4$N)j;gkJ!s^Hfb{kGZWtP*v9f1OQuu=;Sr zLq~~-%lF$4^{?wV5c22OPvIR47A{nrv$yh-TT4>LhCljUpOSw3>6SivW%u?xgFkhlwF{eVD%dM#plHmpxtmT-G@yGywpid5y^c literal 0 HcmV?d00001 diff --git a/data/images/game/minimap/flag13.png b/data/images/game/minimap/flag13.png new file mode 100644 index 0000000000000000000000000000000000000000..7cba49e0d9abeee181d368c488a52ddb76f81246 GIT binary patch literal 373 zcmeAS@N?(olHy`uVBq!ia0vp^+#t-s1|(OmDOUqhY)RhkE)4%caKYZ?lYt_f1s;*b zKvlvZ%*Zfnjs#GUy~NYkmHjTGoS2a6kUnfx)>bHL)Z$ zMWH;iBtya7(>EYRFO?lAe$&&%F+}2Wa*6{}UYOf|$qNV8B|n!)%n?gzJzLqy6LFw^ z1{;vQXp#}n-MJGBLYF>0ExCZr!DL6IQ=imFZ)GzZ}8yg!PLxR}yq&A&2V3^##yVA*@#rdvJ9b4kbaGu-GHyEur`9Ez( z`ON7HcNzhH;)9F_}{Z1UN>iBb91|LAo0+%zbAOu)-(u;Ng3bD z-ni>JQ1!z6n`UjX$IlrWDYX{|P7!ZQn&GtLxTUlj-^#vt)hH#z zY;i_H!Dgdh_3t12`hQVw+5g41KL6QgXdn8xxB2z|!#OD~<{P)|?RD&%Kl9fl?RS+lfw{!9Kd{!qBl$fN6nu>la=*;O;G5d>Io&idxrE%_y6 zDNu!x@t(TxGar6`zhC2Af(xHniMbI_ZORch<1f0mk8OB;!_sX^fnL|ALjgR&9YUH% ajwmqP&5l2AY2=&?3KdURKbLh*2~7Zc#F`)g literal 0 HcmV?d00001 diff --git a/data/images/game/minimap/flag15.png b/data/images/game/minimap/flag15.png new file mode 100644 index 0000000000000000000000000000000000000000..63ce6bf32e850621d51256fbab0071f5932171f0 GIT binary patch literal 412 zcmeAS@N?(olHy`uVBq!ia0vp^+#t-s1|(OmDOUqhY)RhkE)4%caKYZ?lYt_f1s;*b zKvlvZ%*Zfnjs#GUy~NYkmHjTGoS2Zgxxunvppa~4NJNQqer|4RUI~!Pz~Eeznpl#W zqEMb$lA+-4=^K!um&(q-z{ud~;us=vIXT6FDKE_JzvP7j>yn>KB<5HgzJKyleSNLu zuBf&{$Mo8IfA<+185kIBP|$u8vw_pu@JPeD|I*)O(^CpI8~v((|KQjEmz|ye^Y8BZ z`u|w3^#A!bm7o3}YUTd_{msqK_DUKr{_kym{eO3);Em#Xqz1~@4@j4QSs*$6crB^{Qs8Q zmM?E_v?gZH3`OHRyrCcOMw>ris{i*VQQ*n*^n`@eqaSpXbxf>I6-(Z*w2)k-rq|}3 x*0$TQgY$!7NQqzCjUDeTlszAw@$lkdVqkrgy@~e|7bqMVJYD@<);T3K0RSiCq(T4y literal 0 HcmV?d00001 diff --git a/data/images/game/minimap/flag16.png b/data/images/game/minimap/flag16.png new file mode 100644 index 0000000000000000000000000000000000000000..1ffb377c5286a77528fc6609f4f45d2ef340ba15 GIT binary patch literal 418 zcmeAS@N?(olHy`uVBq!ia0vp^+#t-s1|(OmDOUqhY)RhkE)4%caKYZ?lYt_f1s;*b zKvlvZ%*Zfnjs#GUy~NYkmHjTGoR}~>$EW4{fI_mFArU3c`MJ5Nc_lzD1A}u>YGO%h zib8p2Nrr;Er*A-tUMf2S10$QKi(`ny<=%;Vy_g+ETK97{N#9S97IX;=&b10=J9(&S zS&+e!3+E2G9oZ1pd4nbRiD=Urv6o?r5BN2GpNGs2|G;^~p(%Oenbh9i z(N#fOv$`MGhFv$;;JL*xW4)x-e6!vd`SYJGcJ5J2U#%;#)9(Ic&55tMGgLR^M*puk zRO7d@H#zI^kL&-7Z#oOLs5o}aJhS8eDy9vU*B|*yF=Wpz{>Z*wkm2v#U3WaC?xr!X zE#~6@vd$@? F2>_!)r9c1x literal 0 HcmV?d00001 diff --git a/data/images/game/minimap/flag17.png b/data/images/game/minimap/flag17.png new file mode 100644 index 0000000000000000000000000000000000000000..fc9d6920c228c9450d56aef3bbdda82ccd1c98ac GIT binary patch literal 399 zcmeAS@N?(olHy`uVBq!ia0vp^+#t-s1|(OmDOUqhY)RhkE)4%caKYZ?lYt_f1s;*b zKvlvZ%*Zfnjs#GUy~NYkmHjTGoS3jss=jk5P)Ig2B%;JQKQ}iuuLQ_tU~n!e>S!vO-v?e&-WUOIc!^Gp2;rI!*L9!z>L z~BcEpL|s`i&kayC15zwftxr&)Kj#_Xz$ zYpD6DC)+$19k}i(BUk(}#@&AJo~{Os4`0(JzI?mt0>AK+-0;?WI!3ar``9)--@MZA zk-+hu4{BPG5nC*D;r=nPUUHV_naQ5)3a#yy7 zh&%S;3^gn39%TJ;`uC?oJi#`rax?!L_q77Nd7-6?FYQ^9{aq=duiWX)E!)hvpsT$> k^>;1LdY_qlwZ85H`{o~MdK*s6-U|vBPgg&ebxsLQ0P4=4mH+?% literal 0 HcmV?d00001 diff --git a/data/images/game/minimap/flag18.png b/data/images/game/minimap/flag18.png new file mode 100644 index 0000000000000000000000000000000000000000..4000460b6911f20685b4a84753e1b1629496c867 GIT binary patch literal 402 zcmeAS@N?(olHy`uVBq!ia0vp^+#t-s1|(OmDOUqhY)RhkE)4%caKYZ?lYt_f1s;*b zKvlvZ%*Zfnjs#GUy~NYkmHjTGoS3j&&P@I~ppa~4NJNQqer|4RUI~!Pz~Eeznpl#W zqEMb$lA+-4=^K!um&y(l|K{o97$R|b>cov+hXW*9_e%#AD=Y2jmSrh@r}Q>r!vs~; zWV7vhFYkoEU`{#7J;Tt%ThZyb$n-Nx78>uGnmwalmU?B(a5yRQGfj};bELR~Zdmrhem2{u zJIk2wOjq=^xvr+~wUl{Id`b3)GHuJyDCH7)Ta$b~o%Y>l4X@kFGMp<@ugS8O>))3t zI!8yD>GVTy4~BVGuB+GZefaqA*wd@NvMUZvjfaGgZ3SS2@;Mz@T8kLM+y lj{Rld4$sI+|2UujA5-O(h^k`Oq|Kn9@pScbS?83{1OO~Gk6Qo$ literal 0 HcmV?d00001 diff --git a/data/images/game/minimap/flag19.png b/data/images/game/minimap/flag19.png new file mode 100644 index 0000000000000000000000000000000000000000..8f46613acf2670bfb702b62865f56e49836b8747 GIT binary patch literal 392 zcmeAS@N?(olHy`uVBq!ia0vp^+#t-s1|(OmDOUqhY)RhkE)4%caKYZ?lYt_f1s;*b zKvlvZ%*Zfnjs#GUy~NYkmHjTGoS3l2V&z%SfkLvGArU3c`MJ5Nc_lzD1A}u>YGO%h zib8p2Nrr;Er*A-tUMf3K{EerJV~E7%sT22h9dZzHJMZD3yJp&2)ZOIWH^9Wvp526!-9>8>2$ee#RA+qISRDKVNAny6!tGgQn`{a}&;fI#Rfn!D5~0 z?5CZP=^ax(Dan7c&e>fTY_KTzy5*bl`l2~Y4)H4$O}#79Gh;Q6eMiUSkdE;3Z_OOV e=^y9w|6|&mo#eRjoVW=nKs;UjT-G@yGywoAewQ2o literal 0 HcmV?d00001 diff --git a/data/images/game/minimap/flag2.png b/data/images/game/minimap/flag2.png new file mode 100644 index 0000000000000000000000000000000000000000..226eb55f38541a0625f4c2331568aec140e6daa3 GIT binary patch literal 418 zcmeAS@N?(olHy`uVBq!ia0vp^+#t-s1|(OmDOUqhY)RhkE)4%caKYZ?lYt_f1s;*b zKvlvZ%*Zfnjs#GUy~NYkmHjTGoEX3Ir8YSuppa~4NJNQqer|4RUI~!Pz~Eeznpl#W zqEMb$lA+-4=^K!um&(q-z{uw5;us=vdFsTC-iHGOj@9d@3BFR|)4Sw)Nzd`cZ7a)C zjYlei&-wg*GPgMWXFa%XrmG;AQjk?-d!A-Spx4VwD>+14yo@>KdB;_pedc?-_I_>o z{key_qP8kMS!6DuHF>w$#&zE<_wITsIitO?@kri+u(clB?@lqFaNo_@O~G7YdZNPJ zvfwi=*EOp4r3rg1>acxaEBdL%H`brw2&09aCG!Jo)in)AZry&+mz%cu{zKLZ)_sQ> z9-X^3E7JUZ-S+zrAHQr=Dk!Mf(q_ryn>KTs$iAXRglw`1?EG z{Qo-l^uKzq(3Z`A=juFUGdL(xHs!g|hT;M+HUI*f$}bZd=QdAXxY%YoN&;1t)iJ&oh`Yf7Vff>hPw- z$NL`l`0xOM^mp0xp1smdKI;Vst E0HY16Hvj+t literal 0 HcmV?d00001 diff --git a/data/images/game/minimap/flag4.png b/data/images/game/minimap/flag4.png new file mode 100644 index 0000000000000000000000000000000000000000..3f53f9d3cb1a69b810c97170a66e242f4371082c GIT binary patch literal 321 zcmeAS@N?(olHy`uVBq!ia0vp^+#t-s1|(OmDOUqhY)RhkE)4%caKYZ?lYt_f1s;*b zKvlvZ%*Zfnjs#GUy~NYkmHjTGoR|Q&R_2Z{ppa~4NJNQqer|4RUI~!Pz~Eeznpl#W zqEMb$lA+-4=^K!um&y(lU+U@N7$R{wImLk~FU;+~m4A?8p7Hyz3G{BJ4ao8d5V7md(zY zaeTwCFPUtczrU9}$D(35V{iTW0h9b(dIW{w{ zPAXaL&&hS@sN{vi(`Q^rP!TzI_jCAR<+h1aBv=?;3e+y`T~ite@`!~a$p4YE~CFSPaIsIX3@Qj0(u1$0d_M7wY>Fw{lk7*>~`QZHHs@d4a2E?f)AIuoN84{Tya&00dKx zIOlBm%zJ39L?W}&mp@KQk`h4h?%poOKptMP9qRS}oq1pF-kxVraz6g-hSxVN-Q1iW i@&toyJmBHQ!^H5a(C=M*()9w6S3O<*T-G@yGywo8O@(X# literal 0 HcmV?d00001 diff --git a/data/images/game/minimap/flag6.png b/data/images/game/minimap/flag6.png new file mode 100644 index 0000000000000000000000000000000000000000..8b713100e06f89643f5925dd53a69a557fece625 GIT binary patch literal 427 zcmeAS@N?(olHy`uVBq!ia0vp^+#t-s1|(OmDOUqhY)RhkE)4%caKYZ?lYt_f1s;*b zKvlvZ%*Zfnjs#GUy~NYkmHjTGoS1-0|yWcjgFc56!Xj-oJu}x`v zf`A@}*y7VoVYeIE3_FghBt_45wJ_j`5lGwdjJ27~(SV1y>BI!zCx3MA6>itw_vO(0 zTK;>>Jx*-YUFh#?A22c8^TV5h_489t+j_7TNz{oI4qBvQ@HV z_D>CBe0pQrl)nw(vFhe_XI}m-zO%#5$YtZ@!y-Gj>J~A~*6qJ&u;kyTbB_+$Og$x3 zyg4|gv}%pU(N8D!7@|s++FBea-G2J^U1q5S4Gl@wzAm=O^*%iBt4*`AL+$E6wZz}g zaAS-;AH2?L$+GUW-Fqy~`(!?MuugBIb7cUF8FVMNFmm_r~r2g4|$-grN|8!~an519a zGS}e8p@yF&i$3dEUVo(Rzy6wZ;?d79UG&BKD^9U5=n0maH=iLw&yAsK>pc$1*2Z(2 zj|iT#Td(n0gu(yklSn5KwkW1M_j=b9)P&rr=arD3nrpDfJFTdxX%wKPverval<<5txm&+Ed$hyt@q3CDg$A$NULri^dbAG%&w|mvG dJCT2$H{V}d7V2Ij<~a=%AfB#%F6*2UngDoHnC$=n literal 0 HcmV?d00001 diff --git a/data/images/game/minimap/flag8.png b/data/images/game/minimap/flag8.png new file mode 100644 index 0000000000000000000000000000000000000000..da226e15f355d199d4d5ac54519781e6b9d2568b GIT binary patch literal 400 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 mvNG{wvxU7cdELj}5%xcLc%Ppp@m>%B0000= 0 and icon <= 19) or not pos then - return - end - - version = version or g_game.getProtocolVersion() - -- Check if flag is set for that position - for i = 1, flagsPanel:getChildCount() do - local flag = flagsPanel:getChildByIndex(i) - if flag.position.x == pos.x and flag.position.y == pos.y and flag.position.z == pos.z - and version == flag.version then - return - end - end - - if not flagId then - flagId = nextFlagId - nextFlagId = nextFlagId + 1 - end - - local flagWidget = g_ui.createWidget('FlagWidget', flagsPanel) - flagWidget:setIconClip(getFlagIconClip(icon)) - flagWidget:setId('flag' .. flagId) - flagWidget.position = pos - flagWidget.icon = icon - flagWidget.description = message - if message and message:len() > 0 then - flagWidget:setTooltip(message) - end - flagWidget.id = flagId - flagWidget.version = version - updateMapFlag(flagId) - flagWidget.onMousePress = onFlagMousePress -end - -function removeMapFlag(pos, icon, message) - for i=1, flagsPanel:getChildCount() do - local flag = flagsPanel:getChildByIndex(i) - if flag.position.x == pos.x and flag.position.y == pos.y and flag.position.z == pos.z and flag.icon == icon and flag.description == message then - flag:destroy() - break - end - end -end - -function getMapArea() - return minimapWidget:getPosition( { x = 1 + minimapWidget:getX(), y = 1 + minimapWidget:getY() } ), - minimapWidget:getPosition( { x = -2 + minimapWidget:getWidth() + minimapWidget:getX(), y = -2 + minimapWidget:getHeight() + minimapWidget:getY() } ) -end - -function isFlagVisible(flag, firstPosition, lastPosition) - return flag.version == g_game.getProtocolVersion() and (minimapWidget:getZoom() >= -2 and minimapWidget:getZoom() <= 4) and flag.position.x >= firstPosition.x and flag.position.x <= lastPosition.x and flag.position.y >= firstPosition.y and flag.position.y <= lastPosition.y and flag.position.z == firstPosition.z -end - -function updateMapFlag(id) - local firstPosition, lastPosition = getMapArea() - if not firstPosition or not lastPosition then - return - end - - local flag = flagsPanel:getChildById('flag' .. id) - if isFlagVisible(flag, firstPosition, lastPosition) then - flag:setVisible(true) - flag:setMarginLeft(-5.5 + (minimapWidget:getWidth() / (lastPosition.x - firstPosition.x)) * (flag.position.x - firstPosition.x)) - flag:setMarginTop(-5.5 + (minimapWidget:getHeight() / (lastPosition.y - firstPosition.y)) * (flag.position.y - firstPosition.y)) +function toggle() + if minimapButton:isOn() then + minimapWindow:close() + minimapButton:setOn(false) else - flag:setVisible(false) + minimapWindow:open() + minimapButton:setOn(true) end end -function updateMapFlags() - local firstPosition, lastPosition = getMapArea() - if not firstPosition or not lastPosition then - return - end - - for i=1, flagsPanel:getChildCount() do - local flag = flagsPanel:getChildByIndex(i) - if isFlagVisible(flag, firstPosition, lastPosition) then - flag:setVisible(true) - flag:setMarginLeft(-5.5 + (minimapWidget:getWidth() / (lastPosition.x - firstPosition.x)) * (flag.position.x - firstPosition.x)) - flag:setMarginTop(-5.5 + (minimapWidget:getHeight() / (lastPosition.y - firstPosition.y)) * (flag.position.y - firstPosition.y)) - else - flag:setVisible(false) - end - end +function onMiniWindowClose() + minimapButton:setOn(false) end function online() - reset() loadMap() - - updateMapFlags() + minimapWidget:followLocalPlayer() end function offline() @@ -292,11 +91,11 @@ function loadMap() g_map.loadOtcm(minimapFile) end end + minimapWidget:load() end function saveMap() local protocolVersion = g_game.getProtocolVersion() - if otmm then local minimapFile = '/minimap.otmm' g_minimap.saveOtmm(minimapFile) @@ -304,163 +103,5 @@ function saveMap() local minimapFile = '/minimap_' .. protocolVersion .. '.otcm' g_map.saveOtcm(minimapFile) end -end - -function toggle() - if minimapButton:isOn() then - minimapWindow:close() - minimapButton:setOn(false) - else - minimapWindow:open() - minimapButton:setOn(true) - end -end - -function useOTMM() - otmm = true -end - -function isClickInRange(position, fromPosition, toPosition) - return (position.x >= fromPosition.x and position.y >= fromPosition.y and position.x <= toPosition.x and position.y <= toPosition.y) -end - -function reset(zoom) - if zoom == nil then zoom = true end - local player = g_game.getLocalPlayer() - if not player then return end - minimapWidget:followCreature(player) - if zoom then - minimapWidget:setZoom(DEFAULT_ZOOM) - end -end - -function center() - reset(false) - updateMapFlags() -end - -function compassClick(self, mousePos, mouseButton, elapsed) - if elapsed < 300 then return end - - navigating = true - local px = mousePos.x - self:getX() - local py = mousePos.y - self:getY() - local dx = px - self:getWidth()/2 - local dy = -(py - self:getHeight()/2) - local radius = math.sqrt(dx*dx+dy*dy) - local movex = 0 - local movey = 0 - dx = dx/radius - dy = dy/radius - - local speed = math.ceil((1.0 / minimapWidget:getScale()) * 3) - if dx > 0.5 then movex = speed end - if dx < -0.5 then movex = -speed end - if dy > 0.5 then movey = -speed end - if dy < -0.5 then movey = speed end - - local cameraPos = minimapWidget:getCameraPosition() - local pos = {x = cameraPos.x + movex, y = cameraPos.y + movey, z = cameraPos.z} - minimapWidget:setCameraPosition(pos) - - updateMapFlags() -end - -function move(x,y) - local speed = math.ceil((1.0 / minimapWidget:getScale()) * 3) - local cameraPos = minimapWidget:getCameraPosition() - local pos = {x = cameraPos.x + x*speed, y = cameraPos.y + y*speed, z = cameraPos.z} - minimapWidget:setCameraPosition(pos) - updateMapFlags() -end - -function miniMapZoomIn() - minimapWidget:zoomIn() -end - -function miniMapZoomOut() - minimapWidget:zoomOut() -end - -function minimapFloorUp(floors) - local pos = minimapWidget:getCameraPosition() - pos.z = pos.z - floors - if pos.z > MAX_FLOOR_UP then - minimapWidget:setCameraPosition(pos) - end -end - -function minimapFloorDown(floors) - local pos = minimapWidget:getCameraPosition() - pos.z = pos.z + floors - if pos.z < MAX_FLOOR_DOWN then - minimapWidget:setCameraPosition(pos) - end -end - -function minimapAutoWalk(pos) - local player = g_game.getLocalPlayer() - if not player:autoWalk(pos) then - player.onAutoWalkFail = function() modules.game_textmessage.displayFailureMessage(tr('There is no way.')) end - return false - else - return true - end -end - -function onButtonClick(id) - if id == "zoomIn" then - miniMapZoomIn() - elseif id == "zoomOut" then - miniMapZoomOut() - elseif id == "floorUp" then - minimapFloorUp(1) - elseif id == "floorDown" then - minimapFloorDown(1) - end - - updateMapFlags() -end - -function onMinimapMouseRelease(self, mousePosition, mouseButton) - -- Mapmark menu - local pos = self:getPosition(mousePosition) - if mouseButton == MouseRightButton then - local menu = g_ui.createWidget('PopupMenu') - menu:addOption(tr('Create mark'), function() - local pos = self:getPosition(mousePosition) - if pos then - showFlagDialog(pos) - end - end) - menu:display(mousePosition) - end - - if navigating then - navigating = false - return - end - if pos and mouseButton == MouseLeftButton and self:isPressed() then - minimapAutoWalk(pos) - end - return false -end - -function onMinimapMouseWheel(self, mousePos, direction) - local keyboardModifiers = g_keyboard.getModifiers() - - if direction == MouseWheelUp and keyboardModifiers == KeyboardNoModifier then - miniMapZoomIn() - elseif direction == MouseWheelDown and keyboardModifiers == KeyboardNoModifier then - miniMapZoomOut() - elseif direction == MouseWheelDown and keyboardModifiers == KeyboardCtrlModifier then - minimapFloorUp(1) - elseif direction == MouseWheelUp and keyboardModifiers == KeyboardCtrlModifier then - minimapFloorDown(1) - end - updateMapFlags() -end - -function onMiniWindowClose() - minimapButton:setOn(false) + minimapWidget:save() end diff --git a/modules/game_minimap/minimap.otui b/modules/game_minimap/minimap.otui index bf79d07e..84c72127 100644 --- a/modules/game_minimap/minimap.otui +++ b/modules/game_minimap/minimap.otui @@ -1,39 +1,9 @@ -MapControl < Button - size: 20 20 - icon-clip: 0 32 16 16 - - $pressed: - icon-clip: 0 0 16 16 - - $hover !pressed: - icon-clip: 0 16 16 16 - -FlagWidget < UIWidget - size: 11 11 - icon-clip: 0 0 11 11 - icon-source: /images/game/minimap/mapflags - anchors.left: parent.left - anchors.top: parent.top - -FloorUpControl < MapControl - icon-source: /images/game/minimap/floor_up - -FloorDownControl < MapControl - icon-source: /images/game/minimap/floor_down - -ZoomInControl < MapControl - //image-source: /images/game/minimap/zoom_in - -ZoomOutControl < MapControl - //image-source: /images/game/minimap/zoom_out - MiniWindow id: minimapWindow !text: tr('Minimap') height: 150 icon: /images/topbuttons/minimap @onClose: modules.game_minimap.onMiniWindowClose() - @onGeometryChange: updateMapFlags() &save: true Label @@ -47,60 +17,6 @@ MiniWindow size: 14 14 MiniWindowContents - UIMinimap + Minimap id: minimap anchors.fill: parent - cross: true - - Panel - id: flagsPanel - anchors.fill: minimap - phantom: true - - FloorUpControl - id: floorUp - anchors.right: parent.right - anchors.bottom: parent.bottom - margin-right: 28 - margin-bottom: 28 - enabled: true - @onClick: onButtonClick(self:getId()) - - FloorDownControl - id: floorDown - anchors.right: parent.right - anchors.bottom: parent.bottom - margin-right: 28 - margin-bottom: 4 - enabled: true - @onClick: onButtonClick(self:getId()) - - ZoomInControl - id: zoomIn - text: + - font: terminus-14px-bold - anchors.right: parent.right - anchors.bottom: parent.bottom - margin-right: 4 - margin-bottom: 28 - enabled: true - @onClick: onButtonClick(self:getId()) - - ZoomOutControl - id: zoomOut - text: - - anchors.right: parent.right - anchors.bottom: parent.bottom - margin-right: 4 - margin-bottom: 4 - enabled: true - @onClick: onButtonClick(self:getId()) - - Button - id: reset - !text: tr('Center') - width: 44 - anchors.left: parent.left - anchors.top: parent.top - margin: 4 - @onClick: center() diff --git a/modules/gamelib/const.lua b/modules/gamelib/const.lua index fe536645..1ef13d32 100644 --- a/modules/gamelib/const.lua +++ b/modules/gamelib/const.lua @@ -1,5 +1,8 @@ -- @docconsts @{ +FloorHigher = 0 +FloorLower = 15 + SkullNone = 0 SkullYellow = 1 SkullGreen = 2 diff --git a/modules/gamelib/ui/uiminimap.lua b/modules/gamelib/ui/uiminimap.lua new file mode 100644 index 00000000..e0bfffa9 --- /dev/null +++ b/modules/gamelib/ui/uiminimap.lua @@ -0,0 +1,280 @@ +function UIMinimap:onSetup() + self.flagWindow = nil + self.flagsWidget = self:getChildById('flags') + self.floorUpWidget = self:getChildById('floorUp') + self.floorDownWidget = self:getChildById('floorDown') + self.zoomInWidget = self:getChildById('zoomIn') + self.zoomOutWidget = self:getChildById('zoomOut') + self.dx = 0 + self.dy = 0 + self.onPositionChange = function() self:followLocalPlayer() end + self.onAddAutomapFlag = function(pos, icon, description) self:addFlag(pos, icon, description) end + self.onRemoveAutomapFlag = function(pos, icon, description) self:addFlag(pos, icon, description) end + connect(g_game, { + onAddAutomapFlag = self.onAddAutomapFlag, + onRemoveAutomapFlag = self.onRemoveAutomapFlag, + }) + connect(LocalPlayer, { onPositionChange = self.onPositionChange }) +end + +function UIMinimap:onDestroy() + disconnect(LocalPlayer, { onPositionChange = self.onPositionChange }) + disconnect(g_game, { + onAddAutomapFlag = self.onAddAutomapFlag, + onRemoveAutomapFlag = self.onRemoveAutomapFlag, + }) + self:destroyFlagWindow() +end + +function UIMinimap:load() + local settings = g_settings.getNode('Minimap') + if settings then + if settings.flags then + for i=1,#settings.flags do + local flag = settings.flags[i] + self:addFlag(flag.position, flag.icon, flag.description) + end + end + self:setZoom(settings.zoom) + end + self:updateFlags() +end + +function UIMinimap:save() + local settings = { flags={} } + local children = self.flagsWidget:getChildren() + for i=1,#children do + local flag = children[i] + table.insert(settings.flags, { + position = flag.pos, + icon = flag.icon, + description = flag.description, + }) + end + settings.zoom = self:getZoom() + g_settings.setNode('Minimap', settings) +end + +function UIMinimap:addFlag(pos, icon, description) + local flag = self:getFlag(pos, icon, description) + if flag then + return + end + + flag = g_ui.createWidget('MinimapFlag', self.flagsWidget) + flag.pos = pos + flag.icon = icon + flag.description = description + flag:setIcon('/images/game/minimap/flag' .. icon) + flag:setTooltip(description) + flag.onMouseRelease = function(widget, pos, button) + if button == MouseRightButton then + local menu = g_ui.createWidget('PopupMenu') + menu:addOption(tr('Delete mark'), function() widget:destroy() end) + menu:display(pos) + return true + end + return false + end + + self:updateFlag(flag) +end + +function UIMinimap:getFlag(pos, icon, description) + local children = self.flagsWidget:getChildren() + for i=1,#children do + local flag = children[i] + if flag.pos.x == pos.x and flag.pos.y == pos.y and flag.pos.z == pos.z and flag.icon == icon and flag.description == description then + return flag + end + end +end + +function UIMinimap:removeFlag(pos, icon, description) + local flag = self:getFlag(pos, icon, description) + if flag then + flag:destroy() + end +end + +function UIMinimap:updateFlag(flag) + local topLeft, bottomRight = self:getArea() + if self:isFlagVisible(flag, topLeft, bottomRight) then + flag:setVisible(true) + flag:setMarginLeft(-5.5 + (self:getWidth() / (bottomRight.x - topLeft.x)) * (flag.pos.x - topLeft.x)) + flag:setMarginTop(-5.5 + (self:getHeight() / (bottomRight.y - topLeft.y)) * (flag.pos.y - topLeft.y)) + else + flag:setVisible(false) + end +end + +function UIMinimap:updateFlags() + local children = self.flagsWidget:getChildren() + for i=1,#children do + self:updateFlag(children[i]) + end +end + +UIMinimap.realZoomIn = UIMinimap.zoomIn +function UIMinimap:zoomIn() + self:realZoomIn() + self:updateFlags() +end + +UIMinimap.realZoomOut = UIMinimap.zoomOut +function UIMinimap:zoomOut() + self:realZoomOut() + self:updateFlags() +end + +function UIMinimap:floorUp(floors) + local pos = self:getCameraPosition() + pos.z = pos.z - floors + if pos.z >= FloorHigher then + self:setCameraPosition(pos) + end + self:updateFlags() +end + +function UIMinimap:floorDown(floors) + local pos = self:getCameraPosition() + pos.z = pos.z + floors + if pos.z <= FloorLower then + self:setCameraPosition(pos) + end + self:updateFlags() +end + +function UIMinimap:followLocalPlayer() + local player = g_game.getLocalPlayer() + self:followCreature(player) + self:updateFlags() +end + +function UIMinimap:reset() + self:followLocalPlayer() + self:setZoom(0) +end + +function UIMinimap:move(x, y) + local topLeft, bottomRight = self:getArea() + self.dx = self.dx + ((bottomRight.x - topLeft.x) / self:getWidth() ) * x + self.dy = self.dy + ((bottomRight.y - topLeft.y) / self:getHeight()) * y + local dx = math.floor(self.dx) + local dy = math.floor(self.dy) + self.dx = self.dx - dx + self.dy = self.dy - dy + + local cameraPos = self:getCameraPosition() + local pos = {x = cameraPos.x - dx, y = cameraPos.y - dy, z = cameraPos.z} + self:setCameraPosition(pos) + self:updateFlags() +end + +function UIMinimap:onMouseWheel(mousePos, direction) + local keyboardModifiers = g_keyboard.getModifiers() + if direction == MouseWheelUp and keyboardModifiers == KeyboardNoModifier then + self:zoomIn() + elseif direction == MouseWheelDown and keyboardModifiers == KeyboardNoModifier then + self:zoomOut() + elseif direction == MouseWheelDown and keyboardModifiers == KeyboardCtrlModifier then + self:floorUp(1) + elseif direction == MouseWheelUp and keyboardModifiers == KeyboardCtrlModifier then + self:floorDown(1) + end + self:updateFlags() +end + +function UIMinimap:onMousePress(pos, button) + if not self:isDragging() then + self.allowNextRelease = true + end +end + +function UIMinimap:onMouseRelease(pos, button) + -- TODO: + --if not self.allowNextRelease then return true end + self.allowNextRelease = false + + local mapPos = self:getPosition(pos) + if not mapPos then return end + + if button == MouseLeftButton then + local player = g_game.getLocalPlayer() + if not player:autoWalk(mapPos) then + player.onAutoWalkFail = function() modules.game_textmessage.displayFailureMessage(tr('There is no way.')) end + end + return true + elseif button == MouseRightButton then + local menu = g_ui.createWidget('PopupMenu') + menu:addOption(tr('Create mark'), function() + self:createFlagWindow(mapPos) + end) + menu:display(pos) + return true + end + return false +end + +function UIMinimap:onDragEnter(pos) + return true +end + +function UIMinimap:onDragMove(pos, moved) + self:move(moved.x, moved.y) + return true +end + +function UIMinimap:onDragLeave(widget, pos) + return true +end + +function UIMinimap:createFlagWindow(pos) + if self.flagWindow then return end + if not pos then return end + + self.flagWindow = g_ui.createWidget('MinimapFlagWindow', rootWidget) + + local positionLabel = self.flagWindow:getChildById('position') + local description = self.flagWindow:getChildById('description') + local okButton = self.flagWindow:getChildById('okButton') + local cancelButton = self.flagWindow:getChildById('cancelButton') + + positionLabel:setText(string.format('%i, %i, %i', pos.x, pos.y, pos.z)) + + local flagRadioGroup = UIRadioGroup.create() + for i=0,19 do + local checkbox = self.flagWindow:getChildById('flag' .. i) + checkbox.icon = i + flagRadioGroup:addWidget(checkbox) + end + + flagRadioGroup:selectWidget(flagRadioGroup:getFirstWidget()) + + okButton.onClick = function() + self:addFlag(pos, flagRadioGroup:getSelectedWidget().icon, description:getText()) + self:destroyFlagWindow() + end + cancelButton.onClick = function() + self:destroyFlagWindow() + end + + self.flagWindow.onDestroy = function() flagRadioGroup:destroy() end +end + +function UIMinimap:destroyFlagWindow() + if self.flagWindow then + self.flagWindow:destroy() + self.flagWindow = nil + end +end + +function UIMinimap:getArea() + local topLeft = self:getPosition({ x = self:getX() + 1, y = self:getY() + 1 }) + local bottomRight = self:getPosition({ x = self:getX() + self:getWidth() - 2, y = self:getY() + self:getHeight() - 2 }) + return topLeft, bottomRight +end + +function UIMinimap:isFlagVisible(flag, topLeft, bottomRight) + return flag.pos.x >= topLeft.x and flag.pos.x <= bottomRight.x and flag.pos.y >= topLeft.y and flag.pos.y <= bottomRight.y and flag.pos.z == topLeft.z +end diff --git a/src/client/tile.h b/src/client/tile.h index e193144c..3eda5ad2 100644 --- a/src/client/tile.h +++ b/src/client/tile.h @@ -51,7 +51,6 @@ enum tileflags_t TILESTATE_TRANSLUECENT_LIGHT = 1 << 23 }; -#pragma pack(push,1) // disable memory alignment class Tile : public LuaObject { public: @@ -131,6 +130,5 @@ private: uint8 m_minimapColor; uint32 m_flags, m_houseId; }; -#pragma pack(pop) #endif