From 03368587083ccf7583923d1d35f07a5cd347f535 Mon Sep 17 00:00:00 2001 From: SmhMyHead <191356399+SmhMyHead@users.noreply.github.com> Date: Fri, 6 Jun 2025 23:20:02 +0200 Subject: [PATCH] [UI/UX] Legendary UP Gacha timer (#5921) * [UI/UIX] Legendary UP Gacha timer * Update egg-gacha-ui-handler.ts Seems "fixedInt" was needed on the delay of the playTimeTimer so the game speed doesn't affect it. * New timer container by damocleas. * gacha_legendary.png second version from @damocleas * Use phaser object chaining methods --------- Co-authored-by: Sirz Benjie <142067137+SirzBenjie@users.noreply.github.com> --- public/images/egg/gacha_legendary.png | Bin 2015 -> 3810 bytes src/ui/egg-gacha-ui-handler.ts | 46 ++++++++++++++++++++++++++ 2 files changed, 46 insertions(+) diff --git a/public/images/egg/gacha_legendary.png b/public/images/egg/gacha_legendary.png index 8cd6fa38e295fcfb306a6ffbdb017bb1f101eeba..6eb41e55099a0ef71e946b7f89f0213b6e0996d7 100644 GIT binary patch literal 3810 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 delta 2002 zcmV;@2QB#G9p4X-BYy{`Nkl#N^;PkIUgU`*94LA6~!_kVIb>+4*o&u4ml+l`%p ze`b>F7>0KqKXf0eut`f$?f6~4INSNW_4$)*uDJDOw!i4y^x!`;$#oQD;{54vKY0+^ zB3NA$mS8mE$B=G^i?g{*;RqmUhPJGxKdiM)U@G@W7T+ubOn?9;z!CJ(FMb|=V;Ra} zA%w8?&^ibpMSoaXS!ut0?V5!sm-g1ymZQNH;|8m6{Oa@b7Ni6kJI|k^`0kAxK?JMi zdzPSj@vG0zhch!X7NjK3%*=!{Gc#f7(xvdTM^r&*Td}GoDgCYn0&$)Ldb05+qiW%tpD~` zM}D4G?0@%a?>3v>pa>Hn*~KsG@NL|>d+2-7*9QqyN9Mk$eN?TdTU%ST z-Db0Wb$vZF8jVn|*ETP_<@W8wmoNIMIca{k*}1te=m87U-e~fuRbf|_mpfBnKk*o*QJ`MUqv zpP&Fzo)AXjLCktOJT91{vcD`Iz3%l5=l#tIAe9JW_jH&<5z!px1b31L6$FqGm=2Rj z8_lAFnKo!*h5(Ma>B-}7?xzO_Cw~gYNv6!AqYeTne2Fd_g;0BC%^di&iZ73U;I)`cL*RAc7O3--;Lnu zsj1Z05s&6iKmD}w@e?-$aLghY|NNs@UP*jL2~;`<;44FRN7`bABU7*`I0 zzyKDerY(X1GHkV3YXAZWAb6RV;8^?NX-7do009#6L}*fp zZ*K3!&JeR#@GC(;0LR=yeSbcL)|W&3`DbIN-8!4|iBrWE0i^Q&^!Rbu{_3mz9u!`D zG5pd&Ari6=u)?+*I~D;G1zqNY3^MMHvMoPbZet)880)(;DD}I6~ zfB*sr!?M@ojoJ4O4tjn)tLYB`gi=N@`gh(h!4pRTgrQG+QRt$n@9gAcA@Msdg4_F^ zdLw|4WBek|TCH5BJ`cfFz(eeJXT{hpUO z>WDB1AR{voo|>3A6o0?&P2~852m(kYr@(m7dWEiED8&x}q|%sn&p*{$CC5Qk*()jg@SFafE9UO$0rl!KFiHRepJ%3Xm0!Zma6JNi{?d;@a z_-uba@e$rZr@*u?gY&XE0fgMA#O_cY7fm<`e>s#ce9`Bp zN1Z4E1dz(VD_s0(EoD5yI}W#j079BSnDeJIyRIaWGX)}mjHR;1E`B7q%1=f|02$*5 zdP)ldNGh$*pG#N-1d!pg`So3&JT3lZX%2!2Ab { + this.legendaryExpiration.setText(this.getLegendaryGachaTimeLeft()); + }, + }); + } + + getLegendaryGachaTimeLeft(): string { + // 86400000 is the number of miliseconds in one day + const msUntilMidnight = 86400000 - (Date.now() % 86400000); + const hours = `${Math.floor(msUntilMidnight / 3600000)}`; + const minutes = `${Math.floor((msUntilMidnight % 3600000) / 60000)}`; + const seconds = `${Math.floor((msUntilMidnight % 60000) / 1000)}`; + + return `${hours.padStart(2, "0")}:${minutes.padStart(2, "0")}:${seconds.padStart(2, "0")}`; + } + clear(): void { super.clear(); this.setGachaCursor(-1); this.eggGachaContainer.setVisible(false); + if (this.playTimeTimer) { + this.playTimeTimer.destroy(); + this.playTimeTimer = null; + } } }