From e4d37ab2723f14de788aea85819ff89f9c3e5ee3 Mon Sep 17 00:00:00 2001 From: sigonasr2 Date: Mon, 16 Oct 2017 00:06:53 -0500 Subject: [PATCH] Chat Log Module implemented. Scrolling w/ Mouse Wheel + Keys. Updated config file with new keys. --- sigIRCv2.jar | Bin 3378276 -> 3388891 bytes src/sig/Emoticon.java | 20 +- src/sig/Module.java | 33 +- src/sig/MyPanel.java | 9 + src/sig/UpdateEvent.java | 6 + src/sig/modules/ChatLog/ChatLogMessage.java | 290 ++++++++++++++++++ .../modules/ChatLog/ChatLogTwitchEmote.java | 60 ++++ src/sig/modules/ChatLogModule.java | 182 +++++++++++ src/sig/modules/TouhouMotherModule.java | 38 +-- src/sig/modules/TwitchModule.java | 26 +- src/sig/sigIRC.java | 31 +- src/sig/utils/FileUtils.java | 3 + 12 files changed, 644 insertions(+), 54 deletions(-) create mode 100644 src/sig/modules/ChatLog/ChatLogMessage.java create mode 100644 src/sig/modules/ChatLog/ChatLogTwitchEmote.java create mode 100644 src/sig/modules/ChatLogModule.java diff --git a/sigIRCv2.jar b/sigIRCv2.jar index e93d5e9b8ee7aa6a6272bee0fa7be1c247070c5e..5e2200ca84aac10804d7f9d922b370a76dd747b1 100644 GIT binary patch delta 78247 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 RL>v*v%!RFwB5DNFeFHnap`ri) delta 66307 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�rwccgkbi67SL&*MxGM<*dx} zwH&p3&e}h5Z;J6&sub&OxXZ+oVEYu8fzwbv-U`LP5oapqTW4konRbks$GB-a_BO4R zG_A@~V>NLKKWjZ^tEDSXU3!x{OnENbIP5NhZLnClDE{kRcS%d!-Bg6iXf#9n94DOT z%8Mun?~=hgg+cy=>ocHh-#%klA&g(DxXuGafq(NPtwlLf=*o`@k{yJWKyvNg zo*O+jNy*b}kzNGBU#Yr#m^a?|Vqq2zWbg42fiQS)hWPzkfk{addi<=C<xbWSo*7TDG&pmS5SnaQh_`r;yDB$N z2`~9bJ$nuq$JTd1XP2vF{yDpGd$KAw=$^Q#K=>{LLO9=<$5omI+7K~%+2mENblIh} z5#C3}K1{WQ&CZ`*#vfMk?%+MR{My}eQmFk>%*mv1rj1ys?Ts~|sDN_Eh7<>|R6C!LK^_e)SVtA+DrcuP!> z5=?sYWYlm(4f14o6tkmd#adG4DNXQ5UJ^*XrR6Jb=b}!vtm*zn!X}l0Sa^lOlvy&3 z4j|)wOYo17k}E;8AhuKOq=IM--VbMzfj>q>kvKHhI^!t@UiAFKpH@+prQZvO7u=C! zCEp9X5C58u7{q$^6TS6lV0OA|RQpJ<&(xz7|L8Sh);Gx%DKQ6g{h~*&_nJ)?Ig_sQ zap1z%r}TqmJpR4dXIN~}gYo2odtr`!apbZ(fmxqQZ%nN<2l|C3IK48v z@~YzlJG1iY^M(p!1`Ko0JHAl)Bs-P@H;fNRK561+)GEuQiCQEgogL3Ry0D*F#WjlKV~^#|K4EUfLbF z8xa7c)*gN0ZgetXnj8t=w_dLciLFCZAJf#+&v(d3c|oT6Ozj;3uZy0(i_g`Ci$veX zwJWQ8YQob*-xUkCUH?TBMBky*JLftlYQ2+CAM0wngdTlm0ojNz-Igh>yF__!rd+#- zGggiPbxNO<_%~WJKO9x&%f50Ey(U~MpMj7@zq8+VeZ2z7-3Q}-XTocN&jMw>O7|~| z&})G!0`T3`Cb!6qpv1nF=3%1RAmZLOoPCLiqmPrfnpY3FwRV9Ut}UMG;WI3apo4;* zqx)gh_{t~Ni?%VNP%#giwU#l{P%*azH@TX-?8D~ZR9-rq`4sq0g=JIx_PH}Wya2va zrDeGE3e6N$AG~$nps6W-3>Z)#DQf?@#!Gj*@PKOaW3yu4aBt^MA(x(*}Miy{P};d zwte1ff%TSIt-Ho~s50Q=)C%*@;xl(qgOcHe$Ej7iM-L+rBUWgeeW9$5%cce1`SZqxQ9Q}`|4Pq-cdIE=U5s3D)HzZAoGdbTfKech-(n=H)E&{ zkMqO+;Qk}4A-LCcb99Fj>E?Vm`a|$Q>%;#*@GHoa=eu6m(G_F$YWm0t5B7Dx=$lJg zGDh*YCP06=+j+s^8})eR3}AF!?-w`NGb_w8y59%<_-ShwKMgf|c80wO(QdbwM|%9q zYxB!+*6NG$?3W=a?k8u`+>ZIn9xbl1q=CSM;HcKTo%%+QoWb={e+5-+wA-6SO={-T zH|pa^Ui~sYZWFwkb+2<|!$Rq*UAoHOqc`(1QkgMVuPeG0X8zcTcL4U>bNYiy@x5*o z?kh~;Ly#PuNfDdz?*rliTw;2|M%%nW>9_&ajKROki==DD1b_ZuJ%cPgqEY>#F@0M- zZW!LZyEi+RZ?JX%S>{So;i{B$Y%53MN-)9qyX`RLqu1)9*roEzkeZa9Mp$fy>)dV4 zax-d?=TYqMgr)u6B!F0KkTq(nYpSH^m2CMVf26G_J9l^pTNV9!I)mpW#((R9z=A@J z{YvmEMs>2SH#-;X(1aIpW3gu272HQjyF0*|K@9K52kFtBlyXpfVjUoTul&XwqHKey zhQF?xT6mu-icJT7De{i&{5Ec;s6F3(@d_bW7r+<{|J9rYg#^b z+OMaQP?Wz#{%t*PcmGHAO?&pZUi}t$?R|enpR;?c2*y|dGJdisFXLI;AitWLKN9x0 z)s;x@@QzL&Cbj+(OdiCB9U+?^uMk@6T++q53j;TIzqMi^pcy&mbl0e&7p%$*)66&B z#E+|c3|s$HbYVqgW(=m8Ig9%9lp%~qZ#rICrQcZi2MIifBZXFYt$-H|PJ-`aPN6~C zw@s!a?x&tEps(LqYx7visbO1*mlQN~wB4S};RL#-DIBhnxuhQGv%tZhfR>1Dq zS5$mqWE*Im(~jUM)y1%ShWIjp)y&QPUi3v3ziBM97Wrk%BI-_oVvLuD;Vj$POX$+5 zKzey=R9?-86P-RW|0}4TdzfO5Ly@Ric48 zaW2TI!9wqA_oKztC_aH3%h2vrWp4l3K8P5d9IN&x=%A+hl6p;fdJxW_+O3ek{F|S= zx50Ufwez}5CY9zpS&ey3w&he7dnbc~&6z!X)ZLeIwLD*H8Sao9w%XNj|E#ec;#ac~D0$nhJt8}y2ECynTL`Y8%A(b#a9>XC?73N9Jl&joE z72Ri3Fp|?zgVzs_Mi(bK+PIPEq5M0*mobu&OjQZdg7nL_=zp&xuFDc;6oOIUKFhHb zsU;5yg7k=XxZ$}~j^dho$c+A^?1E;4nBjyjVx52!F9>#&i)~dn*c9E73bC#NAjr+5 zgGqM}-T2f5{IFokyqx^<6fN=Hkbc8ght(6D@|dHrp>DO{Hw90J?_>oR@TiXcTTp^VL8@r}Z4xu9@00R6?$@)3W zBv*t7?NQ6i^h>-N8Kx`8`k@aSh+YpiamUt|v>YGNfYMj!M2XyP;mVJ*UN;&*@-d5~ z#YSDhabwhno{o~5Oz)Gu?H3>ayDQ9f0u|JsU{uY9Bat9g_*?vh>a8L;0L=AaMjvWR zUKm`cOF;n~OS|*cEaoqn`2{1?mTYT(BrBp_-xzuPHOtAd8+9O2{7D-za8er*Bbv)= zl_aUViq95gjNM97pA|Iy#jvrKX0$E?ZN44Mz(Snls|-ybgv|?kYNC#^G*kKm?H-i< zcD}`_Ph!ihx6dc9ez>3AtF$_G^*dBlYFj)T$dq1Y||M_8d5Lk ziM9{YG}7?dn}$3Yn8dAmt=d6+`QMW)$@DQe9opqEW>Nx-N#59cnC^h7&Nr&BLJGl%A zfx>;S6}=|h)av!w$wxjBhe%SgWeWWzZ(J)b)tdYj)1=Znt!CKZre>4XJHJElz-sn% z?J!HdZ>A-WCb3D3qWAHcf9rDw;5;bN!sa*w3~`%qd>_~gA$2vSdJnveuJb_PqfZP2 zTb{qfx9co`-d_&%YaGOqhZCTvnMrm#$yCL@bm60XRQD0vi973E@Dj-RP2)mY!r>wh z{-O(R;8K@On)!WUM)!c>tsC97N9GtVjAi|ZJth`qa><7$XWlfiOUlNFUW5%verHwQ zKN#W>2Kfe?qO}GUpRkSez(qY~p0$P+-#W!epY88~DF3M_dze)_3sM zD%ZO6%+WFa?ik~Jb2fKJQ{PYo#~&6=f(=wR#zXJ|-6o^FdUiJ$#>?^;6hU6m$#Q)` z)T7zfQ0V|$i>%^Lx+}!6k`TGFq9`oKCZx=9WQB2epJQC884ME~edzh;x~EnX9G0YM z(n}rTC$KKVPJ2*rcPo!_7zvXAiilfl&Pss3BPH`fh4Rv+LOK*bj6GKEA#E zsq^2Jg4c&$wj?_Dent6DB**6^+AGFgEzJjhvjGosYwy0V|nA_Y!$|Q_zahM0~O3ID-E|yaV4_y zp$`O8&3ZzxXCpXZ?C`aWb9H02Ka}^oy!F%ZtU<@ozzs(YB*u}kE9`lzbp16nbLgOk z!F&yk$_kBwVpaMTm9q&J%N^=Q0ZdclcTpBJ{Af+q{cCwykPu8BnZ$MxpI)P_f4R?M zLlx(;*)MYbBFzz4e*32LVGdKaEX|Wfa|kd*x3b@GEn-`r51oW8p|doHq&?SxxNDDZ zAY5VCTE4XwBt*2o`1*AOD+M2y+;iPOfQY*#UR7|uy!$~dhEWFQ&+mhhAp>V5LVOeX z0(htUjjwvprh~#v6~?jLiv*D^Z`t`aOI&%x*}KyJY1D?U2RDpX+iC~Ti&o*=y@2o- zVc~`&G)UXz;1Dn-j+gL(k~J3hSYfQek5cVFUet#ByV38CEqtcVKvjP_+qi*lu|C|x z;k;&+YxI54$Hc2Fv|%Eb^SW(t-TX&QGh(QIS9G28jl+-`o&1B)-@EnZd44%7ePM|j zI2|3-2YXmw^8?mD-pYSG;XFeh5`oyQu6n~bLL|qry9de=TzHmlTt5w+u!m`1gq~0~ zm6Hd0zWMmHq3~AR6gl$We$XwOW5IO#E6uI;calYkNL7Ug{D^d^xt?Xj)~C6<{Z8LK z`cSDdJMZ<~_%s^R;%J{f2w6xFpq>6u*O(VbkEi;Za6mZE>R7qCqO_BLBESR{9r&w| zYON)l{FV&yah|OEIe8Z;EE+1OH5ClfXQh~1Mul}M7)p2ud9b}^o23sUmA$23Ejv>T zBvtB_75W=ZPFPPknE05QqO;j+(75|g^#HII=HHs znglzx`a(7(P>R3Z4mbE8(8`VVzwH>1eosPeO^Oc@BL>L*+6=WBAqJk$55NM#cU*5e z<;hjWt2;J!g>Tu{n= zgAb<&>~k>wtH7`eFu5uF@T}nC^xS)_b_5YfK2dFRy%9zV&&_1|iV?e*!`jA0a8YgHfEtpjj6Vesn*n?All@zl2ajpi&H6!NiH8oABQ{iVHE|FjUpO>j$F z(fmy&fZM=+<|c;au0jwur-S~Z0hUM0INp`=y0A-%O^)c=Y}EqJUq1H zS(e`pv}OhkVW}#xEPA3X<>efXHp+zYv9aFc#jD0wZ1Xdo%tKRWo5=>?1z`YZ7zPhIsEiufZ3G zOcP#&;B{vgZpSTZr>JMj6>hhr6BwdLIT+MHjz3IGg>B-M!puOhpdZi zryOE@B}iG=-sYA#B2lBt! z=X{TS2R<-q^bVIOv;UX~@-(v|Sh zLVg65&ZpqNQ=oXQr2(rmStE;Thbs1Y$>2MEt; zH|l7H0eK-1|6MgL?p~nrr-zdP*UlxL+TLD<-`Jl&Wu;(RiGcpW_q@=-z2FCig_B)0 z2f#f-(aZPW08b;T9F!ff1~w#z_(<-K`?E};FG#kV50U<8Kb#)Hy`%#U1dH6}ha6#2 zlI0bFU~Uk<+-H{uyHSeS;)w>$GJwIN#%ICUfA%fOl#`ZVfZxohI} zUe?70xXwH~XQxo23r9Bbmu#Lj*9e%aYqPmeZE->BcbjKp81KZDR!S61D2`+}uRG5$ zAJOiJ7cpF9@nMC`N7U$gD#Ew-M&QAHxnd_8-0-TmT%6a51QYRUb`ny8>W`Uw9sU`j z_Ev~^jiP+zk?b`$;-l25;Hz@?xlWftV%#AP36!?CoLvcbDY9X>8xz85@J#+;QGt-7 zR~7fNvTfpgf_-q8ex6r0qqoeNY@$OzcsePkaj?5SGSd?Lwpovx3{OE+3^3eUvLh|; zM%}Mgbo)2O$PC@TbUmDqp_oZY+rY z-w)mX{Z|f(%k93;`lk226V_iYvmWEDu}`YG?t~>JadV${&Vs*&sYWn&8&RG^jt}N@ z<3}tL0~B4lD(ld#lX{3`q=3_NvvVCg{jvmILpg@eveL0^s888uA#Io4qPm4gcLATt z{LB+xxd|gi@<9*gsU9ih-$nPi1D3RF)}Vw%d1!n@awFP z8L2*IiEHt3Wv@PDWqxaA)b8_QG__5e-f5dmJcDuPCZmiOB@$OTQGi3G%k_WET=(H= z>CqLcKy$XuW{X3m`vxFdg=fd>?!MJDyd`z+bJDqW=zjdtF?M}bA|gxA{XnJzRHoP#$a>Lq2Kho7Kv)A9Z}0$%P1Qf zvSpV$W=HJ?Kabl38{nN?rP5hz(%hMwt{jfQ8`T3Pv<3Z>3bIHiV#WF2dY3IyXcy)s zL6vs~C*{jz=1IR~VRXlK?0)Llh50qSW%#@Kh{w&zS*oW$%p$*?bm4JVw^Es>6Le3z zvfQ^@<%Mf|7JJ*ra2CPq=!;;B`5^s!C#^2Mv4j5YIQ2~I1xy9m_T8y9cN#kkfAM;3 z{Kw1q1xW5qW>xTFKhFN`w63&jif3BT(PwQAue~VPnss!r2(Uob@68TNk>8Tzrql6^ zi-o_x;3o2FDmG&#H6C2@J@t@4p40aP4^Z!nx@TNjuOM)X)7l z9jK`v*cy4Y46tS)CvO#PX)CUQ?1WnFL=%O@k)OKfng5$J;}5(UbDPyi>WIvkBgraa zX=1eYWWFH5p#?SS#CP$r?`~?%CStjM%JxLg^o-B&>?Jsfsxm&)cY1U<@rzyFVv*3P zHS!VQ-SWmEz5dsRe^r!)_(TOU?4EK>WXvxWF3l_m3Umn`Nd^ivPWuxt87PUD*w#E$ z6T%Fhv);$|8*_sgaR177_*D}STIy`Ur~ z*}o7e19(^bm0a;NPAHh8p*lY( ziHtmAuZSG)mcHui{XnDxADeEwsIN4!*&Q<~C`z>UFagoz_zKTK)ZHT!L=o_c>j>nu4RjNHLr{h1q3P-I4HX!|E$MmSb#=aho|Zw-rbVI z4|*rLEMpObaqxywd1DcIgE9J|$^XRBmrw$sQYsDl(3ub#Ji*C@Twxndzp)d-t6?E5 z$)mj#0J)OWc{8kZxq*Q8|AOS*^$qdUN4YdVS$V(zcq2sYduX=dvQ?0JNVuP#eA0GLF_eg5l1FyE{IM# zLrRh-h3AJfb_x0O>Mw^zT%$U!!eEX2gpE`JAIMoNuhaD|ddOyq->IYMiKA1v+1&Fa zgqkjiIz%%b2$rV|cOK18w5Eq!84z_QM}Vu{HgxzW7SW!$IWqT=OP?S6N*s0nh;^f$ z3vcnO%uUiegZvo<2~NG)<(CUUVe_s)J6tS7(eh6VKTX&`%b}X3#il;7L^kaNM&>Vma^ovO8o-fKXub^7i{35vW zE}d`U7*NtbLW?11ph-j%77|7k+dtG+>!N`)d1a@+-F{VFGe;Zf&%)f-*Rq>CrrSH& zZP#JG5E~oUa}&BU?lR)>3$XWw(oNsPF1;eox5QoFaH8LaI!e& zqx5I=Sv`jKSjAYXn`l>kAit$oGmRRUMo1Z-hi%fCK6K3C-KPkwx-RRKDkHW4KW#;p zB6LikIXS$9!Urgxad~0e)*qZYE`u@7V1Y+2 z6Udd85TKoMK~F--PS9itI*dYjtD~~_5ax?!k3+xmuF(MtInN@#f9)&vdJCi>tgi(kz!I>`Hg39%z z(MZ|VZ8j>1?59_C%hyiRqp)pY`}f-5_f_GV=cuDgLx<5G@69c1--yglJJYP&=%iuh z{qGX|UJ!63nm?t0Ke1Sd=lOz{dV@?!)(>d50|z?VO@)KL8E?&*AIm6A45u3T=YGBc zl65YnAB7VDlE@U+i#Xc;*v$ymYIiD@b4KM0hR(3_(6MHB$ZM(M80Df`I-7!4ou~hw zJ|9l?^lwwET)a|R8?q_oK~9M=)kIs0R-59D-^GXcq_%Uw_b-q!lc@y?ig$G`O}0v@ zBXE6AAC*d$H8b)hgwia;iXMr1j?i6)LP|^I_J8a5moj&2($tjXT^O5+esrt%z95^{ z5i1LzbJq)YLcxl=?8Z@zR^;D-c!|Uxezjad7JlwQA zE3z)KUpCuln-$#gtHx5S0v^OXMQ)NQ-sUj=v!tZsZ%Eou`Y)Er>&a10A^>km?ck%7Ahv{+avgh}`90770 zo?WCvGonXT1#{(GxD+n5@VGqE>>xa$0!{@W%nsMsh(9N4NFX>Kp8GX&+UYXqU0z!( z2MO1L?T}7w^;EG;0tE>nML9?VdK%dhg{a zBWhg7=Udxt#LpvcpDy)0C+@Xg#DsJ6kRB}Lzq?yTOFaci5^)V-bS;+EmThq-h;alk zb!1$Z$j$b|To>iJaDN8-s-QnOlU^Tb`w9Dc8AkbeX%8fJO}dzYrdJY^8DUbysbCkF zi+`#Yc~nL--hpm>V4I+N-BHFJ*-%*izODO1`gdlG=5+t+mw>OSv4Nziq*{7Mv6Oxf z(@b2M;F*n-=>frQS*z0Jav6rncj`Luh4V*$*luP0JbsHke8g;t#oNcBf^;&-sOJ31%4L!N%NQJhu{qg=KUZ?Fmb`biwa*nanb#& zvwdF4KbItt-tj;2O%8KUiOV(XLR=ks8}fHoCF>Tr9N>%o+1sGMOJ%@u-vwv^HqCxJ zIW$z0bFo(z4AdTxJj!yHiAY6*R$cSn6@cD>r)e;!+VGC+24=M#V&mvId9UPBD^9TA0GdhC;8VBGii~t zqGqmZ=h8^bp_-qTp`3=d_QpLS+Op<%Rc#q=;OH0V;Je(ls?yKK=ZZ2nIZUBA#PT)S z3!Hu&zkdgAaODUpHASOk;O$N!&MRX3D{t2H%);#lf7Z;*JXk;?*1a5!Y=DwMK#<=D z9Hh#y=Z$SstYN9ztHK$uFFcRlCiK^FuIhu!f9QHP{ey{k?An>Icc$h8bmUe1>c^fF z<#%T1i)lc%@E-GvnmgFH+Q>XF)i8QPG1kw9l$!BHUB0wUI;HL!Q)^JVHBUE&*BAH4 z+PD(6SJube+D$|A-Zyj)52TX@$?kYdMJu%mArbm$e%f-OA984B-py|?HKayEr)M)( zxO_<1iMN=O4Inc7S^(A`1t#w{-oUALxfbxsxT6tK=Agq9xpnVAMGEsC(s7T<-tt}@ z+DB=BJil>_EOFXAehGK0TF@S3=pT2bf$-qlG2?7kw~}wcjrEOHqtv%hFT7!qs->yYp4M zWx(f`H|Q>8?n?%00+*28T#G0FBO-Bb-;wE~b~BnelJ0fq2;aDW3S?#S$yFcDl0uWn ztGV6&N2*B0+$Q!7pS2P+jj`y!NKT(B4t_WL3E=7eWW1g^YZhV+-5T%B8o5VRBm> zKE=cjW40C< zs90FNlonHtWS_>&D_*qTHFf`xV=y~Yn@7&WIG^;LPxB5JKPD$Irh5ytj`DAjh?S=5pv zWQX|w8j=2I*L2)^H{G;Td<*qd~CJTtByGCWQa%?1q zTbtVqr~JcUSeRpac}LifGHJ5*o>(FX``2V{d1OAqcGPe>2D|e?A`XtN>JN`DYhW5t z>ZvT>+2UX!!{DdN?f%RmE}*%jT%tI_Anvp}Zq=NxO92ycv*e0qLmE}yZvg9VWl|pL zJQvpFV1xemqtIf8CK?C}A5_IO)ogJ8>g>XGbLI0^%iEqJ+^cGyRFUA0;u<4}xD;bg zZmiL$JqK64u;ZpK$^sE*NUL-!?yzMz(mlU591(z7kkD8n7+67-(?ZtCg<)+GmrVQ7 zRG{BSk6=GjNV=yngd?UsrC=^_HEe@Aq5}FG zhN@SxKi%%okDFjVqA@C+p2dnjaTV2`wM*6F#B(Pb&j6SZ!FT=I@rT20)H6}}1t;5G zuS#P@#faq6k_Q%qV@URPnEQi!Wy)Fqcfolk&BmX8&bnJSE}SeA4Ye0GtRIsD`zP>= z234y{*Z*p4pv!|1ZDyu5Y3-%N#Zc+hGi9mnA=r<)&N8qY!k!_OsfgEmEcIB^82IbV zPX-b>HRyr14s+R;K+n-IFnw9t;_?*>JBcMPot=amR3R!0#Hq;+-a1TWIUAs*XOJX? zA6&|2q28)eQ+Sb`286VZgqE$8n;1v1=JXp%G0Rt=>p-^ud=soEz^==FDVWC|(_RCA z$=kK=-dF2abm9tmsm)KM$XHv4>2c{7P&CAZm}bBRFD;4on2*>&HA=4`9PzI+2XqaG zh0O^p=`7BXD|9}$0%2CSsLvV6+$oXHZ?Qm%pfImv|HYB`Z7EYf@VU+=Oc8ef=m#j+ z=nIyoxhVQ1o~MJr)}3F+6Qys0gzFnBNUp}qSF~63_;;AEXOINNjt={O|3s?e8iq!; zS&{))#6lMP3E|;;CHBQND1yg^!^S%duA`4Se7e^k_^o_$Ja_bb`@IEUM0^3^dSc%% zb0MP+#fhGeO6VWssp|oA=t3r?g?}vMRF%K*x&2l6g z0pVn#d5BNwB$bhlxdETqai6*AH>;S(g+7^i0v^#Lu0T$%2z)n>?BBOu?fbs1Qxkl* zcac(dpn0k{;6ssdGdH|j?htZqGS!fYeH17{}Jk@)?SIa{EdodZd1#x^8j- z*$hu44++Sp#et+x5g6oP8G$W#NZlve$GW!2C`bY%&3JwXkhi*i#}b@z*SAIK%9HT8 z|CK`i-v{-!&bm}R-EAL&7D!8DOqnNJL{_fCq9cUO!jbc{?i0b1rZL)&R%|upZ`-o> zC_Bl!@w}M~Ccf<_-i>G5UgLsGRIoUnZhzi%J)Zu2d>>H)QEG57jWOoaBviCLu25clrt0qX1L;|AsCdiMiF*#3{p=n%J!h(yRb4cN5vRlkQxRUBC`!f|6Af3Vjg zU^y>HMjB6-BQ@Qb0zEZ;-gXSotxnlz+?Q)5CzmuAgi=C-7JolidP?KeXDhzryR@AL z%LikTcI=5Rh?^8k%Fb~a_G)9z!(QpHYLs#>Y%!sbt}_2kJ;6 z!)~pD6`jT#lCk~mA9_gtkZsM)4nK zaJ+v;59O5-7|V?rx;22ulbeuAZHG7*kJu{w{~ohE$>*ZN^zTCmV&L5s zT?6AwQKr-Sr(Jdn#t-8}8+5BiF!D3!oln%ow-dq&>`&>f+D?&OCI80o~jayC#FB% z6w_lOWX~h6!)J*yK&!jrLY`$BbuD4qm(8I+U|MmP;~aN}!3g`P7n8T%v~*xG4MQex z#nfKmz-oVJKjUPoR%;)s98Q(knJGwCk@^c-aHQ$a?McLqRbm5dcDs-1GTNNcr(-l**I&9!EcTitZq65WKJQ9S+NQ`X4zgOSOEzt_^8YNhOfVCi7 z!S(l#p!ookPG*M7WNw2?OWK|b#)9g6Rsik!i(11^82+245KS@DPzttO)b}K~ft1Ey z5hxv0f_1xBS{jbS4-aD!G=Lj_oeiX`-pXpRq9M!X>U-;i1N>KQzP zc^AQ{dGD!VX^!S)P9`wI1ZNbnimpIRY#GU9Q39$991lp$_VGnp6KK|;6%|}q0#o;t zK{6KdAM~^}WH6!x)D*;|=)&m(WastNd=O9@scMo^|9}UwJxU?YqwrF9PZ&WS(zw2f zkg(A+bjrh>U;|wLeZWbR-6jru07OxSr@fdLK;LTYP`Q!cNMb$7I}noz%kdkXa}!VC zWiW*(d&M|y;WW0u#TC{b_(toyagfSPa&Z`mN1%}V2y?FkWG-)IaG%3ox#8lnsQlS=076?^WV?Rr+rpE=s|_5U zE$_~ZWeiXb2Zp9SQhh2WVO;tBWLzz5P`S2@`)Vtr)uy_)ntk6v6nM0!M>FZt;@W!r%5)vl zPzfNvfxw-p@oxTgASU#uN+?yK&8t0IxiPmgVhn-*cheM{-KIT;8q7eQcxlA4J7X7q*;GQW3K3c^RE z!nYhBk$Y3Z)bU+_D0A}_JJ1PV<&JVGTn=Ymws-Ezp88Rt@GLH>0@+r zsI^AAI6co88G2sr7q5*s-4QqDxY!IG3ELO=$Fooy2dURil>bk}^)Vj#yLi!l+ZS^< zaTq`PKo{Y+$lrZ>B977TEd=pWRE~LTy8?E<9U!hSc6e68(m7$8RP?xA$xwti)-;02 zB{^$9EhStL>yLV%c)D|{o~8>bw>93*96~^$Hp47Ifcb`_8zeBRLHsHn!%@^3;fEP8 z;@&m28a@1mv~35ZE0PX& z2*}%KMe&M&DNYg{up~iKYSOyhpZQEN+?68&_p9z5Soy%Rz%O`MQN#QHQ-xs3#z9KT z|HajHz*G7Cf3Cf^xHj2Y*B+5%Z?ZBH5wiEH8xoS0@*sO=6H;apQOJlwW@PU@;(u

q{5(69dcB_(v=*?R5j1?9q5CuVEbNNd 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 OuQ+B@Z^h|Ip#K9BYgNPm diff --git a/src/sig/Emoticon.java b/src/sig/Emoticon.java index 3cb0172..4f01edb 100644 --- a/src/sig/Emoticon.java +++ b/src/sig/Emoticon.java @@ -1,4 +1,5 @@ package sig; +import java.awt.Font; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; @@ -12,6 +13,7 @@ public class Emoticon { private BufferedImage image=null; private String emotename=null; private String spacefiller=""; + private String spacefillersmall=""; public Emoticon(String emoteName, URL onlinePath) { try { @@ -29,7 +31,8 @@ public class Emoticon { System.out.println("Saved to "+file.getName()+"."); emotename = emoteName; } - spacefiller = GetSpaceLength(); + spacefiller = GetSpaceLength(sigIRC.panel.programFont); + spacefillersmall = GetSpaceLength(sigIRC.panel.userFont); //System.out.println("Space size for "+emotename+" is "+spacefiller.length()); } catch (IOException e) { e.printStackTrace(); @@ -46,23 +49,24 @@ public class Emoticon { image = ImageIO.read(file); emotename = emoteName; } - spacefiller = GetSpaceLength(); + spacefiller = GetSpaceLength(sigIRC.panel.programFont); + spacefillersmall = GetSpaceLength(sigIRC.panel.userFont); //System.out.println("Space size for "+emotename+" is "+spacefiller.length()); } catch (IOException e) { e.printStackTrace(); } } - private String GetSpaceLength() { + private String GetSpaceLength(Font f) { StringBuilder spaces = new StringBuilder(); - while (SpaceFilledIsSmallerThanImageWidth(spaces)) { + while (SpaceFilledIsSmallerThanImageWidth(spaces,f)) { spaces.append(" "); } return spaces.toString(); } - public boolean SpaceFilledIsSmallerThanImageWidth(StringBuilder spaces) { - return TextUtils.calculateStringBoundsFont(spaces.toString(), sigIRC.panel.programFont).getWidth()=bounds.getX() && x<=bounds.getX()+bounds.getWidth() && - y>=(int)bounds.getY()-Module.IMG_DRAGBAR.getHeight() && - y<=(int)bounds.getY(); + return x>=position.getX() && x<=position.getX()+position.getWidth() && + y>=(int)position.getY()-Module.IMG_DRAGBAR.getHeight() && + y<=(int)position.getY(); } public void mousePressed(MouseEvent ev) { @@ -101,9 +102,9 @@ public class Module { sigIRC.panel.repaint(getDrawBounds().getBounds()); int mouseX = sigIRC.panel.lastMouseX+(int)dragOffset.getX(); int mouseY = sigIRC.panel.lastMouseY+(int)dragOffset.getY(); - int oldX = (int)bounds.getX(); - int oldY = (int)bounds.getY(); - bounds = new Rectangle(mouseX, mouseY,(int)bounds.getWidth(),(int)bounds.getHeight()); + int oldX = (int)position.getX(); + int oldY = (int)position.getY(); + position = new Rectangle(mouseX, mouseY,(int)position.getWidth(),(int)position.getHeight()); //System.out.println(sigIRC.panel.lastMouseX+","+sigIRC.panel.lastMouseY); ModuleDragEvent(oldX,oldY,mouseX,mouseY); } @@ -117,6 +118,10 @@ public class Module { }*/ } + public Rectangle2D getPosition() { + return position; + } + public void run() { } @@ -131,16 +136,16 @@ public class Module { private void drawModuleHeader(Graphics g) { g.drawImage(Module.IMG_DRAGBAR, - (int)bounds.getX()+2, - (int)bounds.getY()-Module.IMG_DRAGBAR.getHeight(), - (int)bounds.getWidth()-4, + (int)position.getX()+2, + (int)position.getY()-Module.IMG_DRAGBAR.getHeight(), + (int)position.getWidth()-4, Module.IMG_DRAGBAR.getHeight(), sigIRC.panel); - DrawUtils.drawTextFont(g, sigIRC.panel.smallFont, (int)bounds.getX(), (int)bounds.getY()-titleHeight/2+4, Color.BLACK, this.name); + DrawUtils.drawTextFont(g, sigIRC.panel.smallFont, (int)position.getX(), (int)position.getY()-titleHeight/2+4, Color.BLACK, this.name); } private Rectangle2D getDrawBounds() { - Rectangle2D drawBounds = new Rectangle((int)bounds.getX(),(int)bounds.getY()-titleHeight+3,(int)bounds.getWidth(),(int)bounds.getHeight()+titleHeight); + Rectangle2D drawBounds = new Rectangle((int)position.getX(),(int)position.getY()-titleHeight+3,(int)position.getWidth(),(int)position.getHeight()+titleHeight); return drawBounds; } diff --git a/src/sig/MyPanel.java b/src/sig/MyPanel.java index 077e54b..55998aa 100644 --- a/src/sig/MyPanel.java +++ b/src/sig/MyPanel.java @@ -28,6 +28,9 @@ import javax.swing.JMenuItem; import javax.swing.JPanel; import javax.swing.JPopupMenu; +import sig.modules.ChatLogModule; +import sig.modules.ChatLog.ChatLogMessage; + public class MyPanel extends JPanel implements MouseListener, ActionListener, MouseWheelListener, KeyListener, ComponentListener, WindowListener{ //List messages = new ArrayList(); final public static Font programFont = new Font(sigIRC.messageFont,0,24); @@ -93,6 +96,11 @@ public class MyPanel extends JPanel implements MouseListener, ActionListener, Mo for (Module m : sigIRC.modules) { m.draw(g); } + for (int i=0;i displayMessage = new ArrayList(); + final static public int MESSAGE_SPACING = 24; + final static public int BORDER_SPACING = 8; + final static public Color SHADOW_COL = new Color(35,35,35,255); + int usernameWidth = 0; + boolean active=true; + + public ChatLogMessage(String rawMessage) { + this.refModule = ChatLogModule.chatlogmodule; + this.rawMessage = rawMessage; + this.position = new Point(0,(int)refModule.getPosition().getHeight()-MESSAGE_SPACING); + WrapText(); + for (ChatLogMessage clm : this.refModule.messageHistory) { + clm.position.setLocation( + clm.position.getX(), + clm.position.getY()-messageDisplaySize.getY()); + //System.out.println(clm.rawMessage+": "+clm.position); + } + this.position.setLocation(this.position.getX(), this.position.getY()-messageDisplaySize.getY()+ChatLogModule.chatlogmodule.scrolllog_yoffset); + //System.out.println(displayMessage); + DetectUsername(displayMessage); + if (this.username!=null) { + displayMessage.set(0,GetMessage(displayMessage.get(0))); + usernameWidth = (int)TextUtils.calculateStringBoundsFont(this.username, sigIRC.panel.userFont).getWidth(); + } + for (int i=0;i0) { + String word = basemsg.substring(marker+1, space); + //System.out.println("Word is '"+word+"'"); + sigIRC.emoticons.addAll(sigIRC.emoticon_queue); + sigIRC.emoticon_queue.clear(); + for (Emoticon e : sigIRC.emoticons) { + //System.out.println("Checking for emoticon "+e.getEmoteName()); + try { + if (e.getEmoteName().equals(word)) { + if (e instanceof SubEmoticon) { + SubEmoticon se = (SubEmoticon)e; + if (!se.canUserUseEmoticon(username)) { + //System.out.println("User "+username+" is not subscribed to "+se.channelName+"'s channel!"); + break; + } + } + //System.out.println(" Found one!"); + basemsg = TextUtils.replaceFirst(basemsg, e.getEmoteName(), e.getSmallSpaceFiller()); + GenerateEmoticon(marker+1, ypos, basemsg, e); + space = basemsg.indexOf(" ", marker+1); + break; + } + } catch (NullPointerException ex) { + ex.printStackTrace(); + } + } + marker=space; + } else { + break; + } + } + //textMaxWidth = (int)TextUtils.calculateStringBoundsFont(basemsg, sigIRC.panel.programFont).getWidth(); + //textMaxHeight = Math.max(textMaxHeight,(int)TextUtils.calculateStringBoundsFont(basemsg, sigIRC.panel.programFont).getHeight()); + return basemsg; + } + + private void GenerateEmoticon(int textpos, int ypos, String basemsg, Emoticon e) { + String cutstring = basemsg.substring(0, textpos); + double width = TextUtils.calculateStringBoundsFont(cutstring, sigIRC.panel.userFont).getWidth(); + //System.out.println("Width of '"+cutstring+"' is "+width); + sigIRC.createEmoticon(e, this, (int)(width), ypos+16); + //textMaxHeight = Math.max(textMaxHeight, e.getImage().getHeight()); + //textMaxWidth = (int)(width + e.getImage().getWidth()+1); + } + + private String GetMessage(String msg) { + String basemsg = " "+msg.substring(msg.indexOf(":")+2, msg.length())+" "; + //basemsg = ConvertMessageSymbols(basemsg); + //basemsg = ReplaceMessageWithEmoticons(basemsg); + return basemsg.replaceFirst(" ", "").substring(0,basemsg.length()-1); + } + + private void DetectUsername(List messages) { + if (messages.size()>0) { + String username = GetUsername(messages.get(0)); + if (username!=null) { + this.username = username; + } + } + } + + private Color GetUserNameColor(String username) { + Random r = new Random(); + r.setSeed(username.hashCode()); + int randomnumb = r.nextInt(3); + Color col; + switch (randomnumb) { + case 0:{ + col=new Color(255,r.nextInt(128)+64,r.nextInt(128)+64,255); + }break; + case 1:{ + col=new Color(r.nextInt(128)+64,255,r.nextInt(128)+64,255); + }break; + case 2:{ + col=new Color(r.nextInt(128)+64,r.nextInt(128)+64,255,255); + }break; + default:{ + col=Color.GREEN; + } + } + return col; + } + + private String GetUsername(String msg) { + if (msg.contains(":")) { + return msg.substring(0,msg.indexOf(":")); + } else { + return null; + } + } + + private void WrapText() { + String rawmessage = rawMessage; + int textWidth = (int)TextUtils.calculateStringBoundsFont(rawmessage, sigIRC.panel.userFont).getWidth(); + int maxWidth = (int)refModule.getPosition().getWidth()-BORDER_SPACING; + do { + rawmessage = BreakTextAtNextSection(rawmessage,maxWidth); + textWidth = (int)TextUtils.calculateStringBoundsFont(rawmessage, sigIRC.panel.userFont).getWidth(); + } while (textWidth>maxWidth); + if (rawmessage.length()>0) { + displayMessage.add(rawmessage); + } + messageDisplaySize = new Point((int)(refModule.getPosition().getWidth()-BORDER_SPACING),(int)(displayMessage.size()*MESSAGE_SPACING)); + //System.out.println(displayMessage+": "+messageDisplaySize); + } + + private String BreakTextAtNextSection(String msg, int maxWidth) { + int marker = 1; + int textWidth = (int)TextUtils.calculateStringBoundsFont(msg.substring(0, marker), sigIRC.panel.userFont).getWidth(); + while (textWidth=ChatLogModule.messageHistoryCount) { + ChatLogModule.chatlogmodule.messageHistory.remove(0).cleanup(); + } + ChatLogModule.chatlogmodule.messageHistory.add(new ChatLogMessage(s)); + } + } + + public void cleanup() { + active=false; + } + + public boolean isVisible() { + return (refModule.getPosition().getY()+position.getY()+MESSAGE_SPACING)>refModule.getPosition().getY() && + (refModule.getPosition().getY()+position.getY()+messageDisplaySize.getY())0) { + String word = basemsg.substring(marker+1, space); + //System.out.println("Word is '"+word+"'"); + sigIRC.emoticons.addAll(sigIRC.emoticon_queue); + sigIRC.emoticon_queue.clear(); + for (Emoticon e : sigIRC.emoticons) { + //System.out.println("Checking for emoticon "+e.getEmoteName()); + try { + if (e.getEmoteName().equals(word)) { + if (e instanceof SubEmoticon) { + SubEmoticon se = (SubEmoticon)e; + if (!se.canUserUseEmoticon(username)) { + //System.out.println("User "+username+" is not subscribed to "+se.channelName+"'s channel!"); + break; + } + } + //System.out.println(" Found one!"); + basemsg = TextUtils.replaceFirst(basemsg, e.getEmoteName(), e.getSpaceFiller()); + GenerateEmoticon(marker+1, basemsg, e); + space = basemsg.indexOf(" ", marker+1); + break; + } + } catch (NullPointerException ex) { + ex.printStackTrace(); + } + } + marker=space; + } else { + break; + } + } + textMaxWidth = (int)TextUtils.calculateStringBoundsFont(basemsg, sigIRC.panel.programFont).getWidth(); + textMaxHeight = Math.max(textMaxHeight,(int)TextUtils.calculateStringBoundsFont(basemsg, sigIRC.panel.programFont).getHeight()); + return basemsg; + } + + private void GenerateEmoticon(int pos, String basemsg, Emoticon e) { + String cutstring = basemsg.substring(0, pos); + double width = TextUtils.calculateStringBoundsFont(cutstring, sigIRC.panel.programFont).getWidth(); + //System.out.println("Width of '"+cutstring+"' is "+width); + sigIRC.createEmoticon(e, this, (int)(width), 0); + textMaxHeight = Math.max(textMaxHeight, e.getImage().getHeight()); + //textMaxWidth = (int)(width + e.getImage().getWidth()+1); + }*/ +} diff --git a/src/sig/modules/ChatLog/ChatLogTwitchEmote.java b/src/sig/modules/ChatLog/ChatLogTwitchEmote.java new file mode 100644 index 0000000..39af1eb --- /dev/null +++ b/src/sig/modules/ChatLog/ChatLogTwitchEmote.java @@ -0,0 +1,60 @@ +package sig.modules.ChatLog; + +import java.awt.Graphics; + +import javax.swing.SwingUtilities; + +import sig.Emoticon; +import sig.ScrollingText; +import sig.sigIRC; + +public class ChatLogTwitchEmote { + Emoticon emote; + int x=0; //X Offset + int y=0; //Y Offset + ChatLogMessage text; + + public ChatLogTwitchEmote(Emoticon emote, ChatLogMessage textref, int x, int y) { + this.emote=emote; + this.x=x; + this.y=y+24-emote.getImage().getHeight(); + this.text = textref; + } + + public boolean run() { + //this.x-=paint.TEXTSCROLLSPD; + /*if (textRefIsVisible()) { + SwingUtilities.invokeLater(new Runnable() { + public void run() { + sigIRC.panel.repaint( + Math.max(x,0), + Math.max(y, 0), + Math.min(sigIRC.panel.getWidth()-x,emote.getImage().getWidth()), + Math.min(sigIRC.panel.getHeight()-y,emote.getImage().getHeight())); + } + }); + }*/ + if (text==null || !text.active) { + return false; + } else { + return true; + } + } + + public void draw(Graphics g) { + if (WithinBounds((int)(text.position.getX()+x), (int)(text.position.getY()+y), emote.getImage().getWidth(), emote.getImage().getHeight())) { + g.drawImage(emote.getImage(), (int)(text.refModule.getPosition().getX()+text.position.getX()+x), (int)(text.refModule.getPosition().getY()+text.position.getY()+y), sigIRC.panel); + } + } + + private boolean WithinBounds(double x, double y, double w, double h) { + if (x0 && y0) { + return true; + } + return false; + } + + public boolean textRefIsVisible() { + return text.isVisible(); + } +} diff --git a/src/sig/modules/ChatLogModule.java b/src/sig/modules/ChatLogModule.java new file mode 100644 index 0000000..f09571e --- /dev/null +++ b/src/sig/modules/ChatLogModule.java @@ -0,0 +1,182 @@ +package sig.modules; + +import java.awt.Color; +import java.awt.Graphics; +import java.awt.event.KeyEvent; +import java.awt.event.MouseWheelEvent; +import java.awt.geom.Rectangle2D; +import java.io.File; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Calendar; +import java.util.ConcurrentModificationException; +import java.util.List; + +import javax.imageio.ImageIO; +import javax.swing.SwingUtilities; + +import sig.Module; +import sig.sigIRC; +import sig.modules.ChatLog.ChatLogMessage; +import sig.utils.FileUtils; + +public class ChatLogModule extends Module{ + public static int messageHistoryCount = 50; + public List messageHistory = new ArrayList(); + int delay = 150; + boolean initialized=false; + public static ChatLogModule chatlogmodule; + public int scrolllog_yoffset = 0; + + public ChatLogModule(Rectangle2D bounds, String moduleName) { + super(bounds, moduleName); + //Initialize(); + chatlogmodule = this; + } + + private void Initialize() { + messageHistoryCount = sigIRC.chatlogMessageHistory; + Calendar cal = Calendar.getInstance(); + String logFileLoc = sigIRC.BASEDIR+"sigIRC/logs/log_"+(cal.get(Calendar.MONTH)+1)+"_"+cal.get(Calendar.DAY_OF_MONTH)+"_"+cal.get(Calendar.YEAR)+".txt"; + File todaysLogFile = new File(logFileLoc); + if (todaysLogFile.exists()) { + String[] logContents = FileUtils.readFromFile(logFileLoc); + if (logContents.length>messageHistoryCount) { + logContents = Arrays.copyOfRange(logContents, logContents.length-messageHistoryCount-1, logContents.length); + } + ChatLogMessage.importMessages(logContents); + } + } + + public void run() { + super.run(); + if (delay>0) { + delay--; + } else + if (!initialized) + { + Initialize(); + initialized=true; + } + for (int i=0; i0) { + if (HighestMessageIsVisible()) { + return; + } + } + if (scrolllog_yoffset+scrollAmt>0) { + scrolllog_yoffset+=scrollAmt; + moveAllMessages(scrollAmt); + //System.out.println("Moving all messages by "+(-(ev.getWheelRotation()*scrollMult))); + } else + { + //System.out.println("Cannot move beyond lower bound. Moving all messages by -"+(scrolllog_yoffset)+"."); + moveAllMessages(-scrolllog_yoffset); + scrolllog_yoffset=0; + } + } + } + + private boolean HighestMessageIsVisible() { + if (messageHistory.size()>0) { + ChatLogMessage clm = messageHistory.get(0); + return clm.isVisible(); + } + return true; + } + + public void moveAllMessages(int yAmt) { + for (int i=0;i=position.getX() && + mouseX<=position.getX()+position.getWidth() && + mouseY>=position.getX() && + mouseY<=position.getX()+position.getHeight(); + } + + + public void keypressed(KeyEvent ev) { + int key = ev.getKeyCode(); + int scroll = 0; + if (key==KeyEvent.VK_PAGE_UP) { + scroll=8; + } else + if (key==KeyEvent.VK_PAGE_DOWN) { + scroll=-8; + } + if (key==KeyEvent.VK_HOME) { + scroll=Math.abs(GetHighestMessagePosition()); + } + if (key==KeyEvent.VK_END) { + moveAllMessages(-scrolllog_yoffset); + scrolllog_yoffset=0; + return; + } + if (scroll>0) { + if (HighestMessageIsVisible()) { + return; + } + } + if (scrolllog_yoffset+scroll>0) { + scrolllog_yoffset+=scroll; + moveAllMessages(scroll); + //System.out.println("Moving all messages by "+(-(ev.getWheelRotation()*scrollMult))); + } else + { + //System.out.println("Cannot move beyond lower bound. Moving all messages by -"+(scrolllog_yoffset)+"."); + moveAllMessages(-scrolllog_yoffset); + scrolllog_yoffset=0; + } + } + + private int GetHighestMessagePosition() { + if (messageHistory.size()>0) { + ChatLogMessage clm = messageHistory.get(0); + return (int)clm.position.getY(); + } + return 0; + } +} diff --git a/src/sig/modules/TouhouMotherModule.java b/src/sig/modules/TouhouMotherModule.java index 966425e..ec95074 100644 --- a/src/sig/modules/TouhouMotherModule.java +++ b/src/sig/modules/TouhouMotherModule.java @@ -121,8 +121,8 @@ public class TouhouMotherModule extends Module implements ActionListener{ } public void ApplyConfigWindowProperties() { - sigIRC.touhoumothermodule_X=(int)bounds.getX(); - sigIRC.touhoumothermodule_Y=(int)bounds.getY(); + sigIRC.touhoumothermodule_X=(int)position.getX(); + sigIRC.touhoumothermodule_Y=(int)position.getY(); sigIRC.config.setInteger("TOUHOUMOTHER_module_X", sigIRC.touhoumothermodule_X); sigIRC.config.setInteger("TOUHOUMOTHER_module_Y", sigIRC.touhoumothermodule_Y); } @@ -133,7 +133,7 @@ public class TouhouMotherModule extends Module implements ActionListener{ if (currentBoss!=null) { DrawBossAndPlayerInfo(g); } else { - DrawUtils.drawOutlineText(g, sigIRC.panel.programFont, (int)bounds.getX()+4, (int)bounds.getY()+4+16, 1, Color.WHITE, new Color(30,0,86,255), + DrawUtils.drawOutlineText(g, sigIRC.panel.programFont, (int)position.getX()+4, (int)position.getY()+4+16, 1, Color.WHITE, new Color(30,0,86,255), DataProperty.getDataPropertyBasedOnID(data_display_id).getDisplayName()); DrawSortedHealthbarsBasedOnDataProperty(g, DataProperty.getDataPropertyBasedOnID(data_display_id), 0, -64); } @@ -144,24 +144,24 @@ public class TouhouMotherModule extends Module implements ActionListener{ } public void DrawBossAndPlayerInfo(Graphics g) { - g.drawImage(bossImage, (int)bounds.getX()+4, (int)bounds.getY()+4, sigIRC.panel); - DrawUtils.drawOutlineText(g, sigIRC.panel.programFont, Math.min(bossImage.getWidth()+4,160)+(int)bounds.getX()+4, (int)bounds.getY()+4+16, 1, Color.WHITE, new Color(30,0,86,255), + g.drawImage(bossImage, (int)position.getX()+4, (int)position.getY()+4, sigIRC.panel); + DrawUtils.drawOutlineText(g, sigIRC.panel.programFont, Math.min(bossImage.getWidth()+4,160)+(int)position.getX()+4, (int)position.getY()+4+16, 1, Color.WHITE, new Color(30,0,86,255), currentBoss.getName()); - DrawUtils.drawOutlineText(g, sigIRC.panel.userFont, Math.min(bossImage.getWidth()+4,160)+(int)bounds.getX()+4, (int)bounds.getY()+4+48, 1, Color.WHITE, new Color(30,0,86,255), + DrawUtils.drawOutlineText(g, sigIRC.panel.userFont, Math.min(bossImage.getWidth()+4,160)+(int)position.getX()+4, (int)position.getY()+4+48, 1, Color.WHITE, new Color(30,0,86,255), real_bossHP+" / "+bossMaxHP +" ("+Math.round(((real_bossHP/(double)bossMaxHP)*100))+"%)"); DrawUtils.drawHealthbar(g, new Rectangle( - Math.min(bossImage.getWidth()+4,160)+(int)bounds.getX()+4, - (int)bounds.getY()+4+20, + Math.min(bossImage.getWidth()+4,160)+(int)position.getX()+4, + (int)position.getY()+4+20, (int)TextUtils.calculateStringBoundsFont(bossMaxHP+" / "+bossMaxHP +" ("+Math.round((1d*100))+"%", sigIRC.panel.userFont).getWidth(), 8 ), real_bossHP/(double)bossMaxHP, ChooseHealthbarColor(real_bossHP/(double)bossMaxHP)); - DrawUtils.drawOutlineText(g, sigIRC.panel.userFont, Math.min(bossImage.getWidth()+4,160)+(int)bounds.getX()+16, (int)bounds.getY()+4+68, 1, Color.WHITE, new Color(30,0,86,255), + DrawUtils.drawOutlineText(g, sigIRC.panel.userFont, Math.min(bossImage.getWidth()+4,160)+(int)position.getX()+16, (int)position.getY()+4+68, 1, Color.WHITE, new Color(30,0,86,255), TextUtils.convertSecondsToTimeFormat(secondsCount)); int record = TimeRecord.getRecord(currentBoss.getID()); if (record!=TimeRecord.ERROR_VALUE) { - DrawUtils.drawOutlineText(g, sigIRC.panel.smallFont, Math.min(bossImage.getWidth()+4,160)+(int)bounds.getX()+ + DrawUtils.drawOutlineText(g, sigIRC.panel.smallFont, Math.min(bossImage.getWidth()+4,160)+(int)position.getX()+ TextUtils.calculateStringBoundsFont(TextUtils.convertSecondsToTimeFormat(secondsCount), sigIRC.panel.userFont).getWidth()+20, - (int)bounds.getY()+4+72, 1, Color.WHITE, new Color(30,0,86,255), + (int)position.getY()+4+72, 1, Color.WHITE, new Color(30,0,86,255), "RECORD "+TextUtils.convertSecondsToTimeFormat(record)); } DrawSortedHealthbarsBasedOnDataProperty(g, DataProperty.CURRENTDAMAGE, 0, 0); @@ -175,18 +175,18 @@ public class TouhouMotherModule extends Module implements ActionListener{ int totaldmg = calculateDataPropertyTotalValue(property); for (int i=0;i0) { - DrawUtils.drawOutlineText(g, sigIRC.panel.userFont, Math.min(((bossImage!=null)?bossImage.getWidth():0)+4,160)+(int)bounds.getX()+4-Math.min(50, (bossImage!=null)?bossImage.getWidth():0)+x, (int)bounds.getY()+4+96+pos+y, 1, Color.WHITE, new Color(30,0,86,255), + DrawUtils.drawOutlineText(g, sigIRC.panel.userFont, Math.min(((bossImage!=null)?bossImage.getWidth():0)+4,160)+(int)position.getX()+4-Math.min(50, (bossImage!=null)?bossImage.getWidth():0)+x, (int)position.getY()+4+96+pos+y, 1, Color.WHITE, new Color(30,0,86,255), characterDatabase[sorteddmg[i]].getName()); DrawUtils.drawHealthbar(g, new Rectangle( - Math.min(((bossImage!=null)?bossImage.getWidth():0)+4,160)+(int)bounds.getX()+4+Math.max(0, 50-((bossImage!=null)?bossImage.getWidth():0))+x, - (int)bounds.getY()+4+86+pos+y, + Math.min(((bossImage!=null)?bossImage.getWidth():0)+4,160)+(int)position.getX()+4+Math.max(0, 50-((bossImage!=null)?bossImage.getWidth():0))+x, + (int)position.getY()+4+86+pos+y, 96, 10 ) , (double)characterDatabase[sorteddmg[i]].getDataProperty(property)/maxdmg, characterDatabase[sorteddmg[i]].getColor()); DecimalFormat df = new DecimalFormat("0.0"); - DrawUtils.drawOutlineText(g, sigIRC.panel.smallFont, Math.min((bossImage!=null)?bossImage.getWidth():0+4,160)+(int)bounds.getX()+4+Math.max(0, 50-((bossImage!=null)?bossImage.getWidth():0))+108+x, (int)bounds.getY()+4+96+pos+y, 1, Color.WHITE, new Color(30,0,86,255), + DrawUtils.drawOutlineText(g, sigIRC.panel.smallFont, Math.min((bossImage!=null)?bossImage.getWidth():0+4,160)+(int)position.getX()+4+Math.max(0, 50-((bossImage!=null)?bossImage.getWidth():0))+108+x, (int)position.getY()+4+96+pos+y, 1, Color.WHITE, new Color(30,0,86,255), characterDatabase[sorteddmg[i]].getDataProperty(property)+" "+"("+df.format(((((double)characterDatabase[sorteddmg[i]].getDataProperty(property)/totaldmg))*100))+"%)"); pos+=16; } @@ -507,19 +507,19 @@ public class TouhouMotherModule extends Module implements ActionListener{ private void DefineButton() { updateButton = new UpdateButton(this, //56x20 pixels new File(sigIRC.BASEDIR+"update.png"), - (int)bounds.getX()+320-56,(int)bounds.getY()+sigIRC.panel.getHeight()/2-20); + (int)position.getX()+320-56,(int)position.getY()+sigIRC.panel.getHeight()/2-20); killButton = new KillButton(this, new File(sigIRC.BASEDIR+"kill.png"), - (int)bounds.getX(),(int)bounds.getY()+sigIRC.panel.getHeight()/2-20); + (int)position.getX(),(int)position.getY()+sigIRC.panel.getHeight()/2-20); swapButton = new SwapButton(this, new File(sigIRC.BASEDIR+"swap.png"), - (int)bounds.getX(),(int)bounds.getY()+sigIRC.panel.getHeight()/2-40); + (int)position.getX(),(int)position.getY()+sigIRC.panel.getHeight()/2-40); moduleButtons.add(updateButton); moduleButtons.add(killButton); moduleButtons.add(swapButton); } public Rectangle2D getBounds() { - return bounds; + return position; } } diff --git a/src/sig/modules/TwitchModule.java b/src/sig/modules/TwitchModule.java index 75151a5..63d4573 100644 --- a/src/sig/modules/TwitchModule.java +++ b/src/sig/modules/TwitchModule.java @@ -168,8 +168,8 @@ public class TwitchModule extends Module{ } public void ApplyConfigWindowProperties() { - sigIRC.twitchmodule_X=(int)bounds.getX(); - sigIRC.twitchmodule_Y=(int)bounds.getY(); + sigIRC.twitchmodule_X=(int)position.getX(); + sigIRC.twitchmodule_Y=(int)position.getY(); sigIRC.config.setInteger("TWITCH_module_X", sigIRC.twitchmodule_X); sigIRC.config.setInteger("TWITCH_module_Y", sigIRC.twitchmodule_Y); } @@ -428,9 +428,9 @@ public class TwitchModule extends Module{ private void DrawStatisticsBar(Graphics g) { g.setColor(new Color(25,25,25)); - int xoffset = (int)bounds.getX()+4; - int yoffset = (int)(bounds.getY()+follower_img.getHeight()+sigIRC.twitchmodule_newfollowerImgLogoSize); - g.fillPolygon(new int[]{(int)bounds.getX(),(int)(bounds.getX()+bounds.getWidth()),(int)(bounds.getX()+bounds.getWidth()),(int)bounds.getX()}, + int xoffset = (int)position.getX()+4; + int yoffset = (int)(position.getY()+follower_img.getHeight()+sigIRC.twitchmodule_newfollowerImgLogoSize); + g.fillPolygon(new int[]{(int)position.getX(),(int)(position.getX()+position.getWidth()),(int)(position.getX()+position.getWidth()),(int)position.getX()}, new int[]{yoffset-4,yoffset-4,yoffset+16,yoffset+16}, 4); if (currentlyPlaying!=null && currentlyPlaying.length()>0) { @@ -476,25 +476,25 @@ public class TwitchModule extends Module{ //System.out.println(yAlteration); //g.drawImage(follower_img, (int)bounds.getX()+xAlteration, (int)bounds.getY()+yAlteration, sigIRC.panel); //g.drawImage(follower_img, (int)bounds.getX(), (int)bounds.getY(), , , sigIRC.panel) - g.drawImage(follower_img, (int)bounds.getX(), (int)bounds.getY()+canvasYOffset, (int)bounds.getX()+follower_img.getWidth()+canvasXOffset, (int)bounds.getY()+follower_img.getHeight(), + g.drawImage(follower_img, (int)position.getX(), (int)position.getY()+canvasYOffset, (int)position.getX()+follower_img.getWidth()+canvasXOffset, (int)position.getY()+follower_img.getHeight(), -xAlteration, 0, follower_img.getWidth(), follower_img.getHeight()-yAlteration, sigIRC.panel); Rectangle2D usernameTextsize = TextUtils.calculateStringBoundsFont(announcedFollowerUser.getDisplayName(), sigIRC.panel.programFont); - int textY = (int)bounds.getY()+sigIRC.twitchmodule_followerText_Y+yAlteration; - int textX = (int)bounds.getX()+sigIRC.twitchmodule_followerText_centerX+xAlteration; - if (textYbounds.getX()) { - DrawUtils.drawCenteredText(g, sigIRC.panel.programFont, (int)bounds.getX()+sigIRC.twitchmodule_followerText_centerX+xAlteration, (int)bounds.getY()+sigIRC.twitchmodule_followerText_Y+yAlteration, Color.BLACK, announcedFollowerUser.getDisplayName()); + int textY = (int)position.getY()+sigIRC.twitchmodule_followerText_Y+yAlteration; + int textX = (int)position.getX()+sigIRC.twitchmodule_followerText_centerX+xAlteration; + if (textYposition.getX()) { + DrawUtils.drawCenteredText(g, sigIRC.panel.programFont, (int)position.getX()+sigIRC.twitchmodule_followerText_centerX+xAlteration, (int)position.getY()+sigIRC.twitchmodule_followerText_Y+yAlteration, Color.BLACK, announcedFollowerUser.getDisplayName()); } if (announcedFollowerUser.getBio()!=null && !announcedFollowerUser.getBio().equalsIgnoreCase("null")) { if (followerUserLogo!=null) { final int image_size = sigIRC.twitchmodule_newfollowerImgLogoSize; - int img_startx = (int)(bounds.getX()+bounds.getWidth()-ticksPassed*3-(image_size+4)); - int img_starty = (int)(bounds.getY()+follower_img.getHeight()+2-image_size/2); + int img_startx = (int)(position.getX()+position.getWidth()-ticksPassed*3-(image_size+4)); + int img_starty = (int)(position.getY()+follower_img.getHeight()+2-image_size/2); //g.setColor(Color.BLACK); //g.drawRect(img_startx, img_starty, image_size, image_size); g.drawImage(followerUserLogo, img_startx, img_starty, img_startx+image_size, img_starty+image_size, 0, 0, followerUserLogo.getWidth(), followerUserLogo.getHeight(), TextUtils.convertStringToColor(sigIRC.twitchmodule_newfollowerImgBackgroundColor), sigIRC.panel); } if (announcedFollowerUser.getBio()!=null && announcedFollowerUser.getBio().length()>0) { - DrawUtils.drawOutlineText(g, sigIRC.panel.userFont, bounds.getX()+bounds.getWidth()-ticksPassed*3, bounds.getY()+follower_img.getHeight()+2+8, 2, TextUtils.convertStringToColor(sigIRC.twitchmodule_newfollowerTextColor), TextUtils.convertStringToColor(sigIRC.twitchmodule_newfollowerShadowTextColor), announcedFollowerUser.getBio()); + DrawUtils.drawOutlineText(g, sigIRC.panel.userFont, position.getX()+position.getWidth()-ticksPassed*3, position.getY()+follower_img.getHeight()+2+8, 2, TextUtils.convertStringToColor(sigIRC.twitchmodule_newfollowerTextColor), TextUtils.convertStringToColor(sigIRC.twitchmodule_newfollowerShadowTextColor), announcedFollowerUser.getBio()); } } } diff --git a/src/sig/sigIRC.java b/src/sig/sigIRC.java index e46aecd..1b81f2a 100644 --- a/src/sig/sigIRC.java +++ b/src/sig/sigIRC.java @@ -13,8 +13,11 @@ import com.mb3364.twitch.api.handlers.StreamResponseHandler; import com.mb3364.twitch.api.models.Channel; import com.mb3364.twitch.api.models.Stream; +import sig.modules.ChatLogModule; import sig.modules.TouhouMotherModule; import sig.modules.TwitchModule; +import sig.modules.ChatLog.ChatLogMessage; +import sig.modules.ChatLog.ChatLogTwitchEmote; import sig.utils.FileUtils; import sig.utils.TextUtils; @@ -52,6 +55,7 @@ public class sigIRC{ public static List emoticons = new ArrayList(); public static List emoticon_queue = new ArrayList(); public static List twitchemoticons = new ArrayList(); + public static List chatlogtwitchemoticons = new ArrayList(); public static List customsounds = new ArrayList(); public static List modules = new ArrayList(); static UpdateEvent updater = new UpdateEvent(); @@ -84,8 +88,9 @@ public class sigIRC{ static String messageFont="Gill Sans Ultra Bold Condensed"; static String usernameFont="GillSansMTStd-Book"; static String touhoumotherConsoleFont="Agency FB Bold"; - static boolean touhoumothermodule_enabled=true; + static boolean touhoumothermodule_enabled=false; static boolean twitchmodule_enabled=true; + static boolean chatlogmodule_enabled=true; static boolean downloadsComplete=false; static boolean hardwareAcceleration=true; static boolean playedoAuthSoundOnce=false; @@ -101,6 +106,11 @@ public class sigIRC{ public static int touhoumothermodule_height=312; public static int touhoumothermodule_X=0; public static int touhoumothermodule_Y=312; + public static int chatlogmodule_width=320; + public static int chatlogmodule_height=312; + public static int chatlogmodule_X=0; + public static int chatlogmodule_Y=312; + public static int chatlogMessageHistory=50; public static String twitchmodule_newfollowerImgBackgroundColor="90,90,90"; public static String twitchmodule_newfollowerShadowTextColor="26,90,150"; public static String twitchmodule_newfollowerTextColor="255,255,255"; @@ -136,8 +146,9 @@ public class sigIRC{ messageFont = config.getProperty("messageFont","Gill Sans Ultra Bold Condensed"); usernameFont = config.getProperty("usernameFont","Gill Sans"); touhoumotherConsoleFont = config.getProperty("touhoumotherConsoleFont","Agency FB Bold"); - touhoumothermodule_enabled = config.getBoolean("Module_touhoumother_Enabled",true); + touhoumothermodule_enabled = config.getBoolean("Module_touhoumother_Enabled",false); twitchmodule_enabled = config.getBoolean("Module_twitch_Enabled",true); + chatlogmodule_enabled = config.getBoolean("Module_chatlog_Enabled",true); twitchmodule_width = config.getInteger("TWITCH_module_width",500); twitchmodule_height = config.getInteger("TWITCH_module_height",200); twitchmodule_follower_img = config.getProperty("TWITCH_module_follower_img","sigIRC/glaceon_follower.png"); @@ -155,6 +166,11 @@ public class sigIRC{ touhoumothermodule_Y = config.getInteger("TOUHOUMOTHER_module_Y",312); touhoumothermodule_width = config.getInteger("TOUHOUMOTHER_module_width",320); touhoumothermodule_height = config.getInteger("TOUHOUMOTHER_module_height",312); + chatlogmodule_X = config.getInteger("CHATLOG_module_X",0); + chatlogmodule_Y = config.getInteger("CHATLOG_module_Y",312); + chatlogmodule_width = config.getInteger("CHATLOG_module_width",320); + chatlogmodule_height = config.getInteger("CHATLOG_module_height",312); + chatlogMessageHistory = config.getInteger("CHATLOG_module_MessageHistory",50); hardwareAcceleration = config.getBoolean("hardware_acceleration",true); lastSubEmoteUpdate = config.getInteger("lastSubEmote_APIUpdate",Calendar.getInstance().get(Calendar.DAY_OF_YEAR)); manager.setClientId("o4c2x0l3e82scgar4hpxg6m5dfjbem"); @@ -228,6 +244,7 @@ public class sigIRC{ private static void InitializeModules() { try { Module.IMG_DRAGBAR = ImageIO.read(new File(sigIRC.BASEDIR+"drag_bar.png")); + Module.MSG_SEPARATOR = ImageIO.read(new File(sigIRC.BASEDIR+"sigIRC/message_separator.png")); } catch (IOException e) { e.printStackTrace(); } @@ -243,6 +260,12 @@ public class sigIRC{ "Twitch" )); } + if (chatlogmodule_enabled) { + modules.add(new ChatLogModule( + new Rectangle(chatlogmodule_X,chatlogmodule_Y,chatlogmodule_width,chatlogmodule_height), + "Chat Log" + )); + } } private static void InitializeCustomSounds() { @@ -529,4 +552,8 @@ public class sigIRC{ public static void createEmoticon(Emoticon emote, ScrollingText textref, int x, int y) { twitchemoticons.add(new TwitchEmote(emote,textref,x,y)); } + + public static void createEmoticon(Emoticon emote, ChatLogMessage textref, int x, int y) { + chatlogtwitchemoticons.add(new ChatLogTwitchEmote(emote,textref,x,y)); + } } diff --git a/src/sig/utils/FileUtils.java b/src/sig/utils/FileUtils.java index c7ff7f3..6e79c78 100644 --- a/src/sig/utils/FileUtils.java +++ b/src/sig/utils/FileUtils.java @@ -19,6 +19,8 @@ import java.util.List; import org.json.JSONException; import org.json.JSONObject; +import sig.modules.ChatLog.ChatLogMessage; + public class FileUtils { public static String[] readFromFile(String filename) { File file = new File(filename); @@ -112,6 +114,7 @@ public class FileUtils { } catch (IOException e) { e.printStackTrace(); } + ChatLogMessage.importMessages(message); } public static void writetoFile(String[] data, String filename) {