Widget:GlobalEventTimer

De Wiki Gla
Revisão de 18h25min de 31 de março de 2025 por Gurren1 (discussão | contribs)
Ir para navegação Ir para pesquisar

<img class="global-event-image" src="/images/0/0a/Anyevent.png" alt="Global Event">

12:00

<script>

       var globalEventsTimer = $('#global-event-time'); // Atualizado: ID do Timer dos Global Events
       var globalEventsImage = $('.global-event-image'); // Atualizado: Classe da Imagem dos Global Events
       var globalEventsInterval;
       // Informações dos eventos
       /*
         0 - Domingo
         1 - Segunda-feira
         2 - Terça-feira
         3 - Quarta-feira
         4 - Quinta-feira
         5 - Sexta-feira
         6 - Sábado
       */
       var globalEventsInfo = {
           0: [
               { name: 'Foxy Memory', time: '02:00:00', src: '/images/3/37/Foxy_memory_event.png' },
               { name: 'Foxy race (ship)', time: '09:00:00', src: '/images/2/29/Foxy_race_ship_event.png' },
               { name: 'Deathmatch', time: '12:00:00', src: '/images/4/46/Deathmatch_event.png' },
               { name: 'Foxy race', time: '15:00:00', src: '/images/e/e8/Foxy_race_event.png' },
               { name: 'Foxy quiz', time: '19:00:00', src: '/images/b/b3/Foxy_quiz_event.png' },
               { name: 'Foxy count', time: '22:00:00', src: '/images/f/f3/Foxy_count_event.png' },
           ],
           1: [
               { name: 'Foxy Memory', time: '02:00:00', src: '/images/3/37/Foxy_memory_event.png' },
               { name: 'Foxy race (ship)', time: '09:00:00', src: '/images/2/29/Foxy_race_ship_event.png' },
               { name: 'Deathmatch', time: '12:00:00', src: '/images/4/46/Deathmatch_event.png' },
               { name: 'Foxy race', time: '15:00:00', src: '/images/e/e8/Foxy_race_event.png' },
               { name: 'Foxy quiz', time: '19:00:00', src: '/images/b/b3/Foxy_quiz_event.png' },
               { name: 'Foxy count', time: '22:00:00', src: '/images/f/f3/Foxy_count_event.png' },
           ],
           2: [
               { name: 'Foxy race (ship)', time: '02:00:00', src: '/images/2/29/Foxy_race_ship_event.png' },
               { name: 'Deathmatch', time: '09:00:00', src: '/images/4/46/Deathmatch_event.png' },
               { name: 'Foxy race', time: '12:00:00', src: '/images/e/e8/Foxy_race_event.png' },
               { name: 'Foxy quiz', time: '15:00:00', src: '/images/b/b3/Foxy_quiz_event.png' },
               { name: 'Foxy count', time: '19:00:00', src: '/images/f/f3/Foxy_count_event.png' },
               { name: 'Foxy Memory', time: '22:00:00', src: '/images/3/37/Foxy_memory_event.png' },
           ],
           3: [
               { name: 'Deathmatch', time: '02:00:00', src: '/images/4/46/Deathmatch_event.png' },
               { name: 'Foxy race', time: '09:00:00', src: '/images/e/e8/Foxy_race_event.png' },
               { name: 'Foxy quiz', time: '12:00:00', src: '/images/b/b3/Foxy_quiz_event.png' },
               { name: 'Foxy count', time: '15:00:00', src: '/images/f/f3/Foxy_count_event.png' },
               { name: 'Foxy Memory', time: '19:00:00', src: '/images/3/37/Foxy_memory_event.png' },
               { name: 'Foxy race (ship)', time: '22:00:00', src: '/images/2/29/Foxy_race_ship_event.png' },
           ],
           4: [
               { name: 'Foxy race', time: '02:00:00', src: '/images/e/e8/Foxy_race_event.png' },
               { name: 'Foxy quiz', time: '09:00:00', src: '/images/b/b3/Foxy_quiz_event.png' },
               { name: 'Foxy count', time: '12:00:00', src: '/images/f/f3/Foxy_count_event.png' },
               { name: 'Foxy Memory', time: '15:00:00', src: '/images/3/37/Foxy_memory_event.png' },
               { name: 'Foxy race (ship)', time: '19:00:00', src: '/images/2/29/Foxy_race_ship_event.png' },
               { name: 'Deathmatch', time: '22:00:00', src: '/images/4/46/Deathmatch_event.png' },
           ],
           5: [
               { name: 'Foxy quiz', time: '02:00:00', src: '/images/b/b3/Foxy_quiz_event.png' },
               { name: 'Foxy count', time: '09:00:00', src: '/images/f/f3/Foxy_count_event.png' },
               { name: 'Foxy Memory', time: '12:00:00', src: '/images/3/37/Foxy_memory_event.png' },
               { name: 'Foxy race (ship)', time: '15:00:00', src: '/images/2/29/Foxy_race_ship_event.png' },
               { name: 'Deathmatch', time: '19:00:00', src: '/images/4/46/Deathmatch_event.png' },
               { name: 'Foxy race', time: '22:00:00', src: '/images/e/e8/Foxy_race_event.png' },
           ],
           6: [
               { name: 'Foxy count', time: '02:00:00', src: '/images/f/f3/Foxy_count_event.png' },
               { name: 'Foxy Memory', time: '09:00:00', src: '/images/3/37/Foxy_memory_event.png' },
               { name: 'Foxy race (ship)', time: '12:00:00', src: '/images/2/29/Foxy_race_ship_event.png' },
               { name: 'Deathmatch', time: '15:00:00', src: '/images/4/46/Deathmatch_event.png' },
               { name: 'Foxy race', time: '21:55:00', src: '/images/e/e8/Foxy_race_event.png' },
               { name: 'Foxy quiz', time: '22:00:00', src: '/images/b/b3/Foxy_quiz_event.png' },
           ]
       };
       function pad(value) {
           return value < 10 ? '0' + value : value;
       }
       function getBrazilTime() {
           var now = new Date();
           var utc = now.getTime() + (now.getTimezoneOffset() * 60000); // Converte para UTC
           return new Date(utc - (3 * 3600000)); // Ajusta para UTC-3
       }
       function startGlobalEventCountdown(eventStartTime, eventEndTime) {
           if (globalEventsInterval) clearInterval(globalEventsInterval);
           globalEventsInterval = setInterval(function () {
               var now = getBrazilTime().getTime();
               if (now < eventEndTime) {
                   var timeRemaining = Math.ceil((eventEndTime - now) / 1000); // Segundos restantes
                   var minutes = Math.floor(timeRemaining / 60);
                   var seconds = timeRemaining % 60;
                   globalEventsTimer.html('Iniciando: ' + pad(minutes) + ":" + pad(seconds));
               } else {
                   clearInterval(globalEventsInterval);
                   setGlobalEvent();
               }
           }, 1000);
       }
       function setGlobalEvent() {
           var now = getBrazilTime(); // Usa o horário do Brasil
           var dayEvents = globalEventsInfo[now.getDay()];
           if (!dayEvents || dayEvents.length === 0) {
               globalEventsImage.attr('src', '/images/0/0a/Anyevent.png'); // Imagem padrão
               globalEventsTimer.html('Acabaram os eventos por hoje');
               return;
           }
           for (var i = 0; i < dayEvents.length; i++) {
               var event = dayEvents[i];
               var timeParts = event.time.split(':');
               var eventStartTime = new Date(
                   now.getFullYear(),
                   now.getMonth(),
                   now.getDate(),
                   parseInt(timeParts[0], 10),
                   parseInt(timeParts[1], 10),
                   parseInt(timeParts[2], 10)
               ).getTime();
               var eventEndTime = eventStartTime + 5 * 60 * 1000; // Evento dura 5 minutos para entrada
               if (now >= eventStartTime && now < eventEndTime) {
                   // Durante o período de entrada do evento
                   globalEventsImage.attr('src', event.src);
                   startGlobalEventCountdown(eventStartTime, eventEndTime);
                   return;
               }
               if (now < eventStartTime) {
                   // Antes do evento, exibe o horário fixo
                   globalEventsImage.attr('src', event.src);
                   globalEventsTimer.html(
                       new Date(eventStartTime).toLocaleTimeString('pt-BR', {
                           hour: '2-digit',
                           minute: '2-digit',
                       })
                   );
                   // Só inicia a contagem regressiva quando estiver próximo (faltando 5 minutos ou menos)
                   if (eventStartTime - now <= 5 * 60 * 1000) {
                       startGlobalEventCountdown(eventStartTime, eventEndTime);
                   }
                   return;
               }
           }
           // Após o último evento do dia
           globalEventsImage.attr('src', '/images/0/0a/Anyevent.png'); // Imagem padrão
           globalEventsTimer.html('Acabaram os eventos por hoje');
       }
       $(document).ready(function () {
           setGlobalEvent();
       });

</script>