From 3922a78de9fca5d0dea086647105c2bb61104011 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emmanuel=20BENO=C3=8ET?= Date: Tue, 31 Dec 2024 17:41:29 +0100 Subject: [PATCH] chore: remove useless stuff Stray bits of config, MacOS dashboard widget... --- misc/Legacy Worlds.wdgt/Default.png | Bin 17069 -> 0 bytes misc/Legacy Worlds.wdgt/Icon.png | Bin 4511 -> 0 bytes misc/Legacy Worlds.wdgt/Info.plist | 16 - misc/Legacy Worlds.wdgt/LW.css | 109 --- misc/Legacy Worlds.wdgt/LW.html | 58 -- misc/Legacy Worlds.wdgt/images/blue.png | Bin 17069 -> 0 bytes misc/Legacy Worlds.wdgt/lib/Base.js | 189 ------ misc/Legacy Worlds.wdgt/lib/Base/Browser.js | 94 --- misc/Legacy Worlds.wdgt/lib/Base/Comp.js | 217 ------ misc/Legacy Worlds.wdgt/lib/Base/Comp/Evt.js | 77 --- misc/Legacy Worlds.wdgt/lib/Base/Comp/Slot.js | 50 -- misc/Legacy Worlds.wdgt/lib/Base/Log.js | 52 -- misc/Legacy Worlds.wdgt/lib/Base/Timer.js | 169 ----- misc/Legacy Worlds.wdgt/lib/Base/Util.js | 95 --- .../lib/Base/Util/Hashtable.js | 125 ---- misc/Legacy Worlds.wdgt/lib/Base/XMLLoader.js | 313 --------- misc/Legacy Worlds.wdgt/lib/LWWidget.js | 85 --- misc/Legacy Worlds.wdgt/lib/LWWidget/Beta5.js | 77 --- .../lib/LWWidget/Beta5/Cash.js | 17 - .../lib/LWWidget/Beta5/Fleets.js | 55 -- .../lib/LWWidget/Beta5/Forums.js | 125 ---- .../lib/LWWidget/Beta5/Msg.js | 71 -- .../lib/LWWidget/Beta5/Planets.js | 86 --- .../lib/LWWidget/Beta5/Player.js | 82 --- .../lib/LWWidget/Beta5/Techs.js | 37 -- .../lib/LWWidget/Beta5/Ticks.js | 121 ---- misc/Legacy Worlds.wdgt/lib/LWWidget/Data.js | 25 - .../lib/LWWidget/Data/Leaf.js | 12 - .../lib/LWWidget/Data/Loader.js | 130 ---- .../lib/LWWidget/Data/Node.js | 25 - misc/Legacy Worlds.wdgt/lib/LWWidget/Debug.js | 67 -- misc/Legacy Worlds.wdgt/lib/LWWidget/Game.js | 168 ----- .../lib/LWWidget/Game/Page.js | 34 - .../lib/LWWidget/GameDisplay.js | 73 -- .../lib/LWWidget/GameSelector.js | 65 -- misc/Legacy Worlds.wdgt/lib/LWWidget/Login.js | 77 --- misc/Legacy Worlds.wdgt/lib/LWWidget/Main.js | 392 ----------- misc/Legacy Worlds.wdgt/lib/LWWidget/Menu.js | 81 --- .../lib/LWWidget/Menu/Command.js | 7 - .../lib/LWWidget/Menu/Entry.js | 7 - .../lib/LWWidget/Menu/Item.js | 38 -- .../lib/LWWidget/Menu/Mode.js | 109 --- .../lib/LWWidget/Menu/Text.js | 7 - .../lib/LWWidget/NewVersion.js | 33 - misc/Legacy Worlds.wdgt/lib/LWWidget/Page.js | 17 - .../lib/LWWidget/TextPage.js | 18 - .../lib/LWWidget/VersionCheck.js | 101 --- .../lib/LWWidget/Versions.js | 2 - scripts/config.inc | 17 +- .../game/main/ticks/deathofrats/library.inc | 113 ---- scripts/legacyworlds.xml | 11 - scripts/lib/pcheck.inc | 104 --- scripts/lib/pcheck_manager.inc | 629 ------------------ scripts/lib/pcheck_thread.inc | 144 ---- scripts/proxycheck.php | 67 -- scripts/site/main/handlers/macwidget.inc | 18 - scripts/site/main/handlers/pcheck.inc | 18 - scripts/site/main/page.inc | 4 +- scripts/ticks.php | 2 +- .../LegacyWorlds-Dashboard-latest.zip | Bin 81235 -> 0 bytes 60 files changed, 6 insertions(+), 4929 deletions(-) delete mode 100755 misc/Legacy Worlds.wdgt/Default.png delete mode 100755 misc/Legacy Worlds.wdgt/Icon.png delete mode 100755 misc/Legacy Worlds.wdgt/Info.plist delete mode 100755 misc/Legacy Worlds.wdgt/LW.css delete mode 100755 misc/Legacy Worlds.wdgt/LW.html delete mode 100755 misc/Legacy Worlds.wdgt/images/blue.png delete mode 100644 misc/Legacy Worlds.wdgt/lib/Base.js delete mode 100644 misc/Legacy Worlds.wdgt/lib/Base/Browser.js delete mode 100644 misc/Legacy Worlds.wdgt/lib/Base/Comp.js delete mode 100644 misc/Legacy Worlds.wdgt/lib/Base/Comp/Evt.js delete mode 100644 misc/Legacy Worlds.wdgt/lib/Base/Comp/Slot.js delete mode 100644 misc/Legacy Worlds.wdgt/lib/Base/Log.js delete mode 100644 misc/Legacy Worlds.wdgt/lib/Base/Timer.js delete mode 100644 misc/Legacy Worlds.wdgt/lib/Base/Util.js delete mode 100644 misc/Legacy Worlds.wdgt/lib/Base/Util/Hashtable.js delete mode 100644 misc/Legacy Worlds.wdgt/lib/Base/XMLLoader.js delete mode 100644 misc/Legacy Worlds.wdgt/lib/LWWidget.js delete mode 100644 misc/Legacy Worlds.wdgt/lib/LWWidget/Beta5.js delete mode 100644 misc/Legacy Worlds.wdgt/lib/LWWidget/Beta5/Cash.js delete mode 100644 misc/Legacy Worlds.wdgt/lib/LWWidget/Beta5/Fleets.js delete mode 100644 misc/Legacy Worlds.wdgt/lib/LWWidget/Beta5/Forums.js delete mode 100644 misc/Legacy Worlds.wdgt/lib/LWWidget/Beta5/Msg.js delete mode 100644 misc/Legacy Worlds.wdgt/lib/LWWidget/Beta5/Planets.js delete mode 100644 misc/Legacy Worlds.wdgt/lib/LWWidget/Beta5/Player.js delete mode 100644 misc/Legacy Worlds.wdgt/lib/LWWidget/Beta5/Techs.js delete mode 100644 misc/Legacy Worlds.wdgt/lib/LWWidget/Beta5/Ticks.js delete mode 100644 misc/Legacy Worlds.wdgt/lib/LWWidget/Data.js delete mode 100644 misc/Legacy Worlds.wdgt/lib/LWWidget/Data/Leaf.js delete mode 100644 misc/Legacy Worlds.wdgt/lib/LWWidget/Data/Loader.js delete mode 100644 misc/Legacy Worlds.wdgt/lib/LWWidget/Data/Node.js delete mode 100644 misc/Legacy Worlds.wdgt/lib/LWWidget/Debug.js delete mode 100644 misc/Legacy Worlds.wdgt/lib/LWWidget/Game.js delete mode 100644 misc/Legacy Worlds.wdgt/lib/LWWidget/Game/Page.js delete mode 100644 misc/Legacy Worlds.wdgt/lib/LWWidget/GameDisplay.js delete mode 100644 misc/Legacy Worlds.wdgt/lib/LWWidget/GameSelector.js delete mode 100644 misc/Legacy Worlds.wdgt/lib/LWWidget/Login.js delete mode 100644 misc/Legacy Worlds.wdgt/lib/LWWidget/Main.js delete mode 100644 misc/Legacy Worlds.wdgt/lib/LWWidget/Menu.js delete mode 100644 misc/Legacy Worlds.wdgt/lib/LWWidget/Menu/Command.js delete mode 100644 misc/Legacy Worlds.wdgt/lib/LWWidget/Menu/Entry.js delete mode 100644 misc/Legacy Worlds.wdgt/lib/LWWidget/Menu/Item.js delete mode 100644 misc/Legacy Worlds.wdgt/lib/LWWidget/Menu/Mode.js delete mode 100644 misc/Legacy Worlds.wdgt/lib/LWWidget/Menu/Text.js delete mode 100644 misc/Legacy Worlds.wdgt/lib/LWWidget/NewVersion.js delete mode 100644 misc/Legacy Worlds.wdgt/lib/LWWidget/Page.js delete mode 100644 misc/Legacy Worlds.wdgt/lib/LWWidget/TextPage.js delete mode 100644 misc/Legacy Worlds.wdgt/lib/LWWidget/VersionCheck.js delete mode 100644 misc/Legacy Worlds.wdgt/lib/LWWidget/Versions.js delete mode 100644 scripts/lib/pcheck.inc delete mode 100644 scripts/lib/pcheck_manager.inc delete mode 100644 scripts/lib/pcheck_thread.inc delete mode 100644 scripts/proxycheck.php delete mode 100644 scripts/site/main/handlers/macwidget.inc delete mode 100644 scripts/site/main/handlers/pcheck.inc delete mode 100644 site/downloads/LegacyWorlds-Dashboard-latest.zip diff --git a/misc/Legacy Worlds.wdgt/Default.png b/misc/Legacy Worlds.wdgt/Default.png deleted file mode 100755 index 1ec4ed477be5f5b276643e7170446f81f68d50ff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17069 zcmb`vcT`i~x4;P^MQI`eB2`h4UZocspwdL7NtX@@y|)M`NS9s$1gR>WKtk^wLXi?k z2tgq9&`G2Z-`~vp&Ajzy)|&U$`y(rR-L>w$=j^@jXYX_F-Z$#4wmR+2dpAi)NN8Wb zdijoogjD6~=Rieqb>zPA+49vN#YYYGmn57dsw8!r16j3KM>xDxjl5pC0)e(JUL-F( zY^}U(ZMc0My&SmTJJ@oozt(!YWAn&`goK;q^~-1P{ZRN8vntyGZ{)GX>in+_r(oln z=W6}TurHLXL(EA`FF$d7?ywevb5mLJek4(ewQi3{?33=GUg3!dW%cvW)T`ad z^(2hsG)Q>jhwCIfS-XS(fZHGz7-^CZ?R2EKEyH1tqQKEaJ>dw1eMS!L9H(Yu2vnDAIOSxnbbPb$2fIi}(<`c4)FeucBD-s50l18r$% zsUcNrXyt?ZyMRKI!W>2{$Z7r#UtZ!awUoB^GhT`z)Gz5n*sApb4({Q?Kz@C-7- zfM+CU7`z=B3?0+Y44CFNIn0U>{%S`g=8=3Yqz}tXax)W~;JFBV-)jB-&+F9#BCUVa zp1=)9xyGI3ooL0TeR2VjGg=O7I!OEO&4SL*7cBu5DHg%C z1hSyfitu?$YAG$UT3IJF1#E#q+F1(xq<&U$1V)Oco$!m}X2~Bwbi=wF z>c1XROX1o)R}55+2sJBWD75abf8i-p`?~VuH}y(ZHJoJrTvTK4W??Fw2#>18V<(xr z7}^b3Q3L`C^tG3nnp&|WA@;Tb3J5i!uQN!Ns|3d3HvN!!0-Jy$jkFtCKGq02&j z$R0q_=nAR}{RtB!frK zp)~JKAr3<|PmZ*@>YTRwsp2*3#Qwie($kIaH)*O3AB^h|1A!9FKZlbX#Q-vhp0@@T zqpi0Qh`J@X`8%~sg(Z*TF8r%f`vSE~52J_p9{JOLQD8D`325%eNO6V)T_}Kb2Y2G~ z7cL~Q(G*qWE>h0@!V>#HBGD7C6j$#V*NQFSeT6xz zDh}%X6?^2aon*jB!o@PH(g z*YSQ4XEAu_$w0Y3Pf}^byc<@lr=IQA^_-3cHIc6VydkWZ#65X4NP4R!lWK>J7qhH+ z1cQssT}heC_@lcMiDCs2j>fYRa)g2p+nm7Aj*4Qo{c2kkc`46=GK^##Q&&Ed_w>N$ zXT~t#5QTk0B^fU?V$5jW+-14{M{*OdLxW7Li<)(Xuxv08_7q(a>T^S(`9cz4(0BFN zG8=NLT+Fqdtym=P2fi(6+*t~XtPf>Y2Om((2qk3M9bfpgJa1}+dkY=v>5ur_u{;dM z%lFbOoqo*;p1dELY0aiN3+5f<(6r>^;I+nO9h|byPGw8!9kT`6eS9Ryo5qr8?=DJ> z?E$Dy8imLeV1_x8(KK@Lv8(p2ZMz}3QkKVL zTP);C;bqtGp|m!rPF;EdJk=Rqi;#O>wpjHwz*GKKnY`k=gSD^e1$UceF=drHVoTwME zTkNnvay6bZS5Q7Cn-gkGTD4RXa-yTmk25s%!;UbkBN~;Q3|6@SBRXSc+hK^~D$_y- z!&4Nxc*{(>a#bfjoxr-Y6^NgFkk)YAs5zzMfYt;j^gm&jHy3f0mM0|Oa^NMW{7u0- zEo)E_4=&NXYb%F*yo91F*0SSQ?f^!VhkQI~cK`l_Tui7O6&r+L&(4EHLknPkbeqhv z4kJ31z>%Fi%p4i|C^n$nOTe|S0FmL@hzyi%dkx^rNX~_?*DHd*AWH~MA@?h0w|wM; zkaZj6vky$IE!XVDCbOIlhFz_cZSXAphqJrdw<NF6mW7Od8W_9>Oz`(nAA29~=w1Bj@0BLDd_djYB=&7yP^>=7xEQ(L<&lVZ6#^`w zHgc2=xh;k5m9y8(TrDl5rf%!1BI9u&gfPS*Y9ZRc>T~iNXEH$MCRVo1Z;-`9^4fSv z+EkW)?^t$~PTDzltLt48K#uP+#a#Ax;K-QtYFnΝ#+wb;tz-w4JCM(zXg(RT$g- zfjfy>IXlb&;2CIkL54#e#v`^es6rPn(swQF?2Ih(+E$VGOOtM zg$eByY0*c+l|xMLby_7vE0hx5-pUK9>u~V*lyUtGp6oOX58Yefm&lD3V&5^ie#hr& z49h$9XaPi#zWUG9XYv9BpalyB{HTg81LlBcLLHe&l`6oeiMbcD{Y$IL$A&IfV8`wp z%YwdwSJbYIkan~#=#XBSk86~2L(+_fa8#G>0m|)d&73DC`V91rDfH%?agEbIG1N5s z@9&Nq^V9E7(T51KW3pzlbTK7(+RJJD6ht!M!Q>92}y{@KqQ;sVY^ zNxvTjxxlu!>wZ&D2}k`BDiTDAy|EvAnM^z7T{j%c!=K{0{LOl|jK6O_qpa`5PF`B) z-gPij7OvC*$;SSXq$EL z$?dGE@(#y8eNF9$i|43LKN)&W9l8POWy%}{i^6-XJVq5PPsQwC+9tO`iFC-G56K3( zvJx(WJIn^@guQ3OQ9_NQP3OOuf!he_Yg^1ODfJFM(t0fm{cL5Y$fVzNI?u{v1zOsy zZ9j}T@#)&XFqaP1dNe2YZn<1mtz>>EKaR8i{BDSz`=s_h8Gq2aFE7RA#h;9_{bPCG zBS)&0;j+i@yz@ZTBusuF-(|kCN8f97Zh>6e7rW!zD8xV;ssF*O#or;7vqph7*OQnt zIw=Gr;&=dAK5G8FsWEx$*RC4U^kKM242*c%s$#@brt(h^B|a@u@xvLE4!l>=3KeNb{Q5pP)QWiPZZnkN2!fvp+V3@#Ak zqwD)26^8mtyM(jw?R~!$8j5ju+LO+XllkCfG4vYk(tgAN7_oTid9m;6k_K14SS-05 zY4g`g#YVQJV_)p6OP5rd8$*<-D|E*5`6=F2Sw13P>`D7>1-E;8*K@+3%{a={|(2y+n499_t!k@Sz(zoTP=(%SZ+1tr6BNj}dvr1#Pl zN<1FD-TL*s^^vF-ckE2gf=_x!Hv0n}!&N0s3AFEHK?t~#*CSeT_K~ce4r0qHmZrh6 zHCZ}MxS10s98pP^PITEcb(DGGAUnL()zmp*pRW)uZo-iUK-)O(4Qo@q8T<_tja5yo z<-gAJ+o3u@eteS)HspZLGj0vT4J11l`c50MhhV88C!3d8GW`&)3-b`_C_WUfg}!n- z_y%HQ3gZ%k9C?D!aPnU~>f=lbQUutdWa3Ww`c47%!L&F94GQ9SztjGccm6rX7A73^ z-78yiW!lR0(nC7vKSv2Fml~iW`<>GL(_P|j&h=ae%; z0Dnh1*pOCOjIo-@!2B5{@vbym-wKj58_nQ{U#IX6-{S%ys>H|mVyH}ud98I^^y=;S zPaF67>Qu+|q^FcXF{ss8E#W6<>{@Yt{v4CN`fhVjhd=J)wlQ6NYVb05_qj~IPOT&% zKJf@sQl%V7;c%?8wSek_Tu#zs8f*7Ydv{jUt-v~0-g`v^4NFghtuC6lAG3eBy?j#6 z1MV4T~m&rwGMk_libmMUS^=B>QPF$)2UYcUP88umBQ?0i&f~6D*!b1zA=P< z%IIPP=s3xt=U=k36$==vFz?wPasB8?P^_0bUr7g@M_F(Vop$_KJUuvz1VYb1>Anz@ zK&wxkzV)n&({?ufmQwt(<p~i0mgq(+vV`Kwa%xk=4B3JUn zSBlvWqNjxjZ(uzrglNWhRy#7p7%${`N`u={UKQcSj{I&u?efkUN?b>^yzFJ)a4_=A zO&PeoO4&5?csLvQ0{dz+=(Me;;|aUzc@5s7O6hVQ-b|zqo?7=*Ij{~)I8#2vAlj~o ze?d4}XMvvr2L^v(P-D(E&Dr<9Bzw+ee8@<2)y-nx&?@_U)Qf){cQQ2Vdhacf#>uU8y>SyG=$y$MIeM>|M?r3> z4@}&-IIo#%302W)ex2K&js#4|sscT!UDye8n+$=B@setYSqhQM=ayRk~8z=thW z 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 - - - - AllowNetworkAccess - - CFBundleDisplayName - Legacy Worlds - CFBundleIdentifier - com.apple.widget.legacyworlds - CFBundleVersion - 1.0 - MainHTML - LW.html - - diff --git a/misc/Legacy Worlds.wdgt/LW.css b/misc/Legacy Worlds.wdgt/LW.css deleted file mode 100755 index 7cc81d0..0000000 --- a/misc/Legacy Worlds.wdgt/LW.css +++ /dev/null @@ -1,109 +0,0 @@ -body { - margin: 0; -} - -#mainDiv { - position: absolute; - top: 35px; - left: 7px; - width: 307px; - height: 290px; - margin: 0; - padding: 0; -} - -#debugLink { - position: absolute; - top: 326px; - left: 30px; - width: 271px; - height: 14px; - margin: 0; - padding: 0; - color: white; - font-size: 12px; - text-align: center; -} - -#debugDiv { - display: none; - position: absolute; - top: 35px; - left: 7px; - width: 307px; - height: 290px; - margin: 0; - padding: 0; - color: white; - font-size: 12px; - z-index: 1; - border: 1px solid #7f7f7f; -} - -#debugTable { - width: 301px; - height: 284px; - margin: 3px; - padding: 0; - border: 0px; -} - -#debugTable td { - color: white; - font-size: 12px; -} - -tr#dbgHdr { - height: 14px; -} - -#mainTable { - width: 305px; - height: 288px; - margin: 1px; - padding: 0; - border: 1px solid #7f7f7f; - border-collapse: collapse; -} - -#mtTitle { - text-align: center; - vertical-align: middle; - height: 30px; - font-size: 18px; - color: white; - font-weight: bold; -} - -#mtMenu { - text-align: center; - vertical-align: middle; - height: 30px; - border: 1px solid #7f7f7f; - font-size: 12px; - color: white; -} - -#mtContents { - color: white; - vertical-align: middle; - text-align: center; - font-size: 13px; -} - -a, a:active, a:visited { - text-decoration: underline; - font-style: italic; - color: white; -} - -.table { - margin: 0% 4%; - width: 96%; - border: 0; -} - -.table td { - color: white; - font-size: 13px; -} diff --git a/misc/Legacy Worlds.wdgt/LW.html b/misc/Legacy Worlds.wdgt/LW.html deleted file mode 100755 index 12a0134..0000000 --- a/misc/Legacy Worlds.wdgt/LW.html +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/misc/Legacy Worlds.wdgt/images/blue.png b/misc/Legacy Worlds.wdgt/images/blue.png deleted file mode 100755 index 1ec4ed477be5f5b276643e7170446f81f68d50ff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17069 zcmb`vcT`i~x4;P^MQI`eB2`h4UZocspwdL7NtX@@y|)M`NS9s$1gR>WKtk^wLXi?k z2tgq9&`G2Z-`~vp&Ajzy)|&U$`y(rR-L>w$=j^@jXYX_F-Z$#4wmR+2dpAi)NN8Wb zdijoogjD6~=Rieqb>zPA+49vN#YYYGmn57dsw8!r16j3KM>xDxjl5pC0)e(JUL-F( zY^}U(ZMc0My&SmTJJ@oozt(!YWAn&`goK;q^~-1P{ZRN8vntyGZ{)GX>in+_r(oln z=W6}TurHLXL(EA`FF$d7?ywevb5mLJek4(ewQi3{?33=GUg3!dW%cvW)T`ad z^(2hsG)Q>jhwCIfS-XS(fZHGz7-^CZ?R2EKEyH1tqQKEaJ>dw1eMS!L9H(Yu2vnDAIOSxnbbPb$2fIi}(<`c4)FeucBD-s50l18r$% zsUcNrXyt?ZyMRKI!W>2{$Z7r#UtZ!awUoB^GhT`z)Gz5n*sApb4({Q?Kz@C-7- zfM+CU7`z=B3?0+Y44CFNIn0U>{%S`g=8=3Yqz}tXax)W~;JFBV-)jB-&+F9#BCUVa zp1=)9xyGI3ooL0TeR2VjGg=O7I!OEO&4SL*7cBu5DHg%C z1hSyfitu?$YAG$UT3IJF1#E#q+F1(xq<&U$1V)Oco$!m}X2~Bwbi=wF z>c1XROX1o)R}55+2sJBWD75abf8i-p`?~VuH}y(ZHJoJrTvTK4W??Fw2#>18V<(xr z7}^b3Q3L`C^tG3nnp&|WA@;Tb3J5i!uQN!Ns|3d3HvN!!0-Jy$jkFtCKGq02&j z$R0q_=nAR}{RtB!frK zp)~JKAr3<|PmZ*@>YTRwsp2*3#Qwie($kIaH)*O3AB^h|1A!9FKZlbX#Q-vhp0@@T zqpi0Qh`J@X`8%~sg(Z*TF8r%f`vSE~52J_p9{JOLQD8D`325%eNO6V)T_}Kb2Y2G~ z7cL~Q(G*qWE>h0@!V>#HBGD7C6j$#V*NQFSeT6xz zDh}%X6?^2aon*jB!o@PH(g z*YSQ4XEAu_$w0Y3Pf}^byc<@lr=IQA^_-3cHIc6VydkWZ#65X4NP4R!lWK>J7qhH+ z1cQssT}heC_@lcMiDCs2j>fYRa)g2p+nm7Aj*4Qo{c2kkc`46=GK^##Q&&Ed_w>N$ zXT~t#5QTk0B^fU?V$5jW+-14{M{*OdLxW7Li<)(Xuxv08_7q(a>T^S(`9cz4(0BFN zG8=NLT+Fqdtym=P2fi(6+*t~XtPf>Y2Om((2qk3M9bfpgJa1}+dkY=v>5ur_u{;dM z%lFbOoqo*;p1dELY0aiN3+5f<(6r>^;I+nO9h|byPGw8!9kT`6eS9Ryo5qr8?=DJ> z?E$Dy8imLeV1_x8(KK@Lv8(p2ZMz}3QkKVL zTP);C;bqtGp|m!rPF;EdJk=Rqi;#O>wpjHwz*GKKnY`k=gSD^e1$UceF=drHVoTwME zTkNnvay6bZS5Q7Cn-gkGTD4RXa-yTmk25s%!;UbkBN~;Q3|6@SBRXSc+hK^~D$_y- z!&4Nxc*{(>a#bfjoxr-Y6^NgFkk)YAs5zzMfYt;j^gm&jHy3f0mM0|Oa^NMW{7u0- zEo)E_4=&NXYb%F*yo91F*0SSQ?f^!VhkQI~cK`l_Tui7O6&r+L&(4EHLknPkbeqhv z4kJ31z>%Fi%p4i|C^n$nOTe|S0FmL@hzyi%dkx^rNX~_?*DHd*AWH~MA@?h0w|wM; zkaZj6vky$IE!XVDCbOIlhFz_cZSXAphqJrdw<NF6mW7Od8W_9>Oz`(nAA29~=w1Bj@0BLDd_djYB=&7yP^>=7xEQ(L<&lVZ6#^`w zHgc2=xh;k5m9y8(TrDl5rf%!1BI9u&gfPS*Y9ZRc>T~iNXEH$MCRVo1Z;-`9^4fSv z+EkW)?^t$~PTDzltLt48K#uP+#a#Ax;K-QtYFnΝ#+wb;tz-w4JCM(zXg(RT$g- zfjfy>IXlb&;2CIkL54#e#v`^es6rPn(swQF?2Ih(+E$VGOOtM zg$eByY0*c+l|xMLby_7vE0hx5-pUK9>u~V*lyUtGp6oOX58Yefm&lD3V&5^ie#hr& z49h$9XaPi#zWUG9XYv9BpalyB{HTg81LlBcLLHe&l`6oeiMbcD{Y$IL$A&IfV8`wp z%YwdwSJbYIkan~#=#XBSk86~2L(+_fa8#G>0m|)d&73DC`V91rDfH%?agEbIG1N5s z@9&Nq^V9E7(T51KW3pzlbTK7(+RJJD6ht!M!Q>92}y{@KqQ;sVY^ zNxvTjxxlu!>wZ&D2}k`BDiTDAy|EvAnM^z7T{j%c!=K{0{LOl|jK6O_qpa`5PF`B) z-gPij7OvC*$;SSXq$EL z$?dGE@(#y8eNF9$i|43LKN)&W9l8POWy%}{i^6-XJVq5PPsQwC+9tO`iFC-G56K3( zvJx(WJIn^@guQ3OQ9_NQP3OOuf!he_Yg^1ODfJFM(t0fm{cL5Y$fVzNI?u{v1zOsy zZ9j}T@#)&XFqaP1dNe2YZn<1mtz>>EKaR8i{BDSz`=s_h8Gq2aFE7RA#h;9_{bPCG zBS)&0;j+i@yz@ZTBusuF-(|kCN8f97Zh>6e7rW!zD8xV;ssF*O#or;7vqph7*OQnt zIw=Gr;&=dAK5G8FsWEx$*RC4U^kKM242*c%s$#@brt(h^B|a@u@xvLE4!l>=3KeNb{Q5pP)QWiPZZnkN2!fvp+V3@#Ak zqwD)26^8mtyM(jw?R~!$8j5ju+LO+XllkCfG4vYk(tgAN7_oTid9m;6k_K14SS-05 zY4g`g#YVQJV_)p6OP5rd8$*<-D|E*5`6=F2Sw13P>`D7>1-E;8*K@+3%{a={|(2y+n499_t!k@Sz(zoTP=(%SZ+1tr6BNj}dvr1#Pl zN<1FD-TL*s^^vF-ckE2gf=_x!Hv0n}!&N0s3AFEHK?t~#*CSeT_K~ce4r0qHmZrh6 zHCZ}MxS10s98pP^PITEcb(DGGAUnL()zmp*pRW)uZo-iUK-)O(4Qo@q8T<_tja5yo z<-gAJ+o3u@eteS)HspZLGj0vT4J11l`c50MhhV88C!3d8GW`&)3-b`_C_WUfg}!n- z_y%HQ3gZ%k9C?D!aPnU~>f=lbQUutdWa3Ww`c47%!L&F94GQ9SztjGccm6rX7A73^ z-78yiW!lR0(nC7vKSv2Fml~iW`<>GL(_P|j&h=ae%; z0Dnh1*pOCOjIo-@!2B5{@vbym-wKj58_nQ{U#IX6-{S%ys>H|mVyH}ud98I^^y=;S zPaF67>Qu+|q^FcXF{ss8E#W6<>{@Yt{v4CN`fhVjhd=J)wlQ6NYVb05_qj~IPOT&% zKJf@sQl%V7;c%?8wSek_Tu#zs8f*7Ydv{jUt-v~0-g`v^4NFghtuC6lAG3eBy?j#6 z1MV4T~m&rwGMk_libmMUS^=B>QPF$)2UYcUP88umBQ?0i&f~6D*!b1zA=P< z%IIPP=s3xt=U=k36$==vFz?wPasB8?P^_0bUr7g@M_F(Vop$_KJUuvz1VYb1>Anz@ zK&wxkzV)n&({?ufmQwt(<p~i0mgq(+vV`Kwa%xk=4B3JUn zSBlvWqNjxjZ(uzrglNWhRy#7p7%${`N`u={UKQcSj{I&u?efkUN?b>^yzFJ)a4_=A zO&PeoO4&5?csLvQ0{dz+=(Me;;|aUzc@5s7O6hVQ-b|zqo?7=*Ij{~)I8#2vAlj~o ze?d4}XMvvr2L^v(P-D(E&Dr<9Bzw+ee8@<2)y-nx&?@_U)Qf){cQQ2Vdhacf#>uU8y>SyG=$y$MIeM>|M?r3> z4@}&-IIo#%302W)ex2K&js#4|sscT!UDye8n+$=B@setYSqhQM=ayRk~8z=thW z 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 0; i--) { - _b.destructors[i](); - } - }; -}; diff --git a/misc/Legacy Worlds.wdgt/lib/Base/Browser.js b/misc/Legacy Worlds.wdgt/lib/Base/Browser.js deleted file mode 100644 index ec3b358..0000000 --- a/misc/Legacy Worlds.wdgt/lib/Base/Browser.js +++ /dev/null @@ -1,94 +0,0 @@ -/** The Base.Browser class contains the code that detects the user's browser and keeps - * track of the current window's size. - */ -Base.Browser = Base.Comp.inherits({ - - /** The constructor detects the browser type, then initialises the window size - * watching code. - */ - constructor: function () { - if (Base.Browser.singleton) { - throw "SingletonException"; - } - - this.base(); - - // Get the document body object - this.docBody = (document.compatMode && document.compatMode != 'BackCompat') ? document.documentElement : (document.body ? document.body : null); - - // Detect the browser's type - var nav = navigator.userAgent.toLowerCase(), ver = navigator.appVersion; - this.opera = window.opera && document.getElementById; - this.ie = nav.indexOf("msie") != -1 && document.all && this.docBody && !this.opera; - this.opera6 = this.opera && !document.defaultView; - this.operaOther = this.opera && !this.opera6; - this.ie7 = this.ie && parseFloat(ver.substring(ver.indexOf("MSIE")+5)) >= 7; - this.ie6 = this.ie && !this.ie7 && parseFloat(ver.substring(ver.indexOf("MSIE")+5)) >= 5.5; - var ns = !this.opera && document.defaultView && (typeof document.defaultView.getComputedStyle != "undefined"); - this.konqueror = ns && nav.indexOf('konqueror') != -1; - this.safari = ns && nav.indexOf('applewebkit') != -1; - this.ns6 = ns && !this.konqueror && !this.safari; - this.supported = this.docBody && (this.ie6 || this.ie7 || this.opera || this.ns6 || this.konqueror || this.safari); - - // Prepare the window size watching code - this.addEvent('SizeChanged'); - var _cid = this._cid; - window.onresize = function () { - Base.Comp.get(_cid).handleResize(); - }; - if (this.konqueror) { - this.addSlot('resizeTimer'); - this.timer = new Base.Timer(250, false); - this.timer.bindEvent('Tick', 'resizeTimer', this); - } - this.readSize(); - }, - - /** This method reads the current window's size. - */ - readSize: function () { - this.width = (this.ie ? this.docBody.offsetWidth : window.innerWidth); - this.height = (this.ie ? this.docBody.offsetHeight : window.innerHeight); - }, - - /** This method is called by the resize handler or, if the user is running Konqueror, - * by the timer that keeps track of resizing. It reads the current size, and if that - * size is different from the old size, it sends a SizeChanged(width,height) event. - */ - resizeTimer: function () { - var ow = this.width, oh = this.height; - this.readSize(); - if (ow != this.width || oh != this.height) { - this.onSizeChanged(this.width, this.height); - } - }, - - /** This method either forces the object to re-check the window's size or, if the - * user is running Konqueror, starts or restarts the update timer to prevent - * receiving multiple window update codes. - */ - handleResize: function () { - if (this.konqueror) { - this.timer.restart(); - return; - } - this.resizeTimer(); - } - -}, { - - /** This class property contains the single Base.Browser instance. - */ - singleton: null, - - /** This class method returns the Base.Browser instance after creating it - * if it didn't exist. - */ - get: function () { - if (!Base.Browser.singleton) { - Base.Browser.singleton = new Base.Browser(); - } - return Base.Browser.singleton; - } - -}); diff --git a/misc/Legacy Worlds.wdgt/lib/Base/Comp.js b/misc/Legacy Worlds.wdgt/lib/Base/Comp.js deleted file mode 100644 index 176aafc..0000000 --- a/misc/Legacy Worlds.wdgt/lib/Base/Comp.js +++ /dev/null @@ -1,217 +0,0 @@ -/** The Base.Comp class is the base class for all of the components. It provides the - * signal/slot framework that the components use, and allows access to components using - * their unique identifier. - */ -Base.Comp = Base.inherits({ - - /** The constructor initialises the component by assigning its identifier, creating the - * tables listing the slots, events and children, and creating the low-level slots and - * events common to all components. - */ - constructor: function () { - this._cid = ++ Base.Comp.lastId; - this._slots = new Base.Util.Hashtable(); - this._evts = new Base.Util.Hashtable(); - this._chld = new Base.Util.Hashtable(); - this._cnt = null; - - Base.Comp.list.put(this._cid, this); - Base.Comp.count ++; - - this.destroyChildren = false; - - this.addEvent('Destroy'); - this.addSlot('addChild'); - this.addSlot('removeChild'); - }, - - /** This method is responsible for the destruction of a component. It - * starts by launching the onDestroy() event; it then detaches the - * component's children (or destroy them if the destroyChildren member - * is set to true), then detaches all of the component's slots and - * events. Finally, it removes the reference to the component in the - * global components list. - */ - destroy: function () { - this.onDestroy(this._cid); - - var k = this._chld.keys(); - for (var i in k) { - var c = this._chld.get(k[i]); - if (this.destroyChildren) { - c.destroy(); - } else { - this.removeChild(c); - } - } - - k = this._slots.keys(); - for (var i in k) { - this._slots.get(k[i]).destroy(); - } - this._slots.clear(); - - k = this._evts.keys(); - for (var i in k) { - this._evts.get(k[i]).destroy(); - } - this._evts.clear(); - - Base.Comp.list.remove(this._cid); - Base.Comp.count --; - - for (var i in this) { - this[i] = null; - } - }, - - - /** This method declares a new slot for the current component. - * @param name the name of the slot to be declared - */ - addSlot: function (name) { - if (this._slots.containsKey(name) || !this[name]) { - return; - } - this._slots.put(name, new Base.Comp.Slot(name, this)); - }, - - /** This method generates a new event handler for the current component. - * @param name the name of the event to create - * @param propagate a boolean indicating the event propagates to the component's children - */ - addEvent: function (name, propagate) { - if (this._evts.containsKey(name) || this["on" + name]) { - return; - } - - this._evts.put(name, new Base.Comp.Evt(name, propagate)); - this["on" + name] = function() { - this.triggerEvent(name, arguments); - }; - this.addSlot('on' + name); - }, - - - /** This method binds an event from the current component to a slot on either the current - * component or, if the last parameter is present, another component. - * @param eName the name of the event to bind - * @param sName the name of the slots to bind an event to - * @param cmp the component on which to bind (if this parameter isn't passed, the current component is used) - */ - bindEvent: function (eName, sName, cmp) { - var e = this._evts.get(eName), c = (cmp ? cmp : this), s = c._slots.get(sName); - if (!(e && s)) { - return; - } - e.bind(s); - }, - - /** This method detaches an event from the current component from a slot to which it had been bound. - * @param eName the name of the event to detach - * @param sName the name of the slot to detach - * @param cmp the component on which the slot to detach is located - */ - detachEvent: function (eName, sName, cmp) { - var e = this._evts.get(eName), c = (cmp ? cmp : this), s = c._slots.get(sName); - if (!(e && s)) { - return; - } - e.detach(s); - }, - - - /** This method triggers the execution of an event on the current component. - * @param eName the name of the event to trigger - * @param args an array containing the arguments to be passed to the event's handlers - */ - triggerEvent: function (eName, args) { - var e = this._evts.get(eName); - if (!e) { - return; - } - - e.trigger.apply(e, args); - - if (!e.propagate) { - return; - } - - var k = this._chld.keys(); - for (i=0;i 0) ? x.substr(0, m) : ''), z; - for (z=0;z 0) { - this.preferences.put(keys[i], p); - } else { - this.preferences.put(keys[i], defs[i]); - } - } - } else { - // We're not inside Dashboard. Use defaults. - for (var i in keys) { - this.preferences.put(keys[i], defs[i]); - } - } - }, - - - getPreference: function (key) { - return (this.preferences.containsKey(key) ? this.preferences.get(key) : null); - }, - - - setPreference: function (key, value) { - if (this.preferences.containsKey(key) && typeof value == 'string') { - Base.Log.write("Setting preference " + key + " to '" + value + "'"); - this.preferences.put(key, value); - if (window.widget) { - widget.setPreferenceForKey(key, value); - } - } - }, - - showDebug: function () { - if (!this.debugPanel) { - this.debugPanel = new LWWidget.Debug(); - } - this.debugPanel.show(); - } - - -}, { - - // Base URL for the LegacyWorlds website. - base: 'http://www.legacyworlds.com', - - // Enable/disable debugging - debug: true, - - // This widget's version number - version: 1, - - // Main widget instance - main: null, - - // Password storage - password: '', - - // When the widget page is loaded, initialise the component - onLoad: function () { - new LWWidget(); - } - -}, "LWWidget"); diff --git a/misc/Legacy Worlds.wdgt/lib/LWWidget/Beta5.js b/misc/Legacy Worlds.wdgt/lib/LWWidget/Beta5.js deleted file mode 100644 index 2a4e2f0..0000000 --- a/misc/Legacy Worlds.wdgt/lib/LWWidget/Beta5.js +++ /dev/null @@ -1,77 +0,0 @@ -LWWidget.Beta5 = LWWidget.Game.inherits({ - - constructor: function (path) { - this.base(path); - this.pageElement = 'b5Display'; - - this.pages[0] = new LWWidget.Beta5.Player(this); - this.pages[1] = new LWWidget.Beta5.Planets(this); - this.pages[2] = new LWWidget.Beta5.Fleets(this); - this.pages[3] = new LWWidget.Beta5.Cash(this); - this.pages[4] = new LWWidget.Beta5.Techs(this); - this.pages[5] = new LWWidget.Beta5.Msg(this); - this.pages[6] = new LWWidget.Beta5.Forums(this); - this.pages[7] = new LWWidget.Beta5.Ticks(this); - - this.setPage('player'); - - this.addSlot('updateServerTime'); - this.stUpdate = new Base.Timer(1000, true); - this.stUpdate.bindEvent('Tick', 'updateServerTime', this); - this.stUpdate.start(); - }, - - destroy: function () { - this.stUpdate.destroy(); - this.base(); - }, - - - setData: function (data) { - this.base(data); - this.serverTime = parseInt(data.getAttribute('serverTime'), 10); - this.drawServerTime(); - }, - - - draw: function () { - var _e = document.getElementById('gDisplay'); - if (!_e) { - return; - } - - var _e2 = document.getElementById('b5Display'); - if (!_e2) { - _e.style.overflow = 'visible'; - _e.innerHTML = '' - + '' - + '' - + '
 
 
'; - } - this.drawServerTime(); - - this.base(); - }, - - - updateServerTime: function () { - if (!this.serverTime) { - return; - } - this.serverTime ++; - this.drawServerTime(); - }, - - drawServerTime: function (u) { - var _e = document.getElementById('serverTime'); - if (!_e || !this.serverTime) { - return; - } - - _e.innerHTML = LWWidget.Game.formatTime(this.serverTime); - } - -}); - -// Register the version -LWWidget.Game.versions().put('beta5', LWWidget.Beta5); diff --git a/misc/Legacy Worlds.wdgt/lib/LWWidget/Beta5/Cash.js b/misc/Legacy Worlds.wdgt/lib/LWWidget/Beta5/Cash.js deleted file mode 100644 index bcde32d..0000000 --- a/misc/Legacy Worlds.wdgt/lib/LWWidget/Beta5/Cash.js +++ /dev/null @@ -1,17 +0,0 @@ -LWWidget.Beta5.Cash = LWWidget.Game.Page.inherits({ - - setData: function (data) { - var _d = data.getChildren('Empire')[0].getChildren('Budget')[0]; - - this.income = parseInt(_d.getAttribute('income'), 10); - this.upkeep = parseInt(_d.getAttribute('upkeep'), 10); - this.profit = parseInt(_d.getAttribute('profit'), 10); - }, - - draw: function (_e) { - _e.innerHTML = '



Planetary income: €' + Base.Util.formatNumber(this.income) - + '

Fleet upkeep: €' + Base.Util.formatNumber(this.upkeep) - + '

Daily profit: €' + Base.Util.formatNumber(this.profit) + '

'; - } - -}); diff --git a/misc/Legacy Worlds.wdgt/lib/LWWidget/Beta5/Fleets.js b/misc/Legacy Worlds.wdgt/lib/LWWidget/Beta5/Fleets.js deleted file mode 100644 index a405286..0000000 --- a/misc/Legacy Worlds.wdgt/lib/LWWidget/Beta5/Fleets.js +++ /dev/null @@ -1,55 +0,0 @@ -LWWidget.Beta5.Fleets = LWWidget.Game.Page.inherits({ - - setData: function (data) { - var _d = data.getChildren('Empire')[0].getChildren('Fleets')[0]; - - this.fleets = parseInt(_d.getAttribute('count'), 10); - if (this.fleets) { - // Fleets in battle - this.inBattle = parseInt(_d.getAttribute('inBattle'), 10); - // Total fleet power - this.power = parseInt(_d.getAttribute('power'), 10); - // Ships types - this.gaships = parseInt(_d.getAttribute('gaships'), 10); - this.fighters = parseInt(_d.getAttribute('fighters'), 10); - this.cruisers = parseInt(_d.getAttribute('cruisers'), 10); - this.bcruisers = parseInt(_d.getAttribute('bcruisers'), 10); - // Upkeep - _d = data.getChildren('Empire')[0].getChildren('Budget')[0]; - this.upkeep = parseInt(_d.getAttribute('upkeep'), 10); - } - }, - - draw: function (_e) { - if (this.fleets == 0) { - _e.innerHTML = '

No fleets

'; - return; - } - - var _s = '

' + Base.Util.formatNumber(this.fleets) - + ' fleet' + (this.fleets > 1 ? 's' : ''); - if (this.inBattle) { - _s += ' (' + Base.Util.formatNumber(this.inBattle) + ' engaged in battle!)'; - } - _s += '

Total fleet power: ' + Base.Util.formatNumber(this.power) - + '
Upkeep: €' + Base.Util.formatNumber(this.upkeep) - + '

Ship types
'; - - if (this.gaships) { - _s += 'G.A. ships: ' + Base.Util.formatNumber(this.gaships) + '
'; - } - if (this.fighters) { - _s += 'Fighters: ' + Base.Util.formatNumber(this.fighters) + '
'; - } - if (this.cruisers) { - _s += 'Cruisers: ' + Base.Util.formatNumber(this.cruisers) + '
'; - } - if (this.bcruisers) { - _s += 'Battle Cruisers: ' + Base.Util.formatNumber(this.bcruisers) + '
'; - } - _s += '

'; - - _e.innerHTML = _s; - } - -}); diff --git a/misc/Legacy Worlds.wdgt/lib/LWWidget/Beta5/Forums.js b/misc/Legacy Worlds.wdgt/lib/LWWidget/Beta5/Forums.js deleted file mode 100644 index 4e4d3e2..0000000 --- a/misc/Legacy Worlds.wdgt/lib/LWWidget/Beta5/Forums.js +++ /dev/null @@ -1,125 +0,0 @@ -LWWidget.Beta5.Forums = LWWidget.Game.Page.inherits({ - - switchMode: function () { - this.details = !this.details; - this.game.draw(); - }, - - setData: function (data) { - var _f = data.getChildren('Communications')[0].getChildren('Forums')[0]; - - // Read general forums - var gf = _f.getChildren('GeneralForums'), gcats = new Base.Util.Hashtable(); - for (var i in gf) { - var c = gf[i], desc = c.getChildren('Description')[0].getText(), - cf = c.getChildren('Forum'), forums = new Array(); - for (var j in cf) { - forums.push([cf[j].getText(), parseInt(cf[j].getAttribute('topics'), 10), parseInt(cf[j].getAttribute('unread'), 10)]); - } - gcats.put(desc, forums); - } - - // Read alliance forums - var af = _f.getChildren('AllianceForums'), aForums = new Array(); - if (af.length) { - af = af[0].getChildren('Forum'); - for (var i in af) { - aForums.push([af[i].getText(), parseInt(af[i].getAttribute('topics'), 10), parseInt(af[i].getAttribute('unread'), 10)]); - } - } - - // Store data - this.general = gcats; - this.alliance = aForums; - }, - - - show: function () { - this.details = false; - }, - - draw: function (_e) { - if (this.details) { - _e.innerHTML = this.getDetailedHTML(); - } else { - _e.innerHTML = this.getShortHTML(); - } - }, - - - getShortHTML: function () { - var text = new Array(), gk = this.general.keys(); - for (var i in gk) { - text.push(this.catSummary(gk[i], this.general.get(gk[i]))); - } - - if (this.alliance.length) { - text.push(this.catSummary('Alliance forums', this.alliance)); - } - - return '

' + text.join('
') + '

Show details'; - }, - - catSummary: function (name, list) { - var s = '' + name + ': '; - - var unread = this.countUnread(list); - if (unread > 0) { - s += '' + Base.Util.formatNumber(unread) + ' unread topic' + (unread > 1 ? 's' : ''); - } else { - s += 'no unread topics'; - } - return s; - }, - - countUnread: function (forums) { - var s = 0; - for (var i in forums) { - s += forums[i][2]; - } - return s; - }, - - - getDetailedHTML: function () { - var text = new Array(), gk = this.general.keys(); - - for (var i in gk) { - text.push(this.catDetailed(gk[i], this.general.get(gk[i]))); - } - - if (this.alliance.length) { - text.push(this.catDetailed('Alliance forums', this.alliance)); - } - - return '

Hide details

' + text.join('

'); - }, - - catDetailed: function (name, forums) { - if (!forums.length) { - return ""; - } - - var text = new Array(); - - text.push('' + name + ''); - for (var i in forums) { - var f = forums[i], s = '' + f[0] + ': '; - - if (f[1]) { - s += '' + Base.Util.formatNumber(f[1]) + ' topic' + (f[1] > 1 ? 's' : ''); - if (f[2]) { - s += ' (' + Base.Util.formatNumber(f[2]) + ' unread)'; - } - } else { - s += 'empty forum'; - } - text.push(s); - } - - return text.join('
'); - } - -}); diff --git a/misc/Legacy Worlds.wdgt/lib/LWWidget/Beta5/Msg.js b/misc/Legacy Worlds.wdgt/lib/LWWidget/Beta5/Msg.js deleted file mode 100644 index 682b04f..0000000 --- a/misc/Legacy Worlds.wdgt/lib/LWWidget/Beta5/Msg.js +++ /dev/null @@ -1,71 +0,0 @@ -LWWidget.Beta5.Msg = LWWidget.Game.Page.inherits({ - - setData: function (data) { - var _d = data.getChildren('Communications')[0].getChildren('Messages')[0]; - - // Get default folders - var _f = _d.getChildren('DefaultFolder'); - for (var i in _f) { - var _a = [parseInt(_f[i].getAttribute('all'), 10), parseInt(_f[i].getAttribute('new'), 10)]; - switch (_f[i].getAttribute('id')) { - case 'IN': this.inbox = _a; break; - case 'INT': this.internal = _a; break; - case 'OUT': this.outbox = _a; break; - } - } - - // Get custom folders - this.custom = new Base.Util.Hashtable(); - _f = _d.getChildren('CustomFolder'); - for (var i in _f) { - this.custom.put(_f[i].getAttribute('id'), [parseInt(_f[i].getAttribute('all'), 10), parseInt(_f[i].getAttribute('new'), 10), _f[i].getText()]); - } - }, - - show: function () { - this.dCustom = false; - }, - - draw: function (_e) { - var _s = '

'; - _s += this.folderCode('Inbox', this.inbox[0], this.inbox[1]) + '
'; - _s += this.folderCode('Transmissions', this.internal[0], this.internal[1]) + '
' - _s += this.folderCode('Sent messages', this.outbox[0], this.outbox[1]) + '

'; - - if (this.custom.isEmpty()) { - _s += 'No custom folders'; - } else if (this.dCustom) { - _s += 'Hide custom folders
'; - var cf = this.custom.values(); - for (var i in cf) { - _s += this.folderCode(cf[i][2], cf[i][0], cf[i][1]) + '
'; - } - } else { - _s += 'Display custom folders'; - } - - _s += '

'; - _e.innerHTML = _s; - }, - - folderCode: function (name, a, n) { - var _s = '' + name + ': '; - if (a) { - if (n) { - _s += '' + Base.Util.formatNumber(n) + ' new message' + (n > 1 ? 's' : ''); - } else { - _s += 'no new messages'; - } - _s += ' (' + Base.Util.formatNumber(a) + ' total)'; - } else { - _s += 'no messages'; - } - return _s; - }, - - switchCustom: function () { - this.dCustom = !this.dCustom; - this.game.draw(); - } - -}); diff --git a/misc/Legacy Worlds.wdgt/lib/LWWidget/Beta5/Planets.js b/misc/Legacy Worlds.wdgt/lib/LWWidget/Beta5/Planets.js deleted file mode 100644 index 1cdaaa3..0000000 --- a/misc/Legacy Worlds.wdgt/lib/LWWidget/Beta5/Planets.js +++ /dev/null @@ -1,86 +0,0 @@ -LWWidget.Beta5.Planets = LWWidget.Game.Page.inherits({ - - setData: function (data) { - var _d = data.getChildren('Empire')[0].getChildren('Planets')[0]; - - this.planets = parseInt(_d.getAttribute('count'), 10); - this.pList = new Array(); - if (this.planets) { - // Planets under attack - this.underAttack = parseInt(_d.getAttribute('siege'), 10); - // Happiness / Corruption - this.avgHappiness = parseInt(_d.getAttribute('avgHap'), 10); - this.avgCorruption = parseInt(_d.getAttribute('avgCor'), 10); - // Population - this.totPopulation = parseInt(_d.getAttribute('totPop'), 10); - this.avgPopulation = parseInt(_d.getAttribute('avgPop'), 10); - // Factories - this.totFactories = parseInt(_d.getAttribute('totFac'), 10); - this.avgFactories = parseInt(_d.getAttribute('avgFac'), 10); - // Factories - this.totTurrets = parseInt(_d.getAttribute('totTur'), 10); - this.avgTurrets = parseInt(_d.getAttribute('avgTur'), 10); - - // Planet list - var _l = _d.getChildren('List')[0].getChildren('Planet'); - for (var i in _l) { - this.pList.push(_l[i].getText()); - } - } - }, - - show: function () { - this.mode = 0; - }, - - draw: function (_e) { - _e.innerHTML = (this.mode == 0 || !this.planets) ? this.getStats() : this.getList(); - }, - - setMode: function (m) { - this.mode = m; - if (this.game) { - this.game.draw(); - } - }, - - - getStats: function () { - if (this.planets == 0) { - return '

No planets.

'; - } - - var _s = '

' + Base.Util.formatNumber(this.planets) + ' planet' - + (this.planets > 1 ? 's' : '') + '
'; - if (this.underAttack) { - _s += '' + Base.Util.formatNumber(this.underAttack) + ' planet' - + (this.underAttack > 1 ? 's' : '') + ' under attack!'; - } else { - _s += 'No planets under attack'; - } - - _s += '

Average happiness: ' + this.avgHappiness + '%
Average corruption: ' - + this.avgCorruption + '%
Population: ' + Base.Util.formatNumber(this.totPopulation) + ''; - if (this.planets > 1) { - _s += ' (' + Base.Util.formatNumber(this.avgPopulation) + ' on average)'; - } - _s += '
Factories: ' + Base.Util.formatNumber(this.totFactories) + ''; - if (this.planets > 1) { - _s += ' (' + Base.Util.formatNumber(this.avgFactories) + ' on average)'; - } - _s += '
Turrets: ' + Base.Util.formatNumber(this.totTurrets) + ''; - if (this.planets > 1) { - _s += ' (' + Base.Util.formatNumber(this.avgTurrets) + ' on average)'; - } - _s += '

View list

'; - - return _s; - }, - - getList: function () { - return '

<<- Back

' - + this.pList.join('
') + '

'; - } - -}); diff --git a/misc/Legacy Worlds.wdgt/lib/LWWidget/Beta5/Player.js b/misc/Legacy Worlds.wdgt/lib/LWWidget/Beta5/Player.js deleted file mode 100644 index cec2b9d..0000000 --- a/misc/Legacy Worlds.wdgt/lib/LWWidget/Beta5/Player.js +++ /dev/null @@ -1,82 +0,0 @@ -LWWidget.Beta5.Player = LWWidget.Game.Page.inherits({ - - setData: function (data) { - var _d = data.getChildren('Player')[0]; - - // Player name and cash - this.playerName = _d.getAttribute('name'); - this.cash = _d.getAttribute('cash'); - - // Alliance status - var _a = _d.getChildren('Alliance'); - if (_a.length) { - _a = _a[0]; - this.alliance = { joined: (_a.getAttribute('inalliance') == '1'), tag: _a.getAttribute('tag') }; - } else { - this.alliance = null; - } - - // General rankings - _a = _d.getChildren('Rankings')[0]; - var _r = _a.getChildren('Ranking'); - for (var i in _r) { - if (_r[i].getText() != 'General Ranking') { - continue; - } - this.points = _r[i].getAttribute('points'); - this.rank = _r[i].getAttribute('rank'); - break; - } - - // Planets / planets under attack - _d = data.getChildren('Empire')[0].getChildren('Planets')[0]; - this.planets = parseInt(_d.getAttribute('count'), 10); - this.underAttack = parseInt(_d.getAttribute('siege'), 10); - - // Fleets / fleets in battle - _d = data.getChildren('Empire')[0].getChildren('Fleets')[0]; - this.fleets = parseInt(_d.getAttribute('count'), 10); - this.inBattle = parseInt(_d.getAttribute('inBattle'), 10); - }, - - draw: function (_e) { - if (!this.playerName) { - return; - } - - var str = '

Player ' + this.playerName + ''; - if (this.alliance && this.alliance.joined) { - str += ' [' + this.alliance.tag + ']'; - } else if (this.alliance && !this.alliance.joined) { - str += '
Requesting to join alliance [' + this.alliance.tag + ']'; - } - - str += '

Cash: €' + Base.Util.formatNumber(this.cash) + '' - + '
General ranking: #' + Base.Util.formatNumber(this.rank) + ' (' - + Base.Util.formatNumber(this.points) + ' points)

'; - - if (this.planets == 0) { - str += "No planets"; - } else { - str += '' + Base.Util.formatNumber(this.planets) + ' planet' + (this.planets > 1 ? 's' : ''); - if (this.underAttack > 0) { - str += ' (' + Base.Util.formatNumber(this.underAttack) + ' under attack!)'; - } - } - str += '
'; - - if (this.fleets == 0) { - str += "No fleets"; - } else { - str += '' + Base.Util.formatNumber(this.fleets) + ' fleet' + (this.fleets > 1 ? 's' : ''); - if (this.inBattle > 0) { - str += ' (' + Base.Util.formatNumber(this.inBattle) + ' in battle)'; - } - } - - str += '

'; - - _e.innerHTML = str; - } - -}); diff --git a/misc/Legacy Worlds.wdgt/lib/LWWidget/Beta5/Techs.js b/misc/Legacy Worlds.wdgt/lib/LWWidget/Beta5/Techs.js deleted file mode 100644 index 03a12ea..0000000 --- a/misc/Legacy Worlds.wdgt/lib/LWWidget/Beta5/Techs.js +++ /dev/null @@ -1,37 +0,0 @@ -LWWidget.Beta5.Techs = LWWidget.Game.Page.inherits({ - - setData: function (data) { - var _d = data.getChildren('Empire')[0].getChildren('Research')[0]; - - this.points = parseInt(_d.getAttribute('points'), 10); - this.newTechs = parseInt(_d.getAttribute('new'), 10); - this.foreseen = parseInt(_d.getAttribute('foreseen'), 10); - - _d = _d.getChildren('RBudget')[0]; - this.fundamental = parseInt(_d.getAttribute('fundamental'), 10); - this.military = parseInt(_d.getAttribute('military'), 10); - this.civilian = parseInt(_d.getAttribute('civilian'), 10); - }, - - draw: function (_e) { - var _s = '

'; - if (this.newTechs == 0) { - _s += 'No new technologies discovered.'; - } else { - _s += '' + this.newTechs + ' new technolog' + (this.newTechs > 1 ? 'ies' : 'y') + ' discovered.'; - } - _s += '
'; - if (this.foreseen == 0) { - _s += 'No breakthroughs foreseen.'; - } else { - _s += '' + this.foreseen + ' breakthrough' + (this.foreseen > 1 ? 's' : '') + ' foreseen.'; - } - _s += '

Research budget

' + Base.Util.formatNumber(this.points) + ' research points per day
' - + this.fundamental + '% allocated to Fundamental research
' - + this.military + '% allocated to Military research
' - + this.civilian + '% allocated to Civilian research

'; - - _e.innerHTML = _s; - } - -}); diff --git a/misc/Legacy Worlds.wdgt/lib/LWWidget/Beta5/Ticks.js b/misc/Legacy Worlds.wdgt/lib/LWWidget/Beta5/Ticks.js deleted file mode 100644 index 30a0626..0000000 --- a/misc/Legacy Worlds.wdgt/lib/LWWidget/Beta5/Ticks.js +++ /dev/null @@ -1,121 +0,0 @@ -LWWidget.Beta5.Ticks = LWWidget.Game.Page.inherits({ - - constructor: function (game) { - this.base(game); - - this.addSlot('update'); - this.timer = new Base.Timer(1000, true); - this.timer.bindEvent('Tick', 'update', this); - }, - - destroy: function () { - this.timer.destroy(); - this.base(); - }, - - - setData: function (data) { - var tList = data.getChildren('Ticks')[0].getChildren('Tick'), ticks = new Array(); - - for (var i in tList) { - var tick = new Array(); - tick[0] = tList[i].getText(); - tick[1] = parseInt(tList[i].getAttribute('first'), 10); - tick[2] = parseInt(tList[i].getAttribute('interval'), 10); - - var l = tList[i].getAttribute('last'); - if (typeof l == 'string') { - tick[3] = parseInt(l, 10); - } else { - tick[3] = null; - } - - ticks.push(tick); - } - - this.tDiff = (new Date()).getTime() - (parseInt(data.getAttribute('serverTime'), 10) * 1000); - this.ticks = ticks; - }, - - - show: function () { - this.timer.start(); - }, - - hide: function () { - this.timer.stop(); - }, - - - draw: function (_e) { - var text = new Array(); - - for (var i in this.ticks) { - text.push('Next ' + this.ticks[i][0] + ':  '); - } - - _e.innerHTML = '

' + text.join('
') + '

'; - this.update(); - }, - - - update: function () { - this.computeNextTicks(); - - for (var i in this.ticks) { - var t; - - if (typeof this.ticks[i][5] == 'number') { - var d, h, m, s; - - h = this.ticks[i][5] % 86400; d = (this.ticks[i][5] - h) / 86400; - m = h % 3600; h = (h - m) / 3600; - s = m % 60; m = (m - s) / 60; - - if (h < 10) { h = '0' + h; } - if (m < 10) { m = '0' + m; } - if (s < 10) { s = '0' + s; } - - t = '' + h + ':' + m + ':' + s + ''; - if (d > 0) { - t = '' + d + ' day' + (d > 1 ? 's' : '') + ', ' + t; - } - } else { - t = 'never'; - } - - var e = document.getElementById('dtick' + i); - if (!e) { - break; - } - e.innerHTML = t; - } - }, - - computeNextTicks: function () { - var now = Math.round(((new Date()).getTime() - this.tDiff) / 1000); - for (var i in this.ticks) { - if (this.ticks[i][3] && now > this.ticks[i][3]) { - this.ticks[i][4] = null; - continue; - } - - if (now <= this.ticks[i][1]) { - this.ticks[i][4] = this.ticks[i][1]; - continue; - } - - var d = now - this.ticks[i][1], m = (d - (d % this.ticks[i][2])) / this.ticks[i][2]; - this.ticks[i][4] = this.ticks[i][1] + (m + 1) * this.ticks[i][2]; - } - - for (var i in this.ticks) { - if (typeof this.ticks[i][4] != 'number') { - this.ticks[i][5] = null; - } else { - this.ticks[i][5] = this.ticks[i][4] - now; - } - } - } - -}); diff --git a/misc/Legacy Worlds.wdgt/lib/LWWidget/Data.js b/misc/Legacy Worlds.wdgt/lib/LWWidget/Data.js deleted file mode 100644 index 44cc265..0000000 --- a/misc/Legacy Worlds.wdgt/lib/LWWidget/Data.js +++ /dev/null @@ -1,25 +0,0 @@ -LWWidget.Data = Base.inherits({ - - constructor: function (name) { - this.base(); - this.name = name; - this.attributes = new Base.Util.Hashtable(); - }, - - setAttribute: function (name, value) { - this.attributes.put(name, value); - }, - - getAttribute: function (name) { - return (this.attributes.containsKey(name) ? this.attributes.get(name) : null); - }, - - getChildren: function (name) { - return new Array(); - }, - - getText: function () { - return ""; - } - -}); diff --git a/misc/Legacy Worlds.wdgt/lib/LWWidget/Data/Leaf.js b/misc/Legacy Worlds.wdgt/lib/LWWidget/Data/Leaf.js deleted file mode 100644 index 217326a..0000000 --- a/misc/Legacy Worlds.wdgt/lib/LWWidget/Data/Leaf.js +++ /dev/null @@ -1,12 +0,0 @@ -LWWidget.Data.Leaf = LWWidget.Data.inherits({ - - constructor: function (name, text) { - this.base(name); - this.text = text; - }, - - getText: function () { - return this.text; - } - -}); diff --git a/misc/Legacy Worlds.wdgt/lib/LWWidget/Data/Loader.js b/misc/Legacy Worlds.wdgt/lib/LWWidget/Data/Loader.js deleted file mode 100644 index fccddc8..0000000 --- a/misc/Legacy Worlds.wdgt/lib/LWWidget/Data/Loader.js +++ /dev/null @@ -1,130 +0,0 @@ -LWWidget.Data.Loader = Base.Comp.inherits({ - - constructor: function (login, password) { - this.base(); - - this.addEvent('CommError'); - this.addEvent('FatalError'); - this.addEvent('Kick'); - this.addEvent('Load'); - this.addEvent('LoginFailure'); - this.addEvent('Maintenance'); - - this.addSlot('loaderDestroyed'); - this.addSlot('dataReceived'); - - this.loader = new Base.XMLLoader('', true); - this.loader.bindEvent('Destroy', 'loaderDestroyed', this); - this.loader.bindEvent('NetworkError', 'onCommError', this); - this.loader.bindEvent('ServerError', 'onCommError', this); - this.loader.bindEvent('Timeout', 'onCommError', this); - this.loader.bindEvent('Unsupported', 'onCommError', this); - this.loader.bindEvent('Aborted', 'onCommError', this); - this.loader.bindEvent('Loaded', 'dataReceived', this); - - this.params = new Base.Util.Hashtable(); - this.params.put('__s', '1'); - this.params.put('__l', login); - this.params.put('__p', password); - }, - - destroy: function () { - if (this.loader) { - this.loader.destroy(); - } - this.base(); - }, - - - load: function (from) { - if (this.loader.isLoading) { - return false; - } - this.loader.changeParameters(LWWidget.base + '/index.php/' + from + '.xml'); - this.loader.load(this.params); - }, - - - loaderDestroyed: function () { - this.loader = null; - }, - - - dataReceived: function (data) { - var _xml = Base.Util.parseXML(data); - if (!_xml) { - this.onCommError(); - return; - } - - var _doc = _xml.documentElement; - if (_doc.nodeName == 'Maintenance') { - var _r, _u, _c; - _r = LWWidget.Data.Loader.getXMLText(_doc, 'Reason'); - _u = LWWidget.Data.Loader.getXMLText(_doc, 'Until'); - _c = LWWidget.Data.Loader.getXMLText(_doc, 'Current'); - this.onMaintenance(_r, _u, _c); - } else if (_doc.nodeName == 'FatalError') { - this.onFatalError(_doc.getAttribute('code'), LWWidget.Data.Loader.getXMLText(_doc, 'Text')); - } else if (_doc.nodeName == 'Kicked') { - this.onKick(LWWidget.Data.Loader.getXMLText(_doc, 'Reason')); - } else if (_doc.nodeName == 'Failed') { - this.onLoginFailure(_doc.getAttribute('code')); - } else { - var _data = LWWidget.Data.Loader.parse(_doc); - if (_data) { - this.onLoad(_data); - } else { - this.onCommError(); - } - } - } - -}, { - - getXMLText: function (node, name) { - var _t = ''; - for (var i=0;iFlush log - Hide' - + '
 
'; - document.getElementById('debugDiv').innerHTML = _str; - this.drawLog(); - }, - - clear: function () { - Base.Log.flush(); - this.drawLog(); - }, - - drawLog: function () { - var _e = document.getElementById('dbgContents'); - if (!_e) { - return; - } - - var _l = Base.Log.get(); - if (_l.length == this.lastLength) { - return; - } - this.lastLength = _l.length; - - var _s; - if (_l.length == 0) { - _s = '

The log is empty

'; - } else { - _s = '

'; - for (var i=_l.length;i>0;i--) { - _s += '[' + i + '] ' + _l[i-1] + '
'; - } - _s += '

'; - } - _e.innerHTML = _s; - } - -}); diff --git a/misc/Legacy Worlds.wdgt/lib/LWWidget/Game.js b/misc/Legacy Worlds.wdgt/lib/LWWidget/Game.js deleted file mode 100644 index 289e4c7..0000000 --- a/misc/Legacy Worlds.wdgt/lib/LWWidget/Game.js +++ /dev/null @@ -1,168 +0,0 @@ -LWWidget.Game = Base.Comp.inherits({ - - constructor: function (path) { - this.base(); - this.path = path; - - this.addEvent('RequestUpdate'); - this.addSlot('startDataUpdate'); - - this.pageElement = 'gDisplay'; - - this.autoUpdate = new Base.Timer(30000, true); - this.autoUpdate.bindEvent('Tick', 'startDataUpdate', this); - this.autoUpdate.start(); - - this.pages = [null, null, null, null, null, null, null, null]; - this.page = null; - this.data = null; - }, - - destroy: function () { - this.autoUpdate.destroy(); - if (this.page) { - this.page.hide(); - this.page = null; - } - for (var i in this.pages) { - if (this.pages[i]) { - var _p = this.pages[i]; - this.pages[i] = null; - _p.destroy(); - } - } - this.base(); - }, - - - startDataUpdate: function () { - this.onRequestUpdate(this.path); - }, - - setData: function (data) { - this.data = data; - for (var i in this.pages) { - if (this.pages[i]) { - this.pages[i].setData(data); - } - } - this.draw(); - }, - - - setPage: function (pName) { - // Check for a valid page name - if (!LWWidget.Game.pageMap().containsKey(pName)) { - return; - } - - // Check if something was changed - var _p = this.pages[LWWidget.Game.pageMap().get(pName)]; - if (_p && this.page && _p._cid == this.page._cid || !(_p || this.page)) { - return; - } - - // Hide current page and show new page - if (this.page) { - this.page.hide(); - } - this.page = _p; - if (_p) { - this.page.show(); - } - this.draw(); - }, - - draw: function () { - var _e = document.getElementById(this.pageElement); - if (_e) { - if (this.page) { - this.page.draw(_e); - } else { - _e.innerHTML = '

Page not implemented

'; - } - } - }, - - show: function () { - this.startDataUpdate(); - this.autoUpdate.start(); - if (this.page) { - this.page.show(); - } - }, - - hide: function () { - this.autoUpdate.stop(); - if (this.page) { - this.page.hide(); - } - } - -}, { - - pageMapInst: null, - - versionsInst: null, - - pageMap: function () { - if (!LWWidget.Game.pageMapInst) { - var _h = new Base.Util.Hashtable(); - _h.put('player', 0); - _h.put('planets', 1); - _h.put('fleets', 2); - _h.put('budget', 3); - _h.put('tech', 4); - _h.put('msg', 5); - _h.put('forums', 6); - _h.put('ticks', 7); - LWWidget.Game.pageMapInst = _h; - } - return LWWidget.Game.pageMapInst; - }, - - versions: function () { - if (!LWWidget.Game.versionsInst) { - LWWidget.Game.versionsInst = new Base.Util.Hashtable(); - } - return LWWidget.Game.versionsInst; - }, - - formatTime: function (ts) { - var d = new Date(ts * 1000); - var str, s2; - - s2 = d.getUTCHours().toString(); - if (s2.length == 1) { - s2 = "0" + s2; - } - str = s2 + ':'; - - s2 = d.getUTCMinutes().toString(); - if (s2.length == 1) { - s2 = "0" + s2; - } - str += s2 + ':'; - - s2 = d.getUTCSeconds().toString(); - if (s2.length == 1) { - s2 = "0" + s2; - } - str += s2 + ' on '; - - s2 = d.getUTCDate().toString(); - if (s2.length == 1) { - s2 = "0" + s2; - } - str += s2 + '/'; - - s2 = (d.getUTCMonth() + 1).toString(); - if (s2.length == 1) { - s2 = "0" + s2; - } - str += s2 + '/' + d.getUTCFullYear(); - - return str; - } - -}); diff --git a/misc/Legacy Worlds.wdgt/lib/LWWidget/Game/Page.js b/misc/Legacy Worlds.wdgt/lib/LWWidget/Game/Page.js deleted file mode 100644 index 18c1a0d..0000000 --- a/misc/Legacy Worlds.wdgt/lib/LWWidget/Game/Page.js +++ /dev/null @@ -1,34 +0,0 @@ -LWWidget.Game.Page = Base.Comp.inherits({ - - constructor: function (game) { - this.base(); - - this.addSlot('gameDestroyed'); - this.game = game; - this.game.bindEvent('Destroy', 'gameDestroyed', this); - }, - - writeContents: function (contents) { - var e = document.getElementById('gDisplay'); - if (e) { - e.innerHTML = contents; - } - }, - - gameDestroyed: function () { - this.game = null; - }, - - setData: function (data) { - }, - - draw: function (_e) { - }, - - show: function () { - }, - - hide: function () { - } - -}); diff --git a/misc/Legacy Worlds.wdgt/lib/LWWidget/GameDisplay.js b/misc/Legacy Worlds.wdgt/lib/LWWidget/GameDisplay.js deleted file mode 100644 index 10fe24e..0000000 --- a/misc/Legacy Worlds.wdgt/lib/LWWidget/GameDisplay.js +++ /dev/null @@ -1,73 +0,0 @@ -LWWidget.GameDisplay = LWWidget.Page.inherits({ - - constructor: function () { - this.base(); - - this.addSlot('gameDestroyed'); - this.addEvent('Refresh'); - - this.gPath = ''; - this.game = null; - }, - - destroy: function () { - if (this.game) { - this.game.destroy(); - } - this.base(); - }, - - - setGame: function (gClass, gPath) { - if (this.game) { - this.game.destroy(); - } - this.game = new gClass(gPath); - this.game.bindEvent('Destroy', 'gameDestroyed', this); - this.game.bindEvent('RequestUpdate', 'onRefresh', this); - }, - - gameDestroyed: function () { - this.game = null; - }, - - - handleData: function (data) { - if (this.game) { - this.game.setData(data); - } - }, - - - hide: function () { - if (this.game) { - this.game.hide(); - } - }, - - - show: function () { - if (this.game) { - this.game.show(); - } - this.draw(); - }, - - - setPage: function (pName) { - if (this.game) { - this.game.setPage(pName); - } - }, - - - draw: function () { - if (!document.getElementById('gDisplay')) { - this.writeContents('
 
'); - } - if (this.game) { - this.game.draw(); - } - } - -}); diff --git a/misc/Legacy Worlds.wdgt/lib/LWWidget/GameSelector.js b/misc/Legacy Worlds.wdgt/lib/LWWidget/GameSelector.js deleted file mode 100644 index 8c4ce54..0000000 --- a/misc/Legacy Worlds.wdgt/lib/LWWidget/GameSelector.js +++ /dev/null @@ -1,65 +0,0 @@ -LWWidget.GameSelector = LWWidget.Page.inherits({ - - constructor: function () { - this.base(); - this.games = []; - - this.addEvent('Select'); - }, - - - setGames: function (games) { - if (games instanceof Array) { - this.games = games; - this.draw(); - } - }, - - - draw: function () { - var cc = '"return Base.Comp.get(' + this._cid + ').select()"', - st = ' style="color:white;font-size:13px;background-color:#3f7fff;width:100%" ', - st2 = ' style="color:white;font-size:13px;background-color:#3f7fff" ', - str = '
' - + '' - + '' - + '' - + '' - + '' - + '' - + '
Game selection
 
' - + '
 
'; - this.writeContents(str); - - var _cb = document.getElementById('grem'); - if (_cb) { - _cb.checked = (LWWidget.main.getPreference('lwRemGame') == '1'); - } - }, - - select: function () { - var _s = document.getElementById('gsel'); - if (!_s) { - return false; - } - - var sv = parseInt(_s.options[_s.selectedIndex].value, 10), rem = document.getElementById('grem').checked; - LWWidget.main.setPreference('lwRemGame', rem ? '1' : '0'); - if (rem) { - LWWidget.main.setPreference('lwGame', this.games[sv].path); - } - - this.onSelect(this.games[sv]); - - return false; - } - -}); diff --git a/misc/Legacy Worlds.wdgt/lib/LWWidget/Login.js b/misc/Legacy Worlds.wdgt/lib/LWWidget/Login.js deleted file mode 100644 index 5355abb..0000000 --- a/misc/Legacy Worlds.wdgt/lib/LWWidget/Login.js +++ /dev/null @@ -1,77 +0,0 @@ -LWWidget.Login = LWWidget.Page.inherits({ - - constructor: function () { - this.base(); - this.addEvent('Login'); - this.error = ""; - }, - - draw: function () { - var cc = '"return Base.Comp.get(' + this._cid + ').login()"', - st = ' style="color:white;font-size:13px;background-color:#3f7fff;width:100%" ', - st2 = ' style="color:white;font-size:13px;background-color:#3f7fff" ', - str = '
' - + '' - + '' - + '' - + '' - + '' - + '' - + '
' - + '
' - + '
' - + '
 
 
 
'; - this.writeContents(str); - this.fillForm(); - }, - - fillForm: function () { - var l = LWWidget.main.getPreference('lwLogin'), p = LWWidget.main.getPreference('lwPassword'), r = LWWidget.main.getPreference('lwRemAuth'); - if (!document.getElementById('lname')) { - return; - } - document.getElementById('lname').value = l; - document.getElementById('lpass').value = p; - document.getElementById('lrem').checked = (r == '1'); - document.getElementById("lerror").innerHTML = (this.error == "") ? ' ' : this.error; - }, - - - setError: function (error) { - this.error = error; - var e = document.getElementById("lerror"); - if (e) { - e.innerHTML = (error == "") ? ' ' : error; - } - }, - - - login: function () { - if (!document.getElementById('lname')) { - return false; - } - - var l = document.getElementById('lname').value, p = document.getElementById('lpass').value, - r = document.getElementById('lrem').checked ? '1' : '0'; - - if (l == '') { - this.setError("Please type in your username"); - } else if (p == '') { - this.setError("Please type in your password"); - } else { - // Save the login as a preference and store the rest until we're sure - LWWidget.main.setPreference('lwLogin', l); - LWWidget.main.setPreference('lwRemAuth', r); - LWWidget.main.password = p; - - this.onLogin(); - } - - return false; - } - -}); diff --git a/misc/Legacy Worlds.wdgt/lib/LWWidget/Main.js b/misc/Legacy Worlds.wdgt/lib/LWWidget/Main.js deleted file mode 100644 index c7eda09..0000000 --- a/misc/Legacy Worlds.wdgt/lib/LWWidget/Main.js +++ /dev/null @@ -1,392 +0,0 @@ -LWWidget.Main = Base.Comp.inherits({ - - constructor: function () { - this.base(); - - this.addEvent('Show'); - this.addEvent('Hide'); - this.addSlot('draw'); - this.bindEvent('Show', 'draw'); - - // Game-related slots - this.addSlot('login'); - this.addSlot('loadGame'); - this.addSlot('loadData'); - - // Version management slots - this.addSlot('versionError'); - this.addSlot('versionNewAvailable'); - this.addSlot('versionNewRequired'); - this.addSlot('versionOk'); - - // Generate the menu - this.makeMenu(); - - // Version checker - this.versionCheck = new LWWidget.VersionCheck(); - this.versionPage = new LWWidget.NewVersion(); - this.versionCheck.bindEvent('CommError', 'versionError', this); - this.versionCheck.bindEvent('NewVersion', 'versionNewAvailable', this); - this.versionCheck.bindEvent('RequiredVersion', 'versionNewRequired', this); - this.versionCheck.bindEvent('VersionOk', 'versionOk', this); - this.versionChecked = false; - - // Login page - this.loginPage = new LWWidget.Login(); - this.loginPage.bindEvent('Login', 'login', this); - - // Game selection page - this.gameSelector = new LWWidget.GameSelector(); - this.gameSelector.bindEvent('Select', 'loadGame', this); - - // Game display - this.gameDisplay = new LWWidget.GameDisplay(this); - this.gameDisplay.bindEvent('Refresh', 'loadData', this); - - // Generic text display - this.textPage = new LWWidget.TextPage(); - - // FIXME: Set Dashboard-specific event handlers - // this.initDashboard(); - - // FIXME: should use saved password if possible - this.page = this.loginPage; - this.menu.setMode('out'); - this.state = 0; - - this.onShow(); // FIXME: use Dashboard events if possible - }, - - - initDashboard: function () { - if (window.widget) { - var _cid = this._cid; - widget.onshow = function () { - if (Base) { - Base.Comp.get(_cid).onShow(); - } - }; - widget.onhide = function () { - if (Base) { - Base.Comp.get(_cid).onHide(); - } - }; - } - }, - - - makeMenu: function () { - var _m; - this.menu = new LWWidget.Menu(); - this.addSlot('menuCommand'); - this.menu.bindEvent('Click', 'menuCommand', this); - - // Waiting - _m = this.menu.newMode('wait'); - _m.addItem(new LWWidget.Menu.Text('Loading ... Please wait ...')); - - // New version available - _m = this.menu.newMode('nvAvail'); - _m.addItem(new LWWidget.Menu.Text('New version!     ')); - _m.addItem(new LWWidget.Menu.Command('continue', 'Continue')); - _m.addItem(new LWWidget.Menu.Command('logout', 'Log out')); - - // New version required - _m = this.menu.newMode('nvReq'); - _m.addItem(new LWWidget.Menu.Text('Update required     ')); - _m.addItem(new LWWidget.Menu.Command('logout', 'Log out')); - - // Logged out user - _m = this.menu.newMode('out'); - _m.addItem(new LWWidget.Menu.Text('Please log in')); - - // Game selection - _m = this.menu.newMode('game'); - _m.addItem(new LWWidget.Menu.Entry('gamesel', 'Game selection')); - _m.addItem(new LWWidget.Menu.Command('logout', 'Log out')); - - // Error - _m = this.menu.newMode('error'); - _m.addItem(new LWWidget.Menu.Text('Error! - ')); - _m.addItem(new LWWidget.Menu.Command('logout', 'Log out')); - - // Standard - _m = this.menu.newMode('std'); - _m.addItem(new LWWidget.Menu.Command('gamesel', 'Game selection')); - _m.addItem(new LWWidget.Menu.Entry('player', 'Player')); - _m.addItem(new LWWidget.Menu.Entry('planets', 'Planets')); - _m.addItem(new LWWidget.Menu.Entry('fleets', 'Fleets')); - _m.addItem(new LWWidget.Menu.Entry('budget', 'Budget')); - _m.addItem(new LWWidget.Menu.Entry('tech', 'Research')); - _m.addItem(new LWWidget.Menu.Entry('msg', 'Messages')); - _m.addItem(new LWWidget.Menu.Entry('forums', 'Forums')); - _m.addItem(new LWWidget.Menu.Entry('ticks', 'Ticks')); - _m.addItem(new LWWidget.Menu.Command('logout', 'Log out')); - }, - - - initLoader: function (login, password) { - this.loader = new LWWidget.Data.Loader(LWWidget.main.getPreference('lwLogin'), LWWidget.main.password); - - var events = ['CommError', 'FatalError', 'Kick', 'Load', 'LoginFailure', 'Maintenance', 'Destroy']; - var slots = ['commError', 'serverError', 'playerKicked', 'dataLoaded', 'loginFailed', 'serverMaintenance', 'loaderDestroyed']; - for (var i=0;i' - + '
' - + '' - + '' - + '' - + '
Legacy Worlds
 
 
'; - if (LWWidget.debug) { - str += '
 
'; - } - Base.Browser.get().docBody.innerHTML = str; - - this.menu.draw(); - this.page.draw(); - }, - - - setTextPage: function (mMode, text) { - this.menu.setMode(mMode); - this.page = this.textPage; - this.page.setText(text); - }, - - menuCommand: function (command) { - if (command == 'logout') { - if (this.loader) { - this.loader.destroy(); - } - if (this.versionCheck) { - this.versionCheck.stop(); - } - if (this.state == 3) { - this.gameDisplay.hide(); - } - this.state = 0; - this.versionChecked = false; - this.loginPage.setError(''); - this.page = this.loginPage; - this.menu.setMode('out'); - this.page.draw(); - } else if (command == 'continue') { - this.login(); - } else if (command == 'gamesel') { - if (this.state == 3) { - this.page.hide(); - } - this.state = 1; - this.setTextPage('wait', 'Connecting to the Legacy Worlds server

Please wait'); - this.loader.load('main/index'); - } else if (this.state == 3) { - this.gameDisplay.setPage(command); - } - }, - - - versionError: function () { - // Ignore the error if the version has already been checked - if (!this.versionChecked) { - this.commError(); - } - }, - - versionNewAvailable: function (url) { - // Ignore the new version unless it is the first time we check - if (this.versionChecked) { - return; - } - this.versionChecked = true; - - this.versionPage.setData(url, false); - this.page = this.versionPage; - this.menu.setMode('nvAvail'); - this.page.draw(); - }, - - versionNewRequired: function (url) { - if (this.state == 3) { - this.gameDisplay.hide(); - } - this.versionCheck.stop(); - this.versionPage.setData(url, true); - this.page = this.versionPage; - this.menu.setMode('nvReq'); - this.page.draw(); - }, - - versionOk: function () { - if (!this.versionChecked) { - // Continue login - this.versionChecked = true; - this.login(); - } - }, - - - login: function () { - this.setTextPage('wait', 'Connecting to the Legacy Worlds server

Please wait'); - - // If the version hasn't been checked, well, check it - if (!this.versionChecked) { - this.versionCheck.start(); - return; - } - - // Initialise the loader and get the game list - this.initLoader(); - this.loader.load('main/index'); - }, - - - handleGameList: function (data, force) { - this.state = 1; - - var games = new Array(), auto = null; - - if (!force && LWWidget.main.getPreference('lwRemGame') == '1') { - auto = LWWidget.main.getPreference('lwGame'); - } - - for (var i in data.contents) { - // Check if version is supported - var _v = data.contents[i].getAttribute('version'); - if (!LWWidget.Game.versions().containsKey(_v)) { - continue; - } - - var _g = { - name: data.contents[i].getText(), - path: data.contents[i].getAttribute('path'), - version: LWWidget.Game.versions().get(_v) - }; - if (auto && auto == _g.path) { - this.loadGame(_g); - return; - } - games.push(_g); - } - - if (games.length == 0) { - this.setTextPage('error', 'It appears that you are not registered to any Legacy Worlds game.'); - } else if (!force && games.length == 1) { - this.loadGame(games[0]); - } else { - this.page = this.gameSelector; - this.menu.setMode('game'); - this.gameSelector.setGames(games); - } - }, - - - loadGame: function (game) { - this.state = 2; - this.currentGame = game; - this.loader.load(game.path + '/play'); - }, - - loadData: function (path) { - if (this.state == 3 && this.loader) { - this.loader.load(path + '/play'); - } - }, - - - - commError: function () { - this.setTextPage('error', 'Communications error

The server could not be reached or it sent an invalid reply.'); - }, - - serverError: function (code, text) { - var str = 'Server error

The server encountered an internal error:
' - + text + '
(code: ' + code + ')'; - this.setTextPage('error', str); - }, - - playerKicked: function (reason) { - var str = (reason == '' ? 'No reason was specified' : ('Reason: ' + reason)); - if (this.state == 3) { - this.gameDisplay.hide(); - } - this.setTextPage('error', 'You have been kicked from the game!

' + str); - }, - - loginFailed: function (code) { - switch (code) { - case '0': - if (this.state == 0) { - this.loader.destroy(); - LWWidget.main.password = ''; - this.loginPage.setError('Invalid username or password'); - this.page = this.loginPage; - this.page.draw(); - } else { - this.setTextPage('error', 'Your password has been changed.'); - } - break; - case '1': - this.setTextPage('error', 'The server encountered an internal error while authenticating your account.'); - break; - case '2': - this.setTextPage('error', 'Your account has been closed!'); - break; - case '3': - this.setTextPage('error', 'Your account has not been validated yet, please check your e-mail.'); - break; - case '4': - if (this.state < 2) { - this.setTextPage('error', 'The server just did something it\'s not supposed to do. Ever.'); - } else { - this.gameDisplay.hide(); - this.setTextPage('errsel', 'You are no longer registered to this game!'); - } - break; - } - }, - - serverMaintenance: function (reason, until, now) { - var str = 'The server is undergoing maintenance.

Reason: ' + reason - + '

It will be down until ' + until + '.
Current server time: ' + now; - this.setTextPage('error', str); - }, - - loaderDestroyed: function () { - this.loader = null; - }, - - dataLoaded: function (data) { - if (this.state == 0) { - // We were not loging in, save password if needed - if (LWWidget.main.getPreference('lwRemAuth') == '1') { - LWWidget.main.setPreference('lwPassword', LWWidget.main.password); - } - - this.handleGameList(data); - } else if (this.state == 1) { - // We were logged in but asked to select a game - this.handleGameList(data, true); - } else if (this.state == 2) { - // We just received game data for the first time - this.gameDisplay.setGame(this.currentGame.version, this.currentGame.path); - this.gameDisplay.handleData(data); - this.page = this.gameDisplay; - this.menu.setMode('std'); - this.menu.setSelected('player'); - this.page.draw(); - this.state = 3; - } else { - // Update game contents - this.gameDisplay.handleData(data); - } - } - -}); diff --git a/misc/Legacy Worlds.wdgt/lib/LWWidget/Menu.js b/misc/Legacy Worlds.wdgt/lib/LWWidget/Menu.js deleted file mode 100644 index 23abe8c..0000000 --- a/misc/Legacy Worlds.wdgt/lib/LWWidget/Menu.js +++ /dev/null @@ -1,81 +0,0 @@ -LWWidget.Menu = Base.Comp.inherits({ - - constructor: function () { - this.base(); - - this.currentMode = null; - this.modes = new Base.Util.Hashtable(); - - this.addSlot('modeDestroyed'); - this.addSlot('draw'); - this.addEvent('Click'); - this.bindEvent('Click', 'draw'); - }, - - destroy: function () { - var modes = this.modes.values(); - for (var i in modes) { - modes[i].destroy(); - } - this.base(); - }, - - - newMode: function (name) { - if (this.modes.containsKey(name)) { - return null; - } - - var mode = new LWWidget.Menu.Mode(name); - this.modes.put(name, mode); - if (!this.currentMode) { - this.currentMode = mode; - } - - mode.bindEvent('Destroy', 'modeDestroyed', this); - mode.bindEvent('Click', 'onClick', this); - - return mode; - }, - - setMode: function (name) { - if (!this.modes.containsKey(name) || this.currentMode && this.currentMode.name == name) { - return; - } - this.currentMode = this.modes.get(name); - this.draw(); - }, - - setSelected: function (name) { - if (this.currentMode) { - this.currentMode.setSelected(name); - this.draw(); - } - }, - - modeDestroyed: function (mode) { - if (!(mode && mode._cid && mode.name && this.modes.containsKey(mode.name))) { - return; - } - - this.modes.remove(mode.name); - if (this.currentMode && this.currentMode._cid == mode._cid) { - var _v = this.modes.values(); - if (_v.length) { - this.currentMode = _v[0]; - } else { - this.currentMode = null; - } - } - }, - - - draw: function () { - var e = document.getElementById('mtMenu'); - if (!(e && this.currentMode)) { - return; - } - e.innerHTML = this.currentMode.draw(); - } - -}); diff --git a/misc/Legacy Worlds.wdgt/lib/LWWidget/Menu/Command.js b/misc/Legacy Worlds.wdgt/lib/LWWidget/Menu/Command.js deleted file mode 100644 index d4af539..0000000 --- a/misc/Legacy Worlds.wdgt/lib/LWWidget/Menu/Command.js +++ /dev/null @@ -1,7 +0,0 @@ -LWWidget.Menu.Command = LWWidget.Menu.Item.inherits({ - - constructor: function (name, text) { - this.base(name, text, true, false, ' - '); - } - -}); diff --git a/misc/Legacy Worlds.wdgt/lib/LWWidget/Menu/Entry.js b/misc/Legacy Worlds.wdgt/lib/LWWidget/Menu/Entry.js deleted file mode 100644 index aad8595..0000000 --- a/misc/Legacy Worlds.wdgt/lib/LWWidget/Menu/Entry.js +++ /dev/null @@ -1,7 +0,0 @@ -LWWidget.Menu.Entry = LWWidget.Menu.Item.inherits({ - - constructor: function (name, text) { - this.base(name, text, true, true, ' - '); - } - -}); diff --git a/misc/Legacy Worlds.wdgt/lib/LWWidget/Menu/Item.js b/misc/Legacy Worlds.wdgt/lib/LWWidget/Menu/Item.js deleted file mode 100644 index 03e3526..0000000 --- a/misc/Legacy Worlds.wdgt/lib/LWWidget/Menu/Item.js +++ /dev/null @@ -1,38 +0,0 @@ -LWWidget.Menu.Item = Base.Comp.inherits({ - - constructor: function (name, text, clickable, selectable, separator) { - this.base(); - - this.name = name; - this.text = text; - this.clickable = !!clickable; - this.selectable = this.clickable && !!selectable; - this.separator = (typeof separator == 'string') ? separator : ''; - this.selected = false; - - this.addEvent('Click'); - }, - - draw: function () { - var pfx, sfx; - if (this.clickable && !this.selected) { - pfx = ''; - sfx = ''; - } else if (this.selectable && this.selected) { - pfx = ''; - sfx = ''; - } else { - pfx = sfx = ''; - } - - return pfx + this.text + sfx; - }, - - click: function () { - if (this.selectable) { - this.selected = true; - } - this.onClick(this); - } - -}); diff --git a/misc/Legacy Worlds.wdgt/lib/LWWidget/Menu/Mode.js b/misc/Legacy Worlds.wdgt/lib/LWWidget/Menu/Mode.js deleted file mode 100644 index 8d92b0a..0000000 --- a/misc/Legacy Worlds.wdgt/lib/LWWidget/Menu/Mode.js +++ /dev/null @@ -1,109 +0,0 @@ -LWWidget.Menu.Mode = Base.Comp.inherits({ - - constructor: function (name) { - this.base(); - - this.name = name; - this.items = new Base.Util.Hashtable(); - this.selected = null; - - this.addSlot('itemDestroyed'); - this.addSlot('itemClicked'); - this.addEvent('Click'); - }, - - destroy: function () { - var items = this.items.values(); - for (var i in items) { - var _i = items[i]; - this.items.remove(items[i]._cid); - items[i].destroy(); - } - - this.base(); - }, - - draw: function () { - var str = '', items = this.items.values(); - - for (var i=0;iDownload the new version'; - - this.writeContents(_s); - }, - - - startDownload: function () { - if (window.widget) { - widget.openURL(this.url); - } else { - window.open(this.url); - } - } - -}); diff --git a/misc/Legacy Worlds.wdgt/lib/LWWidget/Page.js b/misc/Legacy Worlds.wdgt/lib/LWWidget/Page.js deleted file mode 100644 index 9f993a8..0000000 --- a/misc/Legacy Worlds.wdgt/lib/LWWidget/Page.js +++ /dev/null @@ -1,17 +0,0 @@ -LWWidget.Page = Base.Comp.inherits({ - - constructor: function () { - this.base(); - - this.addEvent('Show'); - this.addEvent('Hide'); - }, - - writeContents: function (contents) { - var e = document.getElementById('mtContents'); - if (e) { - e.innerHTML = contents; - } - } - -}); diff --git a/misc/Legacy Worlds.wdgt/lib/LWWidget/TextPage.js b/misc/Legacy Worlds.wdgt/lib/LWWidget/TextPage.js deleted file mode 100644 index 152482b..0000000 --- a/misc/Legacy Worlds.wdgt/lib/LWWidget/TextPage.js +++ /dev/null @@ -1,18 +0,0 @@ -LWWidget.TextPage = LWWidget.Page.inherits({ - - constructor: function () { - this.text = ""; - }, - - setText: function (text) { - if (this.text != text) { - this.text = text; - } - this.draw(); - }, - - draw: function () { - this.writeContents(this.text == "" ? ' ' : this.text); - } - -}); diff --git a/misc/Legacy Worlds.wdgt/lib/LWWidget/VersionCheck.js b/misc/Legacy Worlds.wdgt/lib/LWWidget/VersionCheck.js deleted file mode 100644 index 7918974..0000000 --- a/misc/Legacy Worlds.wdgt/lib/LWWidget/VersionCheck.js +++ /dev/null @@ -1,101 +0,0 @@ -LWWidget.VersionCheck = Base.Comp.inherits({ - - constructor: function () { - this.base(); - - this.addEvent('CommError'); - this.addEvent('NewVersion'); - this.addEvent('RequiredVersion'); - this.addEvent('VersionOk'); - - this.addSlot('dataReceived'); - this.addSlot('loaderDestroyed'); - this.addSlot('timerDestroyed'); - - this.loader = new Base.XMLLoader(LWWidget.base + '/index.php/main/macwidget.xml', false); - this.loader.bindEvent('Destroy', 'loaderDestroyed', this); - this.loader.bindEvent('NetworkError', 'onCommError', this); - this.loader.bindEvent('ServerError', 'onCommError', this); - this.loader.bindEvent('Timeout', 'onCommError', this); - this.loader.bindEvent('Unsupported', 'onCommError', this); - this.loader.bindEvent('Aborted', 'onCommError', this); - this.loader.bindEvent('Loaded', 'dataReceived', this); - - this.timer = new Base.Timer(300000, true); - this.timer.bindEvent('Tick', 'load', this.loader); - this.timer.bindEvent('Destroy', 'timerDestroyed', this); - - this.knownVersion = LWWidget.version; - }, - - - destroy: function () { - if (this.loader) { - this.loader.destroy(); - } - if (this.timer) { - this.timer.destroy(); - } - this.base(); - }, - - - timerDestroyed: function () { - this.timer = null; - }, - - loaderDestroyed: function () { - this.loader = null; - }, - - - start: function () { - if (typeof this.requiredVersion != 'undefined' && LWWidget.version < this.requiredVersion) { - return; - } - this.timer.start(); - this.loader.load(); - }, - - stop: function () { - this.timer.stop(); - this.knownVersion = LWWidget.version; - delete this.latestVersion; - delete this.requiredVersion; - }, - - - dataReceived: function (data) { - var _xml = Base.Util.parseXML(data); - if (!_xml) { - this.onCommError(); - return; - } - - var _doc = _xml.documentElement; - this.latestVersion = parseInt(_doc.getAttribute('latest'), 10); - this.requiredVersion = parseInt(_doc.getAttribute('oldestOk'), 10); - this.url = _doc.childNodes[0].nodeValue; - - if (this.knownVersion == this.latestVersion && this.requiredVersion <= LWWidget.version) { - this.onVersionOk(); - return; - } - - Base.Log.write('Version check: current version = ' + LWWidget.version); - Base.Log.write('Version check: latest received version = ' + this.knownVersion); - Base.Log.write('Version check: latest version = ' + this.latestVersion); - Base.Log.write('Version check: oldest accepted version = ' + this.requiredVersion); - - this.knownVersion = this.latestVersion; - if (LWWidget.version < this.requiredVersion) { - this.onRequiredVersion(this.url); - this.timer.stop(); - } else if (LWWidget.version < this.latestVersion) { - this.onNewVersion(this.url); - } else { - this.onVersionOk(); - } - } - -}); diff --git a/misc/Legacy Worlds.wdgt/lib/LWWidget/Versions.js b/misc/Legacy Worlds.wdgt/lib/LWWidget/Versions.js deleted file mode 100644 index ae403de..0000000 --- a/misc/Legacy Worlds.wdgt/lib/LWWidget/Versions.js +++ /dev/null @@ -1,2 +0,0 @@ -LWWidget.Versions = new Base.Util.Hashtable(); -LWWidget.Versions.put('beta5', LWWidget.Beta5); diff --git a/scripts/config.inc b/scripts/config.inc index ae11713..8ab50cb 100644 --- a/scripts/config.inc +++ b/scripts/config.inc @@ -4,18 +4,12 @@ // engine instance $config = array( - // Database connection parameters - "dbhost" => "localhost", - "dbuser" => "legacy", - "dbpass" => "", - "dbname" => "legacy", - // Path and URL to static contents - "staticdir" => dirname(__FILE__) . "/../site/static", - "staticurl" => "http://www.legacyworlds.com/static", + "staticdir" => __DIR__ . "/../site/static", + "staticurl" => "http://localhost/static", // Path to game scripts - "scriptdir" => dirname(__FILE__), + "scriptdir" => __DIR__, // Path to the cache "cachedir" => "/tmp/lwcache", @@ -33,11 +27,6 @@ $config = array( ), */ - // Mac widget version numbers and location - "latestWidget" => 1, - "oldestWidget" => 1, - "widgetURL" => "http://www.legacyworlds.com/downloads/LegacyWorlds-Dashboard-latest.zip", - // Version numbers to make us feel good "v_engine" => "0.85a", "v_game" => "Beta 5", diff --git a/scripts/game/main/ticks/deathofrats/library.inc b/scripts/game/main/ticks/deathofrats/library.inc index a7f2d37..6172c51 100644 --- a/scripts/game/main/ticks/deathofrats/library.inc +++ b/scripts/game/main/ticks/deathofrats/library.inc @@ -150,14 +150,6 @@ class main_ticks_deathofrats_library { l::debug("Analysing " . count($this->connections) . " new record(s)"); $this->makePerAccountRecords(); - // Start with open proxies - l::debug("Checking for open proxies ..."); - $this->checkOpenProxies(); - if ($this->proxiedAccounts) { - l::info("Logging " . count($this->proxiedAccounts) . " account(s) using open proxies"); - $this->db->safeTransaction(array($this, 'logOpenProxies')); - } - // Now examine per-account entries to find different types of rats l::debug("Checking single player badness"); foreach ($this->perAccount as $records) { @@ -660,111 +652,6 @@ class main_ticks_deathofrats_library { } - /*********************************************************************** - * OPEN PROXIES * - ***********************************************************************/ - - /** This method checks for open proxies in the latest log entries. - */ - private function checkOpenProxies() { - $IPs = array(); - - // Make lists of accounts for each IP - foreach ($this->connections as $record) { - if ($record['ip_addr'] == 'AUTO' || $record['action'] == 'OUT') { - continue; - } - $ip = $record['ip_addr']; - $account = $record['account']; - if (!is_array($IPs[$ip])) { - $IPs[$ip] = array($account); - } elseif (!in_array($account, $IPs[$ip])) { - array_push($IPs[$ip], $account); - } - } - - // Check for proxies on the IPs - $requests = array(); - $proxies = array(); - foreach (array_keys($IPs) as $ip) { - if (count($requests) < 20) { - array_push($requests, $ip); - continue; - } - - try { - $results = pcheck::check($requests); - } catch (Exception $e) { - l::error("Failed to check some addresses for open proxies"); - l::info($e->getMessage()); - return; - } - - foreach ($results as $host => $status) { - if ($status == 1) { - array_push($proxies, $host); - } - } - - $requests = array(); - } - - // If there are some requests we didn't execute, do it - if (count($requests)) { - try { - $results = pcheck::check($requests); - } catch (Exception $e) { - l::error("Failed to check some addresses for open proxies"); - l::info($e->getMessage()); - return; - } - - foreach ($results as $host => $status) { - if ($status == 1) { - array_push($proxies, $host); - } - } - } - - // Check for proxied accounts - $proxyAccounts = array(); - foreach ($proxies as $ip) { - foreach ($IPs[$ip] as $account) { - if (in_array($account, $proxyAccounts)) { - continue; - } - array_push($proxyAccounts, $account); - } - } - - $this->proxiedAccounts = $proxyAccounts; - } - - - /** This method logs access to accounts using open proxies. A log - * entry is only added every 24h. - */ - public function logOpenProxies() { - // Get all recent open proxy logs - $this->db->query( - "SELECT account FROM dor_single " - . "WHERE message = 'PROXY' AND {$this->now} - ts < 86400" - ); - $recent = array(); - while ($r = dbFetchArray($q)) { - $recent[] = $r[0]; - } - - // Insert proxy logs - foreach ($this->proxiedAccounts as $account) { - if (in_array($account, $recent)) { - continue; - } - $this->singlePlayerLog("PROXY", $account); - } - } - - /*********************************************************************** * SINGLE PLAYER SUSPICIOUS BEHAVIOUR * ***********************************************************************/ diff --git a/scripts/legacyworlds.xml b/scripts/legacyworlds.xml index bc03fdb..4718129 100644 --- a/scripts/legacyworlds.xml +++ b/scripts/legacyworlds.xml @@ -15,17 +15,6 @@ - - - - - - - - - - -