From ee3f07c6cd81e7337b5793c0e803af4efdb1a9cd Mon Sep 17 00:00:00 2001 From: Mike Primm Date: Thu, 21 Jul 2011 02:50:29 -0500 Subject: [PATCH] Add support for compass rose in all 8 cardinal directions --- src/main/java/org/dynmap/DynmapPlugin.java | 23 +++++------ src/main/java/org/dynmap/flat/FlatMap.java | 1 + .../org/dynmap/hdmap/IsoHDPerspective.java | 4 ++ .../dynmap/kzedmap/DefaultTileRenderer.java | 1 + web/css/dynmap_style.css | 36 +++++++++++++++--- web/images/compass.png | Bin 5585 -> 5203 bytes web/images/compass_E.png | Bin 0 -> 4323 bytes web/images/compass_N.png | Bin 0 -> 4187 bytes web/images/compass_NE.png | Bin 0 -> 5585 bytes web/images/compass_NW.png | Bin 0 -> 5133 bytes web/images/compass_SW.png | Bin 0 -> 5183 bytes web/images/compass_W.png | Bin 0 -> 4205 bytes web/js/map.js | 3 +- 13 files changed, 51 insertions(+), 17 deletions(-) create mode 100644 web/images/compass_E.png create mode 100644 web/images/compass_N.png create mode 100644 web/images/compass_NE.png create mode 100644 web/images/compass_NW.png create mode 100644 web/images/compass_SW.png create mode 100644 web/images/compass_W.png diff --git a/src/main/java/org/dynmap/DynmapPlugin.java b/src/main/java/org/dynmap/DynmapPlugin.java index 023ffcd9..d589e66b 100644 --- a/src/main/java/org/dynmap/DynmapPlugin.java +++ b/src/main/java/org/dynmap/DynmapPlugin.java @@ -75,7 +75,7 @@ public class DynmapPlugin extends JavaPlugin { /* Add/Replace branches in configuration tree with contribution from a separate file */ @SuppressWarnings("unchecked") - private void mergeConfigurationBranch(ConfigurationNode cfgnode, String branch, boolean replace_existing) { + private void mergeConfigurationBranch(ConfigurationNode cfgnode, String branch, boolean replace_existing, boolean islist) { Object srcbranch = cfgnode.getObject(branch); if(srcbranch == null) return; @@ -86,9 +86,9 @@ public class DynmapPlugin extends JavaPlugin { return; } /* If list, merge by "name" attribute */ - if((srcbranch instanceof List) && (destbranch instanceof List)) { - List dest = (List)destbranch; - List src = (List)srcbranch; + if(islist) { + List dest = configuration.getNodes(branch); + List src = cfgnode.getNodes(branch); /* Go through new records : see what to do with each */ for(ConfigurationNode node : src) { String name = node.getString("name", null); @@ -96,7 +96,7 @@ public class DynmapPlugin extends JavaPlugin { /* Walk destination - see if match */ boolean matched = false; for(ConfigurationNode dnode : dest) { - String dname = node.getString("name", null); + String dname = dnode.getString("name", null); if(dname == null) continue; if(dname.equals(name)) { /* Match? */ if(replace_existing) { @@ -112,11 +112,12 @@ public class DynmapPlugin extends JavaPlugin { dest.add(node); } } + configuration.put(branch,dest); } /* If configuration node, merge by key */ - else if((srcbranch instanceof ConfigurationNode) && (destbranch instanceof ConfigurationNode)) { - ConfigurationNode src = (ConfigurationNode)srcbranch; - ConfigurationNode dest = (ConfigurationNode)destbranch; + else { + ConfigurationNode src = cfgnode.getNode(branch); + ConfigurationNode dest = configuration.getNode(branch); for(String key : src.keySet()) { /* Check each contribution */ if(dest.containsKey(key)) { /* Exists? */ if(replace_existing) { /* If replacing, do so */ @@ -173,7 +174,7 @@ public class DynmapPlugin extends JavaPlugin { org.bukkit.util.config.Configuration cfg = new org.bukkit.util.config.Configuration(f); cfg.load(); ConfigurationNode cn = new ConfigurationNode(cfg); - mergeConfigurationBranch(cn, "worlds", true); + mergeConfigurationBranch(cn, "worlds", true, true); } else { try { @@ -192,7 +193,7 @@ public class DynmapPlugin extends JavaPlugin { org.bukkit.util.config.Configuration cfg = new org.bukkit.util.config.Configuration(f); cfg.load(); ConfigurationNode cn = new ConfigurationNode(cfg); - mergeConfigurationBranch(cn, "templates", false); + mergeConfigurationBranch(cn, "templates", false, false); } /* Now, process custom-templates.txt - these are user supplied, so override anything matcing */ @@ -201,7 +202,7 @@ public class DynmapPlugin extends JavaPlugin { org.bukkit.util.config.Configuration cfg = new org.bukkit.util.config.Configuration(f); cfg.load(); ConfigurationNode cn = new ConfigurationNode(cfg); - mergeConfigurationBranch(cn, "templates", true); + mergeConfigurationBranch(cn, "templates", true, false); } else { try { diff --git a/src/main/java/org/dynmap/flat/FlatMap.java b/src/main/java/org/dynmap/flat/FlatMap.java index 1e619811..4296371c 100644 --- a/src/main/java/org/dynmap/flat/FlatMap.java +++ b/src/main/java/org/dynmap/flat/FlatMap.java @@ -518,6 +518,7 @@ public class FlatMap extends MapType { s(o, "backgroundday", c.getString("backgroundday")); s(o, "backgroundnight", c.getString("backgroundnight")); s(o, "bigmap", this.isBigWorldMap(world)); + s(o, "compassview", "S"); /* Always from south */ a(worldObject, "maps", o); } } diff --git a/src/main/java/org/dynmap/hdmap/IsoHDPerspective.java b/src/main/java/org/dynmap/hdmap/IsoHDPerspective.java index 8db1de0d..ec5b1c2a 100644 --- a/src/main/java/org/dynmap/hdmap/IsoHDPerspective.java +++ b/src/main/java/org/dynmap/hdmap/IsoHDPerspective.java @@ -928,6 +928,7 @@ public class IsoHDPerspective implements HDPerspective { return name; } + private static String[] directions = { "N", "NE", "E", "SE", "S", "SW", "W", "NW" }; @Override public void addClientConfiguration(JSONObject mapObject) { s(mapObject, "perspective", name); @@ -936,5 +937,8 @@ public class IsoHDPerspective implements HDPerspective { s(mapObject, "scale", scale); s(mapObject, "worldtomap", world_to_map.toJSON()); s(mapObject, "maptoworld", map_to_world.toJSON()); + int dir = ((360 + (int)(22.5+azimuth)) / 45) % 8;; + s(mapObject, "compassview", directions[dir]); + } } diff --git a/src/main/java/org/dynmap/kzedmap/DefaultTileRenderer.java b/src/main/java/org/dynmap/kzedmap/DefaultTileRenderer.java index 67c392e3..dc6d4d28 100644 --- a/src/main/java/org/dynmap/kzedmap/DefaultTileRenderer.java +++ b/src/main/java/org/dynmap/kzedmap/DefaultTileRenderer.java @@ -579,6 +579,7 @@ public class DefaultTileRenderer implements MapTileRenderer { s(o, "backgroundday", c.getString("backgroundday")); s(o, "backgroundnight", c.getString("backgroundnight")); s(o, "bigmap", map.isBigWorldMap(world)); + s(o, "compassview", "SE"); /* Always from southeast */ a(worldObject, "maps", o); } } diff --git a/web/css/dynmap_style.css b/web/css/dynmap_style.css index af147263..d45e852a 100644 --- a/web/css/dynmap_style.css +++ b/web/css/dynmap_style.css @@ -565,31 +565,57 @@ * Compass */ -.compass { +.compass, .compass_NE, .compass_SE, .compass_NW, .compass_SW { display: block; position: absolute; z-index: 10; - top: 20px; right: 32px; - height: 84px; width: 83px; - background-repeat: no-repeat; +} + +.compass, .compass_SE { background-image: url(../images/compass.png); } -.compass_flat { +.compass_NE { + background-image: url(../images/compass_NE.png); +} + +.compass_NW { + background-image: url(../images/compass_NW.png); +} + +.compass_SW { + background-image: url(../images/compass_SW.png); +} + +.compass_flat, .compass_N, .compass_E, .compass_W, .compass_S { top: 10px; right: 21px; height: 105px; width: 105px; +} +.compass_flat, .compass_S { background-image: url(../images/compass_flat.png); } +.compass_N { + background-image: url(../images/compass_N.png); +} + +.compass_E { + background-image: url(../images/compass_E.png); +} + +.compass_W { + background-image: url(../images/compass_W.png); +} + /******************* * Chat */ diff --git a/web/images/compass.png b/web/images/compass.png index a7e13e54c8c7e7d06d77d0d668b8853ca8106e9d..2614dd30d6158e70edce299344712f152819eb3e 100644 GIT binary patch delta 2479 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�d=zgC1agPR`iO%*=N>Iy(NiY15{g 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 R;4uII002ovPDHLkV1m>t^bi05 literal 0 HcmV?d00001 diff --git a/web/images/compass_N.png b/web/images/compass_N.png new file mode 100644 index 0000000000000000000000000000000000000000..4794e3610185cfabc3599475cb077b7c75ad23b0 GIT binary patch literal 4187 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 literal 0 HcmV?d00001 diff --git a/web/images/compass_NE.png b/web/images/compass_NE.png new file mode 100644 index 0000000000000000000000000000000000000000..a7e13e54c8c7e7d06d77d0d668b8853ca8106e9d GIT binary patch literal 5585 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�d=zgC1agPR`iO%*=N>Iy(NiY15{g`}XZy$8p@mNHC`XxDDW8 z8YbY#%(PnUb~ONd(V;`VzE?%K{=WcrQ>Y_auF<1sae`0|px=Qw63i|Dn*dY-SUXZd zc3Ldk4V|5*)Pca7aOY{FD61X7>j1t4Fay9_0Qivr(UF;{)p(C-MT239p6A25 zhpH&cJq=(dfS&`n0w8a=gLIA_ZPUBm?RvL+x}?`1)AM{qq-#_P%HIs&8vv65Tm`UX z*xE;{b&bj8x~B7ZEMAsv;RN9q(OjnlrVqd}+Qp3k{tDnj0NUXMk~f42!ot&aJ#=_MR9ECGl}Cq;{@S^l5$ir-hUl!r6FYk_y>UZh8jrs6Hn|J z<#c|j@%tZ{E5A-L!%z%~GX2VfoawsF)bPBIv-nVimdm|*bH z=RvhP5LBsVQXe}hFhNK5^?iK)3LWjAAGA)m)%v{F>%GqjLVnNhJRG-HCrLMBDOWYX z=h_e8R3D$`0Qeffn}e=fTPz!lE?14#>oxWQsn=KOdHztWWvk-we5+`b)Kgjj2LT)d zzzqhFg2{BoidhC7d_ zRKY+-#@vD0$wa~gb(QuBiGtZZT^Egt=x9GB2KzY4 z$FleJJReo6ERd1G>pY%0iKuj)+;za2f)`&Hrr|i-TDoK+kIW@@kEsiAPhqS z85s+aplO#x!UTXa0G}#2p965H$!0s;WV3~}d%~zuCrvI_nK}@N+RgIl^}AS6ypX8M zCK@InPr%(#c+E=MN+i+x;yoNn;f`z#5ID^LPppUD0H~1b`aI6LLyr2Jm^4%~r~r&3jEw=ifAb zzfMU3gkgwZt6fZg)PzcdNWJ8uIpC} zA;@ZLi_JgN>6%zkd@EU%OEye9!l&zcXGdHvX#9TVi2{wr!w~XfGAoyCn1GzF+oJ@g zVlfQ-TJ6#dpU*zrVS)}uHPM`?^?DT-?%}wjtSFvJcBN7UGZb#deT4PtbSXQOTW_(`d(NUCAxL0(B0R?abF@cq+IBdAvQWh2oxZX7x-7691L zWV6jrRb@0O1j#{OmS~LTWZrCsWH7+c*$JJ;gD#B*UXFucGy;#Cfn!ZJTmFQGhW3%v zGCzbo1+2soN2k>adv-P+W@SMznR& zwWG;qn>L(bY5{zLflZz%x>u9UW=>Y+l05+JKyo)|;m<7NFV0(;lw~^Xv?NEpL9%5fpbdo~6Kp}1c zFoyzGswt3H;0;-rvjO}*hU<998Tn%LPSafgkdMBXe@D{WkXMfkIhdKWdn=7ZLa@T^ z!FdQ^5rAI-kQA1G7ztX=m`Iq%=)e=Le2_Ena}fQah5Z1gD;%7x^x4!y1?C1Qo6@~O zp_Ifhz9ChI~jn{}|lJV-;hNcw`hJYOWBXWRks62kBP2;1T7hv_Jv zG?=03hn~~4Us0FmBnH3!LOWg?D!yWQ;9V_mMYx<@B(`8sGC6} zq=dsPf}F|kH@&7%-KR%-4!C_PnnegtQjqyjzHM))D>OawHnpEGgfnZ=w9FjZ8b=z)?%EG| z57XL#w#>^&3y`NrZqsCl6f4ZM9uGzP7a;^EPMkO$2n0xLYpY+9BvM{pzCZmBLBbyu z6&06BH&s+rT-E@<)TvVo&YwTueCg7qJODi$z)TwE}9>QrxCU0vIiD_52SNdGU32;w-7S+HP16#!IMSC?u4pt!hr=FXiv7d-XU zQ*SI>xNs36Lf|}P87wU&*$@`QAJiT z7=+vHt_J{yVRRY*u-ol*xw*NsjYcDP{rdIh+S=M>FTeb9npPNjz21(Fjt+lOQPB_x}d~XS^lMaWBY@00000NkvXXu0mjf+FO#Y literal 0 HcmV?d00001 diff --git a/web/images/compass_NW.png b/web/images/compass_NW.png new file mode 100644 index 0000000000000000000000000000000000000000..b657abf895972500d531cd74aae748fe74ac830a GIT binary patch literal 5133 zcmV+o6!PndP)KLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z000R%NklpG8OJ~U-JZ7hw0Bmb034#lmhERMz;a+4@G{Uj$w1x@oD&`MNHv`HGr$jk z#lTr${v?3d3H%Y*18fKWTFnUPDc}Gw9e5RZ6tJ}@$VH;k+zlKDHkc7kt^ocgAZ`R+ z17@@kM2|3Me-V`?415d7m;o~^>}T%a^MKQ$`8T^h2mBpaSD^Bkmgsn0c>eje z2m!Z`dp{1`2c&8R6JbkM6fxqvL}cJ=K!`rz1#x|HfzKZT&X;@eN|M6|#>b}Pe)+S& z+y(+UPh8WoBA-7mUep67z#8DKBA;~we-klmJ>>-Yge%uwq|A9yE2$?;MPyKv5?|zT z;4mM8xd3(JdaKE(kBdtv4?=IW*BQTU}n&=OJRd9%n9@lk93Q;y3b%|c1c_t z%>onP!y@74M0W2x%CxaRH)wtu3MOc& ztTScoH-30zzHoV#lzAP;fXB>^63m8~b3w`p)pEllArV(kFY_7(F*y9ts4#O$gf$iH zUunX5x#)Ok1(={sX4qSYM8{U)3e`kK=Nk2fLRCG{yR&Ak5|K}LjlSDS;hfh@HJdry z8wy3KU`W8AYI&~O!xTVkRa;hxL9TfJ_E@>D^hgmZK$$@r;ac-A5ncOeQ~3?o$H;3{IU&T$c45 zHcsgwl$LDfIiQDttsRjF)82po8jt|iOokgi_<+F2AL}{f8Y&p3ZEBbR)82dU?XHU# zVS;(}odW|nRdu4n)qPmGZZK0W*NrY!eMV1NOEybz;@Y{A>SgYm3Z@M>Zp~yIdUtRq z5_*d5s9{jh7%){y+U-mx&6wLMqYZ^PCk0GZk`}ua@8>Cfoapo zS}aC)n}W86skLCLl5~elQNCYBP0q$;`B#e1x4FzyF9IHJC77}!mD+E~W-SJrb}|+S zeBBp~uI&wlHUQtCycrmMwQ}f9hnaM{->{|Ah87Q~9?yjlzyHRLNaSE%_;~=h1>*yB zPT?-eO$}4=dY^Eq>gRRuV6iaL(eVejqRf!P;lTp&{5!yxfaeTeO1E(6n-iugN%P%_ z#1HkB&)Dsmm@KdK4i7JxAVH$^hC(ZV2QZc)x>tmpO$XCwA02%~uboV}-Qf|x|Fiy~ zp=b4;pf?oSEo!NejQTcATwY@e%%t1>s(o}+*Q|?#&v(M9s@Hc!B5#**sx!bB(7yo6 zXJ)urb(o6RyUC@h6ZW2CR%`0{oC88PPvb@KWNZiyBi9|6^9|E_bje?d^r-(dc(;6xn6aX5igJ=}BYr&}P~-2253wX1NrlXzZNycm@=o zug5<$RFARj{i3%owa#ZfRZ7=Y3e#yzr(d%cv6CZy|6!M++~6M?xpJTSQU4P-9ck0cNd&h6rO)HMRZ8@ftm369&jfTU%e)p zak=7gS)S{UM7Gj++F2rMT1CB(&M?wtti_IbVO%UF4y%P;qWOMSEq#gbg)Rc zIlGoHZPu}|*R7e%m8msZtCd(F(C--;x!E^7+zj`Q3j<$6TL6|HHRaNEzM8;PBx#=` znY^;xIqh(yh68~+{X;|RXg)nAqNeWrk@9f`^E&2l*W46Un|L~s9= z=-KsBW@G~hE zyEQmCm}2rMjy7HVA+&onO)&yC&asfGRl65wCrshR!MUppYXXAKLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z000SUNkl0ug^fFX&t!M0w0 z$OXYrPB14}G>E0SlcJ$gdd6UykhV5yN-UR1yxKICfVNU&5Gw6Os!h-Ibl3BCcXsD? zZ~Mo*XZFt7-I=-leftG*clMo`cRsxD`#kUSKJT0>lgZFf@zgZsdw167mB4KcM5gK# zth%Q%^5g*81GI_HpEmg2ptZpLR$AyOLA=p2i`3;OTIY)mGzHZ?Wr#HG@)KSBlo&%# zHMr$ekJ&*_p2BN0*&Bh#>yCaU9*OV^`s>I+Lg%+##Qz48Qi^> z0w;jez!-oT%z{7xTCQCAFs`b5V)skE`lOQY^MU z83_D4ASy#s}R{(zpRs){_ zPff=U%{iWGigIt-<4L>IX|EKIzoE(U+km@{K)Qilz#oAHKpOZS5H31UfYvKl&PId5 zO}Jc;$son!kB<5M|4B;Hopk_n0q_B^Evu3I82IyaXG-~vR5<*LXfXKuiSOQIa-LV$ z&&E}CLk+`RExPzUS;vk8JBu;(EGTtkgloo6-KHp<@M^>#{%*ALt{SQX9-yj)d0-9fWKjc;-=~;;6ky2BUZcqaICrc zkxbL%OL%pCjxUioqbbUkDu&r9VBTf&+dkm1(+f9Er&cZD@R4XRxaWq8j*mABMi@) z9KUNAfn%+rKmpQj_t$j4KWg@ySJztuns!1{lpPiHEw>4mXhEKG&jIJAd$XbdRj*ys z5{h!)xZ6E$_Pfg%0$xZ40w(~qj4;FV(Bu&G!z4~E01V!`0nd}aKJ z#PXEaJCu;+6=m`*&j9TO%AL0}wJaM@faXYKcdWVj{d{FSV`Hjc)BdC>N^glk`b0ou zs&8o~9e4tWRwYmXWpwm`q$K?>Ul~^>rEy+OOW1yvow_l7AYTIP7{0`t`F`vJw z6ir0;`ZZ7{zT&Lw8t})kmU!8aNB2uZ@JWB`JVE&f z#(ciHHefCnzU6mqR&PCUsiuI6Aj;F4EdSH8HAyCKZyF!JkdWoo1wgt7L!m9eUw}n6 ztMwvA1fH4$3NYsPe`U<)vpoB7r&57{roEGpV%g^Q%uG*A&l`7jm?+78zGlF0?0 zRBBLDl&1$np<&X!ksKDrKdZt!$6F01A+lq_&jTo3wRKAW(3e#%8uh-2iO~hlk^;`gq3WvSew- z-ELyRV4-5Rvpwnts4!Cfv0(5eD`kgozL~VgQ^-ZyS;^=O>AmvaTwng!ZxGgxs6_%_DUMWOZcL!t%S&7ON0^PL}65A;!BvyJjc zfV+WXHqJROTJmn2b=xZpRm}jM6!a({U9`vtF|y+9%E|eXsGqMEfJ(x7S4-H!iqXQC z3#Y&8f%XAQER=IP23i?|cVcZ@;Z}+qkS;dRPT&Ux%0#DOrLB4iI|SH5IiPOQ_0?(w z+GZi>aauU%`zgJSi6Nj+F6biBtEvj<#FoE&gZw_>l%Jz~8WzT?kQ=s++&k#4gDqN)=h<8-p!3B%-JQdA`4JA@h)^c&&oiF?#G>0*RG>a#gr-Jr4r8o|AEWy9 ziSRgHH+eS40coc|dx5V{nf^T|j8B-_Q50j((t0Kbub1E~e(MP68sLXn-zQ>}`>0*L zE?Vp9tYe#jRiy^Hn91=(vx?NJ%o@f43h!uk3{=eudgSUVwXUf{*F;)RNr3iYyhY}8 zj={X1bXfST$1&o%Pud3B)6=tL*REZ+<|wyOOwV>#VER}oT@ZfsZV{ufwETTNbELbw zJJ)LBa*UUtJV*&QomQ#RA`Wm2Bg+3+A>TT?%TKJc%IBereM2Y|+9taAOoN%N zBVu;7YznV#U{)@mE3^LZe7C>f)zQ&$XM215E=shwyvB41KLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z000G;Nkl_0)Vol+Jt!q7 z>3`s!;!Rxk;K_sQX^)x}@t_wA3xPl+G*DWptZrI1+r+HNc*r~MY@A7Ex|7T^kIxrg zG7V{(c|Uo6PUq1~(?rBo0FVc83rrPbavlZscnF{@kZ7tbmJ}UJY67^;4U!hcm{cm2 zp8L62Ec$vqMU6TKox?Y+R4TcGhytMhi@URc!~pcwVj~^A^ag;}C2^pw_W-;M;9Y@4 zSL*;axmgl7cb5Z@0Wc$wXhQ;kErCQ+c?VbmiI~=0js+4yS0|7n0x2($XlhF=iM}>$ z#|r@F1rjYS0!WQ;e*%eEJOZ~`i3=oSOiC`02x!xzbqORQg{(l5m?V&bbayitbi@S` z(WHS@^1uPon#TfHAQ6j4UaU+YO;H=-?&xbvAVu5VZ3?9DHIG5Z8=OJujID@`%Zoas zd_W)tQplDh?v8LFE082638WxuBumQx;sPlg`RU6U0*P)sx(ZN%H05~2A}&Q4k|B`j z%TH>(C6MU5yPQCpz7hb^K3?yo5i5{Fbaj!>@LX?fzPGbO^)t_;R#uE&EQY?W<7qsO z{*0$vWbXs00jQ`|RjUzMNCdQ?zWq7%XsF}d(#grc9RyR;(3+pepG!;V#bV=Ji@d2C0JRI? zhGNikvZO44PXQbOD4VAF0sM_6i>r;_9I}j!X=PS(?KTpv7TT%QB>&7JfH&2$>(mCV zYKwg>kMFx{nx>{{+H-)M+}&+Ov#e>F+l;kkwfV*n2oggs<~p58L&AuCSq88@^!)LV znpIDg`fL8(BQ~@`K|K3qYO0(TAwU3lh>uuX}Jq7Op zfNueOrS`q4Al+0R&9zRtt6bj=0H%6PN)?3UugmoHNR)mTDgn6w&{q2lJR4K`zL)Io z7Jy$cm>c(#T9##5-;5jvjZ6DVhkf?lYuBiNu&l+Z&Fbp7?vmbHQ<<|EnkVZz-gCQ9 z&_7;X^*h`zWdrC0a-y!X7mML|eSO;2)Ea_NQ?aKGz_afy7K_*}6!h=P<-X@S=?Z}C zg<*9>W|VUQ`9g_@sq6TCWo1%;>{ekx7-bb#k`tgXirI&1{p{54QJ~gbKrXtyX*-$3 zAL(=uuCC<(!8#5tBcaq5>Zv|j1Hkt#uGDgyna9_!f7nhYUuh?k_k6g%yVcQV5C0qX_^NNCC_1Rn?k63QyI5VG5)P700ZT1`d$Cy0MBt3QzTbVG5*> z+}#AJb^?&hvM$&Yg{+HA&|n?xNf+(JK`B$g~9o; zcXtheL_-bENdp&1qvB3YAknXt9tb2ls!2?uFQ?dZ0q@tF1X4)uuFmA#*g&dqjYpgy z9g8JJ)7>=$5mwot@m4Np44V1SbKSO$ak5SPTEtRUqv7^q<# zv*_P(%I=!B1=xoANlc=nBL`qC#3d%NmM&XBU;hjMRhn|(KY%(H00000NkvXXu0mjf DYI)0F literal 0 HcmV?d00001 diff --git a/web/js/map.js b/web/js/map.js index 60446c92..09fa7d58 100644 --- a/web/js/map.js +++ b/web/js/map.js @@ -292,7 +292,6 @@ DynMap.prototype = { var updateHeight = function() { playerlist.height(sidebar.innerHeight() - (playerlist.offset().top - worldlist.offset().top) - 64); // here we need a fix to avoid the static value, but it works fine this way :P - console.log('scrollheight=' + playerlist.scrollHeight() + ', height=' + playerlist.height()); var scrollable = playerlist.scrollHeight() < playerlist.height(); upbtn.toggle(scrollable); downbtn.toggle(scrollable); @@ -357,8 +356,10 @@ DynMap.prototype = { } $(me).trigger('mapchanging'); if (me.maptype) { + $('.compass').removeClass('compass_' + me.maptype.compassview); $('.compass').removeClass('compass_' + me.maptype.name); } + $('.compass').addClass('compass_' + map.compassview); $('.compass').addClass('compass_' + map.name); var worldChanged = me.world !== map.world; var projectionChanged = me.map.getProjection() !== map.projection;