From 50e6c83506943e7645db72595f81f74d37d0a024 Mon Sep 17 00:00:00 2001 From: Natsumi Date: Sat, 14 Jan 2023 12:49:30 +1300 Subject: [PATCH] Device charging indicator --- VRCXVR.cs | 11 +++++- .../controller_status_ready_charging.png | Bin 0 -> 3306 bytes html/images/left_controller_status_off.png | Bin 0 -> 1389 bytes html/images/left_controller_status_ready.png | Bin 0 -> 1853 bytes .../left_controller_status_ready_charging.png | Bin 0 -> 3416 bytes .../left_controller_status_ready_low.png | Bin 0 -> 2174 bytes html/images/other_status_ready_charging.png | Bin 0 -> 3175 bytes html/images/right_controller_status_off.png | Bin 0 -> 1383 bytes html/images/right_controller_status_ready.png | Bin 0 -> 1827 bytes ...right_controller_status_ready_charging.png | Bin 0 -> 3413 bytes .../right_controller_status_ready_low.png | Bin 0 -> 2156 bytes html/images/tracker_status_ready_charging.png | Bin 0 -> 2966 bytes html/src/app.js | 2 +- html/src/localization/strings/en.json | 6 +-- html/src/localization/strings/ko.json | 6 +-- html/src/localization/strings/zh_TW.json | 6 +-- html/src/vr.js | 32 +++++++++++++++- html/src/vr.pug | 35 ++++++++++-------- html/src/vr.scss | 5 ++- 19 files changed, 67 insertions(+), 36 deletions(-) create mode 100644 html/images/controller_status_ready_charging.png create mode 100644 html/images/left_controller_status_off.png create mode 100644 html/images/left_controller_status_ready.png create mode 100644 html/images/left_controller_status_ready_charging.png create mode 100644 html/images/left_controller_status_ready_low.png create mode 100644 html/images/other_status_ready_charging.png create mode 100644 html/images/right_controller_status_off.png create mode 100644 html/images/right_controller_status_ready.png create mode 100644 html/images/right_controller_status_ready_charging.png create mode 100644 html/images/right_controller_status_ready_low.png create mode 100644 html/images/tracker_status_ready_charging.png diff --git a/VRCXVR.cs b/VRCXVR.cs index 5ce30d70..3a84ec42 100644 --- a/VRCXVR.cs +++ b/VRCXVR.cs @@ -302,6 +302,12 @@ namespace VRCX { batteryPercentage = 1f; } + err = ETrackedPropertyError.TrackedProp_Success; + var isCharging = system.GetBoolTrackedDeviceProperty(i, ETrackedDeviceProperty.Prop_DeviceIsCharging_Bool, ref err); + if (err != ETrackedPropertyError.TrackedProp_Success) + { + isCharging = false; + } sb.Clear(); system.GetStringTrackedDeviceProperty(i, ETrackedDeviceProperty.Prop_TrackingSystemName_String, sb, (uint)sb.Capacity, ref err); var isOculus = sb.ToString().IndexOf("oculus", StringComparison.OrdinalIgnoreCase) >= 0; @@ -364,7 +370,10 @@ namespace VRCX system.IsTrackedDeviceConnected(i) ? "connected" : "disconnected", - (batteryPercentage * 100).ToString() + isCharging + ? "charging" + : "discharging", + (batteryPercentage * 100).ToString(), }; _deviceListLock.EnterWriteLock(); try diff --git a/html/images/controller_status_ready_charging.png b/html/images/controller_status_ready_charging.png new file mode 100644 index 0000000000000000000000000000000000000000..f7e65ecda67e342503b39c7cd09922e30168f1cb GIT binary patch literal 3306 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 literal 0 HcmV?d00001 diff --git a/html/images/left_controller_status_off.png b/html/images/left_controller_status_off.png new file mode 100644 index 0000000000000000000000000000000000000000..1233eb6868636396aa1821cffaacd0762cf4c592 GIT binary patch literal 1389 zcmY*XdrVVT7(Y<@khX&%j}8S|pj5@eZGjeUTYB&9y}gg#+X9lICT37Tvx!OsGcmeg zHBK3c#5v}J8D%gXQ{y)NFb3G>P=`2!V4PWECc(x{#ff%2t~YVVm@L`JIp6o4-{Z@d zoO7VePitdSV*vnKmLV%(*1tX~8H{94+f|riHsAsdz_$n0QjPpIS<6%i0PM&Cpmi?* zB7|E11YjEiz@usa&?5k(G^F>MiO4Z7YGOye!g6#R4EjSQWp;E zGXE-?;tH)cfiHW*(i97Ew+l~6(P=bVj`jP63f>oB89^ae_~4Z<7kp(dhdU)%2Ycdf z(r7fnCOj8_ILq(_)*{-=34A$prKjt0jD$7A@OB%Tl$4CQN!UuMRQb37?<@290tQ1? zdRj(FvD5ALIM7lL;e`T@6`%kX49)vE|MF$Ib~_4d3?n%%z;S-LTtQJB%lf?(2Zw~Q z*zO=b48sTzbh&Vv=2=$I>oe_khgz*M7_uP_*}_6QL3lkLCL<#gc7U?{d@CHUsHjA# zRC>KWI1h@Jy4|GHiRb3#(F{*Bg2Rc~Y^aB1GP8^n#X=WB(9kZI%iS31rFqKh%gi)- zY2T8i>3R8945x~0B_zc`obWI(;sgzw? zEO(U>ZrtmE6vYuFqfjbi)oN&mO1SlgtheIgF@h#Y7WdGpOO}>mB&-)FCRqw>5XU`C zp$#oYOKru@SFc{>(LGb}6ZAD#_*a3JJ2MNjx`g3>r2D;dk~q0A!kL~)k?Dlzk~qxG zjkknn=cjugN^`-9m(%^!_%q$SByJ84jt}2^F(*Z4!~>UJ+?B+H#|wW;PX`~)OB1u= z=0Q`_OQ}EnX!FcmuXsr}+cbJ_qEnQ{ho)OzNRJ{3lhQ(q80-xXEl4xs^qq6Vc9SSA zaFO1j_Q`2UoYk2klGtL8NVCDmA_r9?cgMG1KY0yK9ToJ^WZ#gYY6xByH8N|O08lS} zeWJjzE*%7w&8$Evr<55nQEA7yb8kb>36{hwi$`m#F?lc6^}caDRV)`^r6C1EKCi-?g{(r5=mkrqyZ% za|gF6O^b{r;hn$9Mjr23tw=?x_h)aZYX}BEPy~-2KlbBpIkDT=u~EK$P1XaUAwITY z`pFZ+N~I&Faqp-js^w<+JKb=dx^d+0#rb9N3`54A?m2U&PL*q1zM{xt zc4ZZe%1Tat-?VkB;q1Ut{VzB3u}{9f+}#~iebb|g;ka9ghd=wgs`bi>QT$|Is>^a4 zP#dxKwHHEY`|XOge~gW(p4YCD#TVAH0W&u9u4139W9KeMvOMjJb?ffAG=uA~v1_f` zh^&5xsr7-$TCMyvCvd_k-+$Ww^QmgF{iq(7k7xvr+U9E=mJ%~!H(N_8 ztya`hgj#L62!bL=y!yTE|1)gbQuqG)mj4U|NF`E$TJ5OC^2TtBzo3T(z*2tlJW(C` E7lO;_=>Px# literal 0 HcmV?d00001 diff --git a/html/images/left_controller_status_ready.png b/html/images/left_controller_status_ready.png new file mode 100644 index 0000000000000000000000000000000000000000..135ccacca32a410814fdce74f0c621080130f6a6 GIT binary patch literal 1853 zcmV-D2g3M?P)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00006 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 literal 0 HcmV?d00001 diff --git a/html/images/left_controller_status_ready_low.png b/html/images/left_controller_status_ready_low.png new file mode 100644 index 0000000000000000000000000000000000000000..65f475812cb95bfbd40f16a442451db4cd589364 GIT binary patch literal 2174 zcmY+Fc{CJy8^?df3^!6jSt{<4CCY6u6K1kDma&el?8cU{lPx4BC6uk~#-NL#?6Q+J zdM^>OXQ&C&6k;$Xa;Nj2^Pcmb=X{^IO0QT5XEFFMQH~8;$}0BDf%Q=(|#qZYloDR#N}%LC9SG7kv0@%P!`3qqW1f4zv0kU$uEMde&)k@~@ZzCU3CU2j*Ty zt8}f@%%u3FaL1I*EYr&)qGgYR; zxp;}1(Q$KZL+*s`01VELA_I6_bhn(U&wm*6j07iFw zG{SGv+}zV}$yle{Xvbk@-#=((VnM)%Qex9^rlwjA`r5S+zj*$xkHAx0e^yqX-5jHF zpv-6y%RB(}!XtKW#s(u$YamZ!pbu>%2y4FdfNTecZA(ZeM26E!&piXk#KA@J>1sJp zf>MdT;WZX3XwfgH0Z+9n=K*)ycak%kM;+crX|}fnwKnv8dTk3h07v48+GmA2YA^)a zJJXTd2a!r1l1EV7A9-c~QqeD(pgs3p5>oon?I8aMR*T zNKnRQ0_fZGyvJc_=537des|N#m@mtc^QlfV{&`#9Xwj{*>FI3@pEk|8O-a9&+q-u( zxBx+0AYSSMAZiIkyrp{-D9Xi{i%t(p(+95D1g_rtku}xT)nHzz9!kcW)=v~Io(`KT zxbCRp9na$mv|7-g(rLyOfY?LIQ=5syS{jo1rHvq^P?S%Y(}3BpKrOz#&X@Vtvgnkq zPFug9yP6`}r$ONKWQdydJefxak1c>l*K%9(X4Swl&)GlX51AC7U;VL1*Dy%x=%wc_ z8>yH*TR-YVI98tgH-zr{(l&Fen*;;+p}h7qe(fcP30FVk-OY*N-Ou+kAc&y8wCle z&n*sU_`Mp{@_@&@j`BGiSS~d4U1&wg203C#H0A6=x^8%_fKZNb04XL?@7m;*he5v* zz?@^_;rizg6`kZWdabb0fTRN_E8`pUtgLEi=GgXZ%Jsvn>D{(IsZ>sw>N0`V&{WS` zJ=p9V-gWGh?L@HacO(Bf?RLpz(NnR(ChcKCi^s~9isTLIh1Fe0)|zoAsj*+I`J%jdW5lqp z9ZC}D#Ss}3UACtWP6~~YNzQGo1Z4C&>&?{uZJa1aIF0Xtxw!D@<-zLeY~#D!EF1kqJ5cJzEkA4!t_xdjN*uhMPs0EMs7U` zxlmb%MOHiQ-uD)PJ%m}wUDrPf0Mb*XI#i`V6ZR|?CyG%vC}EW$>}1TU*N$52zS1VD zZN`7x+VuJyoA>R{a$ ztOweZ5cKi0xn~1zsmgEbL>uK^rF`1IjQn9z8})H@pLnUc1%0Q2W3C)X@;_=^R12#d zatu|ZqN1{-Yz2{~_*&zFo8R-zE{j5%+j))SXN$Tqo&JWluKNrr$udmw$X=92Oxw=L zW3Wn0r}NE1&1)o-{TJH2Ql}=RQ=@lh>5(p^VnXV-)^?iC|TA+PfrG zrlCuM)uFK5Xsp5qw>M|mzgRj%*Cxc>CBy^ecGH7xKnbp>rT|w_P*k&0Qbr*WC}rgf ya5xGMcTQpK{~zEN;O=!J;(vgWl9iGo3a*M$LjD(sTU@te0|2XQimBGY-~AVrp8e$j literal 0 HcmV?d00001 diff --git a/html/images/other_status_ready_charging.png b/html/images/other_status_ready_charging.png new file mode 100644 index 0000000000000000000000000000000000000000..c3d7a02b6d0de69c72ba4c93f62f27ac76ccd3de GIT binary patch literal 3175 zcmcgvX;c$g7LK4IB7?FhAWDpY=uoLjWg|h9kOWx_AfVE%AeE{LL`W(o0Rl)1Dj722ryZ=nisj64?zWd#KzkA<% zC)vS)^UTNEkEKv3=6=4S5b{YiTw_L)cTIBg8}ebQ^8G?Xp_o}2t`U^og|-yR=puPo zxHeoepN|p>I)V{WoUT)-NHm2qd#+A}ps~1?D#fGaN>AFWv(+@J9P^|tW=kN6N{GkE zeUsIAXmVf}njDMrFxuQX)Y&>dNua>B2vw(uQ)>7+Pg*}OpBx)LgEVSCL>uc#6Bry) z!zIB~A)&^pTsjP(5Cl=VJUW}h!KEnMjS53B3_@%W;sFqs55s(zM;-jpNOx*X#t#ws z3_2sH2XauTB$8obrDjkmQZrD8s6YlC0u>5FV*O~1HU$3|#%Ix*up|`@ zhTs|^UX9`;eELUYaRTXiFo!>2EKb0c+F^52`~Ph`C5jJ4A}5(JoMhlZ?tnW7LjbOng#ic#VF1eFNFfdipxdMsC zL6tI^M*S$9kccDHq+>EVrePHf6itMypKNq#4pQ>@$$*Az28sj@G}FiW_0N5>$CA1CeAYXT?6c0p*J^q@TDOiu=LlS# zT`gA@NxVBk&Tab}Xp~Dd%Go+Khn*s+tUVHC*w zV|nVP?u+v>t@P&k%fGwihHV|=9VNfElWw+o+MLL$cV`~&*qy=uvdTgf67KOdBXQ)K z?C4g(U)Iq?3Nvgl$4@r%aI)KlRGnu=`THX>njIOwnA9nAH?kdnWN!S?jvv`I9a*k#rWCjQWV$~3(5+jJ(s!BnR#p{n zjA`Y(?ECP{h?Q%a*TQuQdfxtJOU|C!38lMrlUE#5EmvtRZ9?1yf-pzn%(_+VDt2w>n8iSR&%|a{c6JUZfuQN_MmQcP*7&Y+6t!EgSxNM0;8T3j&VwU zpIwt~uk8Inmu%m=sGRm|m)nf}C8Ei)%02a|0A)r`kjuE^hn>2E>@%L+qa@bZl#Ew` z@_^c3XIyrP-Edjk?w~5rhM37Q?n;x^S8=d%gw!zQ)BP6 zEyt-5WvtiFlahSaKr?S<2V-gZF0va7=;`K59$wQQTjA4f!HhI*9lbe7E$zb&RE&*2 zxs+mCXqA4rD(jbyU2l$`tF4&vxYxGz?cd=u73{_P#f_V7>gGJW`mAi#lkG*#KcaRX zcQx-aEzdVSa_G#pwkkOCHqxUdzCHzy3--QhZjzk6i*w=t!zcdiq05q@iqTmK@9OfF z9$z!Iiymiv-?@v@{V-$YZlJem(?orY@KwF@cETdG_Jy@aQQLl1z$D{D$7$0K*o_ih zIuS9yXUFLDGWxT#`uf_&O~$vw7FFC$U5sv7mM)whv81HsSfeas=D{h7p6{TBP$Qjx z!R9^3%-*|KYTNvG_e6exj~;ogcP+ITz15*Mz@ggF{BrFydTfr}!$*?RZ$?EeId_ma zoBz)sN}k|e(al%J2^6!vbL;LVMCCNA=AT@OVTx>>oOynx{&f5PCn>@KfH-5EQE-mzg~@g$RxPr40%1^mQ;qHn#UR{tBo Cv(0k= literal 0 HcmV?d00001 diff --git a/html/images/right_controller_status_off.png b/html/images/right_controller_status_off.png new file mode 100644 index 0000000000000000000000000000000000000000..ee3615bf077e5273725b96ac3f88a554de47a457 GIT binary patch literal 1383 zcmY*X3rtgI82ww?UT9%pd3B8}My{ zq`ewfC=}%;%fA9XkeR7*RO4`@NQR-kK5vlc{4C>3OiVJHDj1sgasddQ^}~>Yf*lhA5)FoE*0FwN;8($h0g3szNW!QiP7lqA!a@ukJ9}$LjIuGI zaO&Mr&9W%WwF_djuzp#LqO9=nsu&xM-0sWDItjOy)N>SZW>m3d6b=b{=oec7P^CUS z5->2Rfh5w#cuC|Qk}Z?0|ByYq273A#0uNPQYY01mN54H|vqf>I<3yaS^5TWP8z!fw zOJi5=*gE}9It!OcWm(JK*k5!_xlpojQ4b3 zbsqlW_rW_h-T0w-<>F$?4S1>2_dC~gZVA@b_GqV@rqgwSgw5NYuc_(n3pZa@HsjYZ z-N(uBI+Y;|qpExn{#_cp?bbpAS zk*ZVAO_=!sThqj`(@tBj1nIXo=;N;s^m11QFD`Y2|B}`&sxsgHE%V-w-w!uFhzwmj zZl08s96w8xX~98PXJK>7TO9mt1#RRDZH;wpO;|%q6D+`FEUPLtqNS#)kjaFVRbVDd yiP4A|jVY>^Uj3ipmEDaywzvOhFdIWgGiE}uva){+H~3*4GysP55udxl@B9tcn&D~y literal 0 HcmV?d00001 diff --git a/html/images/right_controller_status_ready.png b/html/images/right_controller_status_ready.png new file mode 100644 index 0000000000000000000000000000000000000000..f758615bc3b97ec40fd7052846601c397d5139cf GIT binary patch literal 1827 zcmV+;2i*9HP)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00006 zVoOIv0RI600RN!9r;`8x010qNS#tmY3ljhU3ljkVnw%H_000McNliru;|CuCH85c^ zejxw=1`Dl zW}LLg)Kp{5G>yF`#+gdT?ERV^Q${q=)6gOk(Ex=2c?8I7Szwo4_I{84*uAnUu&mUX z`R1ED_nvcp=XZYJ`F05+Fv%oqmwmA6Ph!#H+)V?=2P!&$a+S3f`x^TGiX={`kw`vH zfAEUuXWp~$QOYGSA%O}4CM38|^j7wMQdKlqdi(=HxgJSOIU=;OtR&{mxm7?_1Xm!q z0?uW~wm64nNychRUiNMNHfJ5}=x_R80C@iyXz2Q?cCW8xpw2Sqf-8wB+QPXE0}P3Y zon~2j*?O3xtiB^nKR^f(E~XR-008hihr8kyq%T#ianr$6_)ZQU_ttckgQ+l9?CNVD zn)dWPUlC0;hh=r5m-d|0Whn*oH(4`h=E59h_4W>T_Ek3j(D_Z}ZtH^C%cd19+FbX@ zzC7ykbjRf{Sf9A%rdNg85^w0kd*ts@=Z-xqz?dEp09jMbIghN^=eQ<&9Tfx&qk^MC z0_B1=zgha&sV@$`A~{>f{AfL#6Ly3ZZC z*=q!s!MOs#g1gagp-9&G8Q1G>pUYF%^1I>6Jzkfmtm>2Kh4WXE*m%3(GNknMMf%Cs zBfO)lZc-XZz2?%}lNV;M1T_J=2}Cym)C8id05t)0bWgtP=I2a_whKf3*`T|p`?=R| z;)DKvFcpL=FmK#Y1Vu4Tih-O>tBTBt_F1Q^KfMQz+~_U?L{oH+Z@^t!|4V2L?iubE zE_aumGL8xN*ls0H8Df z>3c$nJ?Cyv#`Ej```C{^?tEab?ZV95xYVp%Ni$o0L(b0rrenWowxqO6Haz>emOOjj zh}YfU@%7%v1@-&J3?!)vm;yowz^H%H002M;!JRF&hny|7hhnCuWu@hBd@6O>=4T~K zyq$u8Q36>_u*J_?dTW1W$-864kgZ86U@AZegxftZsTPc7p5E3vEyj_eYIZxQDL`pZ zoC%lTQaGNU;>cP69?$^qY_2|U0D^N?^XZPe`LI3|NE|$>Ooe6Uq9vL=J?k7NB1xw7 zCD$1m;B6-kpEm#i@VPpg>-X<`;OyfFrXnHdj&nw>mY$n0nUfvH9AGEPN~Qz=0J^I8 zzuWs)>Bpht7*s{v+*>wCYV;W@k6B!}9ZUgXDum0~$xfF4JY@g?(D2=k`~0rHc4Hb6 zrb3nz;$kyat~0)gz9@f%mX^QVxC=&pd#4D3^Zx_@^$qkl6hFKHR1u+Vh@ZE<5CCM0 zeTMCZm-n3R{m@{Kzv8W3W5tT-S8=F~47Qz=WNVBiDfcQNWN;xvj!C(|-SYEy_8W@! z$+nD4A!Kk!aF=W=q^FJ^9xF~ne@xDCmNhM7ZE3m5e(8Kl07d|vjd-~l6>U7b>p%N& z@as)?jvHet001D$mXUSI+Jlu`(KIRrl2Ssz2r%4LQQr4iLB62F!{hm%mj*&jP@i|i z*<5c7rhpz4_&cipaDK6B`9#U5%zzr5l$5=urdDV+8zX?hfUEKS_j?a)*(|8X6E21_ znMC7Rd~!j7EG5_&4RFbZySqgwea_ac*=yR{?Q@@aLQ<{PNd5l> zBAW01aj(2}0000bbVXQnWMOn=I%9HWVRU5xGB7bYEigANF*#H+GdeXiIx{mXFfckW zFkg=9`~Uy|C3HntbYx+4WjbwdWNBu305UK!IV~_ZEiy7xGBG+ZI65*lD=;uRFffDP R?pgo<002ovPDHLkV1j^|O2_~J literal 0 HcmV?d00001 diff --git a/html/images/right_controller_status_ready_charging.png b/html/images/right_controller_status_ready_charging.png new file mode 100644 index 0000000000000000000000000000000000000000..b206e3c95abcc64e15cc299a9d42bef8f7edb69e GIT binary patch literal 3413 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 literal 0 HcmV?d00001 diff --git a/html/images/right_controller_status_ready_low.png b/html/images/right_controller_status_ready_low.png new file mode 100644 index 0000000000000000000000000000000000000000..aecce873566702b99736f83b3d750d44bb641f4c GIT binary patch literal 2156 zcmV-y2$T1TP)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00006 zVoOIv0RI600RN!9r;`8x010qNS#tmY3ljhU3ljkVnw%H_000McNliru;|CuCH85c^ zejxw=2U|%*K~z}7wO4ykRM#2*o%>?n%esW8pnwYKs0hAV9|WO{z7m zwQZWw>9kIrPD7ha6GPfjlh!0^Vq(Tg281LNjE+X56M6VTG>D*pD6p{W?y~GX=brwt zTv!!c_@m#T#5{l4!z=Ujpjn4pMJ*&i-FL(EZjZ-e`i`^?Rw-N&yV3eXqpJoVNWp6&0J>5o3yg`y6ZA+?YjDZA<)z8uD?}M``e;;qwQ zGW20BoWCh%+jC_kN;XAQ^+7LVXQmb;FPi#-H8W`z3{jRIS5I3*GErHeT8e=+lxSlu8Tnlh*7d>`j#bo;^$^9 zr<{Ocpx`JMKsC;q-aq`O)=!ST8ZNUG>lhQibzQlboG_8{P@#IiJh98WbN?@gUjqbW z-nLbx@iVfPa7~1!N#Lw+*7MCJ!8#@5F&YSZeRYi|^`)9G;PxJ?-fzm8x|mp_W4R_m zNKKorHZ`BqTH5M{RRd!mnfi46l+1ik1yB_bRRO31qRIeO06H)ytt$MR65~h-U$1%n zUAJG^xkU2>yTD`+O@e9dnl~ZKhG8j?`@*ufOwO1w{n7W&p_Ut%MF5JZ`U4(s?Ukc< zk?{GuHJ7I~DtG3OIhVi<7Q1%G+rjGVPe)Y1IVLq%j~;r|sti!MPYoG_%6&@6FsD!W z!C;a3kDuJDUTHcFCIL)_l2@={SSgSMvl)G|>m&$O!sPE8tdERfh#IQEyd|YYq1Kcj z#HM5jY2#-`B;dd8Zy~B2%6~YpDu?BNfQ;JizA+Sm-m_KZnmf=*w9x(_X65`SB7xSb z+Cz7Ns(niI0qgP;8glBXt}Y#l02ou%3+F4qBtVlOrcRt4k-){WvLfau0Uh)%zi&YNA07rwD1O~}o9{7FfO|dN!%9K8rI_Whg~`_COU>@t@kfew z*M6{dWqakTvM)8{F^Q^wAcD6J<@j{rSVrTg6uoY+k{90XLWoN6t^z-Rmc6+}wP@ z5ciP253sspWf2L)8>Pg(^O6o42r=s5hnl^g{`PF!x`WN0k3a!VInoq)+{c!ie{K0{ z`({uX(UX3%T2M@ua9`Fr8#aSUAWVklx_zBBRi21QU{ltpm+g`m9WML7>s_xa0#Tlf zwXNcm0}KEKW*LohW;B-GVqR~jAVgbj6PNu=_hZalxLg@M=VARU2%dQN4RB41NZ^SC zYhgHejVn-js;lRlWwF*3aiW;0gM)>>S!l5odK*qvfXRrS^2~YwkgN%#N9Dh^Q}2Jx z-Pszf+_!76bl-m=G0JJ2hQL9AUDvvb0idGO_xZ~6EsHq?2MeVE6c{7QX}z6I--F69 zICFB0Df1qUTlQh8Ajigl%77-p_r)K7#c7~t&@Q?6K`^MPGAFVg?dL2ky`stUNC`pt7AVA>UzTLqq<)01FZ1*d0))lDimzZ*F zNOb(}*GZ0-0APKb<2T{pU_ez*;5$R~l*#((C~$)WCW9~;y^SZozEko04S0avN8r6i z_uKsv_W|u_>E3P@1j`zS?HA$TjB>45ne>$DF@-KG5(3vx9C4LAxrDP|a6|+? zYH{y5(cwR)1J&N?JzwkZJ-^Cnd)5ZQ9G_fw$mFo`kKqjBLPP=0+1C>+v<|>qmSH}lp4PEDF8-6*2E$zaJ7?05UK!IV~_Z zEipM%GBY|gG&(agD=;uRFfd<^>ihrz03~!qSaf7zbY(hiZ)9m^c>ppnF*z+TH!U(U iR5CF-FgQ9gH7hVMIxsMU-|kuf0000Vde{k%pQ zO*A492%~(wxq^Z6cV{gg2{+lMp%Hw zsyHOv>gO1w@*!H8av)E5#>g62PNq14+L-!*LSzUhk5xqXiwhAl8jVU(nM#RcDMMI! z1g6525!g4VhaUe$0M9LtH>B}ZFH-4{giAzwu+`Ag*}IS^H1u?hs86^Glj z(MBU@dniy?g(>(L7Cl%g|3S+{i0VWm+67BwLQJik{>28A3#(8LNn1650s&MCAEK~n zEH;hqK%ufh@H3Q$2_>SXLr^LJQUK7Ik5`vYVS~)SK=Gat!YcS5!9s*B!W2>%4_G3F z#VA=W6O)KTX=Hm~(U<}k#@$i-UGR8pADL1G%MjFu%OT-0J4qx$Hj~LhVQ0Dka2BCV zJOCO52v|%y;7miPD2T!=Is^~y=VC~#wzAs&pSxU$Avni>Rhcl0%0g%~fF=?k0MnTU z12_Q#5TGm?3{nI_hCnpPHdi6RUo<%SOIEEbA~nU=BE1gMn8L&W%`bqK4$jhb-UpYc9D?h zH4BnQ6_hVGs;CMqyB3h|ZysQf=$XjzO7gbtpeR*PUu{!&70@-oTC~DthOx)Vd zZvC;O_5Q;|qN)4qB*v2?$>q9}M{4*6hgws|OO#oaDS8{tOm(KX>C`;7y`cG}X}kU~ z-raSdrsP_f_4TawPmP;qZS)c`ZyGlK;=9|HzXz-)jTyee zodRy{k?Pv&MF}1&HaY~H;#cTF@3+S{-25}PY5i{(qtbs0(C3(apOc+t68wTr{Spw#a3Vu}NsS0b5#c1hyr?9`yrJH#Mfz$(%OhS^4-DLm4)FZz zWf%3Mn7cY(o2;^|nlOQ5;Zv>&S-5g;=Vf+C&N!(V_&{BKZH0QxM2+VNi-0Syk7r8% zpwv^OVaHr7@1LxGrZEL7`VLMCir+6iZyM~kJl8tGk6;0b6VJ;RCI%a1x;|XrJ;iv$ znz?HhoGe+J8~h>JI%Tmw+I})>L!M(#Ls9z1grDp#M5dDrZMPf;hxz41k6vJbzwJ?<@eA19?%9vJ4&SBNc6P0vQ|N3nui*HN-;U<) zR;~kkt~TGhfq!n*9^IuX$_Nv!tf^IZH5N-|y)aE$pZ$ti(l>I&`x^J>89gNxdpCOZ zPQK-v2ms-=FEYk<@9Ui;UsBuqVD=WCroL+e)VMFnqximYPTri39jC~z_)jnQ-pc#X zSJt&*YWV9BRL=XD#cxWNZCFLwyE07v!hRE`vdpg@uIpQn+SRtnE#PN|bDHiKQ`>hO zc)M_%B+b!sfn&>(Pe7z^a;0z*>$)33-_g>43bCQ%IOpwmRS`hs$L5QD6^{%V&WqDx z8X`+wcZKzB#=&=FS%kcvjOD+2?uMJg+nJc)cwC5-DQFn<=LA7yn>5e^PyJ z&Gv2b5i!!lN;G`sag@>=SQ zEcR7#SNzg>+QfGA;gv;qPhYwkWWO`{SUxT0k&q`|993Pgg);6OE#-FkG{@%^^u(}B z%fcPr-7L0OWL+@X(fq?@9oLwnC!!?M)RerQ@#!P^E 7) { + length -= 1; + } + } + if (this.nowPlaying.playing) { + length -= 1; + } + if (!this.config.hideFriendsFromFeed && this.nowPlaying.playing) { + length -= 1; + } + this.wristFeed.length = length; }; $app.methods.updateStatsLoop = async function () { @@ -396,7 +419,7 @@ Vue.component('marquee-text', MarqueeText); var deviceList = []; var baseStations = 0; devices.forEach((device) => { - device[2] = parseInt(device[2], 10); + device[3] = parseInt(device[3], 10); if (device[0] === 'base' && device[1] === 'connected') { baseStations++; } else { @@ -428,7 +451,12 @@ Vue.component('marquee-text', MarqueeText); return 0; }); if (baseStations > 0) { - deviceList.push(['base', 'connected', baseStations]); + deviceList.push([ + 'base', + 'connected', + '', + baseStations + ]); } this.devices = deviceList; }); diff --git a/html/src/vr.pug b/html/src/vr.pug index 9ca7aa26..690b0038 100644 --- a/html/src/vr.pug +++ b/html/src/vr.pug @@ -415,34 +415,39 @@ html div(style="display:flex;flex-direction:row;flex-wrap:wrap") div(v-for="device in devices" class="tracker-container") template(v-if="device[0] === 'leftController'") - img(v-if="device[1] !== 'connected'" src="images/controller_status_off.png" class="tracker-device") - img(v-else-if="device[2] < 20" src="images/controller_status_ready_low.png" class="tracker-device") - img(v-else src="images/controller_status_ready.png" class="tracker-device") - span {{ $t('vr.status.devices.left') }}{{ device[2] }}% + img(v-if="device[1] !== 'connected'" src="images/left_controller_status_off.png" class="tracker-device") + img(v-else-if="device[2] === 'charging'" src="images/left_controller_status_ready_charging.png" class="tracker-device") + img(v-else-if="device[3] < 20" src="images/left_controller_status_ready_low.png" class="tracker-device") + img(v-else src="images/left_controller_status_ready.png" class="tracker-device") + span {{ device[3] }}% template(v-else-if="device[0] === 'rightController'") - img(v-if="device[1] !== 'connected'" src="images/controller_status_off.png" class="tracker-device") - img(v-else-if="device[2] < 20" src="images/controller_status_ready_low.png" class="tracker-device") - img(v-else src="images/controller_status_ready.png" class="tracker-device") - span {{ $t('vr.status.devices.right') }}{{ device[2] }}% + img(v-if="device[1] !== 'connected'" src="images/right_controller_status_off.png" class="tracker-device") + img(v-else-if="device[2] === 'charging'" src="images/right_controller_status_ready_charging.png" class="tracker-device") + img(v-else-if="device[3] < 20" src="images/right_controller_status_ready_low.png" class="tracker-device") + img(v-else src="images/right_controller_status_ready.png" class="tracker-device") + span {{ device[3] }}% template(v-else-if="device[0] === 'controller'") img(v-if="device[1] !== 'connected'" src="images/controller_status_off.png" class="tracker-device") - img(v-else-if="device[2] < 20" src="images/controller_status_ready_low.png" class="tracker-device") + img(v-else-if="device[2] === 'charging'" src="images/controller_status_ready_charging.png" class="tracker-device") + img(v-else-if="device[3] < 20" src="images/controller_status_ready_low.png" class="tracker-device") img(v-else src="images/controller_status_ready.png" class="tracker-device") - span {{ device[2] }}% + span {{ device[3] }}% template(v-else-if="device[0] === 'tracker'") img(v-if="device[1] !== 'connected'" src="images/tracker_status_off.png" class="tracker-device") - img(v-else-if="device[2] < 20" src="images/tracker_status_ready_low.png" class="tracker-device") + img(v-else-if="device[2] === 'charging'" src="images/tracker_status_ready_charging.png" class="tracker-device") + img(v-else-if="device[3] < 20" src="images/tracker_status_ready_low.png" class="tracker-device") img(v-else src="images/tracker_status_ready.png" class="tracker-device") - span {{ device[2] }}% + span {{ device[3] }}% template(v-else-if="device[0] === 'base'") img(v-if="device[1] !== 'connected'" src="images/base_status_off.png" class="tracker-device") img(v-else src="images/base_status_ready.png" class="tracker-device") - span(v-if="device[2] !== 100") {{ device[2] }}x + span(v-if="device[3] !== 100") {{ device[3] }}x template(v-else) img(v-if="device[1] !== 'connected'" src="images/other_status_off.png" class="tracker-device") - img(v-else-if="device[2] < 20" src="images/other_status_ready_low.png" class="tracker-device") + img(v-else-if="device[2] === 'charging'" src="images/other_status_ready_charging.png" class="tracker-device") + img(v-else-if="device[3] < 20" src="images/other_status_ready_low.png" class="tracker-device") img(v-else src="images/other_status_ready.png" class="tracker-device") - span {{ device[2] }}% + span {{ device[3] }}% .x-containerbottom template(v-if="nowPlaying.playing") span(style="float:right;padding-left:10px") {{ nowPlaying.remainingText }} diff --git a/html/src/vr.scss b/html/src/vr.scss index b9547c47..4e54378d 100644 --- a/html/src/vr.scss +++ b/html/src/vr.scss @@ -203,7 +203,7 @@ button { .x-container { position: relative; flex: none; - padding: 10px; + padding: 2px 10px 0 10px; overflow: hidden; } @@ -400,7 +400,8 @@ i.x-user-status.busy { .tracker-container { flex: 1 1 auto; text-align: center; - line-height: 16px; + line-height: 18px; + width: 55px; } .tracker-device img {