Widget:AvailableCritters

From Dreamlight Valley Wiki
Revision as of 20:08, 29 April 2024 by Marblemadmax (talk | contribs)
Jump to navigation Jump to search

<script> // Data structure for critters and their availability const critters = {

   "Emerald Sunbird": { "Sunday": "12 PM to 12 AM", "Tuesday": "All day", "Wednesday": "All day", "Saturday": "All day" },
   "Golden Sunbird": { "Sunday": "12 AM to 12 PM", "Tuesday": "All day", "Thursday": "All day", "Friday": "All day" },
   "Orchid Sunbird": { "Friday": "9 AM to 3 PM" },
   "Red Sunbird": { "Sunday": "12 PM to 12 AM", "Monday": "All day", "Thursday": "All day", "Saturday": "All day" },
   "Turquoise Sunbird": { "Sunday": "12 AM to 12 PM", "Monday": "All day", "Wednesday": "All day", "Friday": "All day" },
   "Black Squirrel": { "Sunday": "12 AM to 12 PM", "Tuesday": "All day", "Thursday": "All day", "Friday": "All day" },
   "Classic Squirrel": { "Sunday": "12 PM to 12 AM", "Monday": "All day", "Thursday": "All day", "Saturday": "All day" },
   "Gray Squirrel": { "Sunday": "12 PM to 12 AM", "Tuesday": "All day", "Wednesday": "All day", "Saturday": "All day" },
   "Red Squirrel": { "Sunday": "12 AM to 12 PM", "Monday": "All day", "Wednesday": "All day", "Friday": "All day" },
   "White Squirrel": { "Sunday": "12 AM to 6 AM" },
   "Blue Crocodile": { "Sunday": "12 AM to 12 PM", "Monday": "All day", "Wednesday": "All day", "Friday": "All day" },
   "Classic Crocodile": { "Sunday": "12 PM to 12 AM", "Monday": "All day", "Thursday": "All day", "Saturday": "All day" },
   "Golden Crocodile": { "Sunday": "12 AM to 12 PM", "Tuesday": "All day", "Thursday": "All day", "Friday": "All day" },
   "Pink Crocodile": { "Saturday": "6 AM to 12 PM" },
   "Red Crocodile": { "Sunday": "12 PM to 12 AM", "Tuesday": "All day", "Wednesday": "All day", "Saturday": "All day" },
   "White Crocodile": { "Sunday": "6 PM to 12 AM" },
   "Black Rabbit": { "Sunday": "12 AM to 12 PM", "Monday": "All day", "Wednesday": "All day", "Friday": "All day" },
   "Brown Rabbit": { "Sunday": "12 PM to 12 AM", "Tuesday": "All day", "Wednesday": "All day", "Saturday": "All day" },
   "Calico Rabbit": { "Thursday": "8 AM to 2 PM" },
   "Classic Rabbit": { "Sunday": "12 PM to 12 AM", "Monday": "All day", "Thursday": "All day", "Saturday": "All day" },
   "White Rabbit": { "Sunday": "12 AM to 12 PM", "Tuesday": "All day", "Thursday": "All day", "Friday": "All day" },
   "Blue Raven": { "Sunday": "12 AM to 12 PM", "Tuesday": "All day", "Thursday": "All day", "Friday": "All day" },
   "Brown Raven": { "Tuesday": "6 PM to 12 AM" },
   "Classic Raven": { "Sunday": "12 PM to 12 AM", "Monday": "All day", "Thursday": "All day", "Saturday": "All day" },
   "Red Raven": { "Sunday": "12 AM to 12 PM", "Monday": "All day", "Wednesday": "All day", "Friday": "All day" },
   "White Raven": { "Sunday": "12 PM to 12 AM", "Tuesday": "All day", "Wednesday": "All day", "Saturday": "All day" },
   "Black Sea Turtle": { "Monday": "10 AM to 4 PM" },
   "Brown Sea Turtle": { "Sunday": "12 AM to 12 PM", "Monday": "All day", "Wednesday": "All day", "Friday": "All day" },
   "Classic Sea Turtle": { "Sunday": "12 PM to 12 AM", "Monday": "All day", "Thursday": "All day", "Saturday": "All day" },
   "Purple Sea Turtle": { "Sunday": "12 AM to 12 PM", "Tuesday": "All day", "Thursday": "All day", "Friday": "All day" },
   "White Sea Turtle": { "Sunday": "12 PM to 12 AM", "Tuesday": "All day", "Wednesday": "All day", "Saturday": "All day" },
   "Black Fox": { "Sunday": "12 PM to 12 AM", "Tuesday": "All day", "Wednesday": "All day", "Saturday": "All day" },
   "Blue Fox": { "Sunday": "12 AM to 12 PM", "Tuesday": "All day", "Thursday": "All day", "Friday": "All day" },
   "Classic Fox": { "Sunday": "12 AM to 12 PM", "Monday": "All day", "Wednesday": "All day", "Friday": "All day" },
   "Red Fox": { "Saturday": "2 AM to 8 AM" },
   "White Fox": { "Sunday": "12 PM to 12 AM", "Monday": "All day", "Thursday": "All day", "Saturday": "All day" },
   "Black Raccoon": { "Sunday": "12 PM to 12 AM", "Tuesday": "All day", "Wednesday": "All day", "Saturday": "All day" },
   "Blue Raccoon": { "Wednesday": "4 PM to 10 PM" },
   "Classic Raccoon": { "Sunday": "12 PM to 12 AM", "Monday": "All day", "Thursday": "All day", "Saturday": "All day" },
   "Red Raccoon": { "Sunday": "12 AM to 12 PM", "Monday": "All day", "Wednesday": "All day", "Friday": "All day" },
   "White Raccoon": { "Sunday": "12 AM to 12 PM", "Tuesday": "All day", "Thursday": "All day", "Friday": "All day" },
   "Black and White Capybara": { "Sunday": "12 PM to 12 AM", "Tuesday": "All day", "Thursday": "12 PM to 12 AM", "Friday": "12 PM to 12 AM", "Saturday": "12 PM to 12 AM" },
   "Blue Striped Capybara": { "Monday": "12 AM to 12 PM", "Tuesday": "12 AM to 12 PM", "Wednesday": "12 AM to 12 PM", "Thursday": "All day", "Saturday": "All day" },
   "Classic Capybara": { "Sunday": "All day", "Monday": "All day", "Tuesday": "All day", "Wednesday": "All day", "Thursday": "All day", "Friday": "All day", "Saturday": "All day" },
   "Gray Spotted Capybara": { "Monday": "12 PM to 12 AM", "Tuesday": "12 PM to 12 AM", "Wednesday": "12 PM to 12 AM", "Friday": "All day", "Saturday": "All day" },
   "Red and White Striped Capybara": { "Saturday": "12 PM to 6 PM" },
   "Blue and Red Striped Cobra": { "Sunday": "All day", "Monday": "12 PM to 12 AM", "Tuesday": "12 PM to 12 AM", "Thursday": "All day", "Saturday": "12 PM to 12 AM" },
   "Classic Cobra": { "Sunday": "All day", "Monday": "All day", "Tuesday": "All day", "Wednesday": "All day", "Thursday": "All day", "Friday": "All day", "Saturday": "All day" },
   "Green and White Striped Cobra": { "Thursday": "6 AM to 12 PM" },
   "Pink Spotted Cobra": { "Sunday": "12 AM to 12 PM", "Monday": "All day", "Wednesday": "12 AM to 12 PM", "Thursday": "12 AM to 12 PM", "Friday": "All day" },
   "Yellow and Purple Striped Cobra": { "Sunday": "12 PM to 12 AM", "Tuesday": "All day", "Wednesday": "12 PM to 12 AM", "Thursday": "12 PM to 12 AM", "Saturday": "All day" },
   "Beige Monkey": { "Sunday": "All day", "Monday": "12 PM to 12 AM", "Wednesday": "12 PM to 12 AM", "Thursday": "All day", "Friday": "12 PM to 12 AM" },
   "Black and Brown Monkey": { "Sunday": "12 PM to 12 AM", "Tuesday": "12 PM to 12 AM", "Wednesday": "All day", "Thursday": "12 PM to 12 AM", "Saturday": "All day" },
   "Black and Gray Monkey": { "Tuesday": "6 PM to 12 AM" },
   "Classic Monkey": { "Sunday": "All day", "Monday": "All day", "Tuesday": "All day", "Wednesday": "All day", "Thursday": "All day", "Friday": "All day", "Saturday": "All day" },
   "Red and Beige Monkey": { "Monday": "12 AM to 12 PM", "Tuesday": "All day", "Wednesday": "12 AM to 12 PM", "Friday": "12 AM to 12 PM", "Saturday": "All day" }

};

// Function to check if a critter is available function isAvailable(critter, day, hour) {

   const times = critters[critter][day];
   if (!times) return false; // 'n/a' or undefined
   if (times === 'All day') return true;
   const [start, end] = times.split(' to ');
   const startHour = parseHour(start);
   const endHour = parseHour(end);
   return hour >= startHour && hour < endHour;

}

// Helper function to parse hour string to 24-hour format number function parseHour(timeStr) {

   const [time, period] = timeStr.split(' ');
   let [hours, minutes] = time.split(':');
   hours = parseInt(hours);
   if (period === 'PM' && hours !== 12) hours += 12;
   if (period === 'AM' && hours === 12) hours = 0;
   return hours;

}

// Function to update the gallery function updateGallery() {

   const now = new Date();
   const dayOfWeek = now.toLocaleString('en-US', { weekday: 'long' }); // Get day name
   const hour = now.getHours(); // Get current hour in 24-hour format
   let galleryContent = ;
   for (const [critter, _] of Object.entries(critters)) {
       if (isAvailable(critter, dayOfWeek, hour)) {
           galleryContent += `File:${critter.replace(/ /g, '_')}.png|link=${critter}\n`;
       }
   }
   // Assuming you have a div with id 'critterGallery' to host the gallery
   const galleryContainer = document.getElementById('critterGallery');
   if (galleryContainer) {

galleryContainer.innerHTML = `

`;

   }

}

// Listen for the wikipage.content hook to update the gallery after MediaWiki processes the content window.addEventListener('load', function() {

   if (typeof mw === 'object' && typeof mw.hook === 'function') {
       mw.hook('wikipage.content').add(function ($content) {
           updateGallery();
       });
   } else {
       console.error('MediaWiki scripts not loaded');
   }

});

// Update the gallery immediately on script load, in case it's not triggered by mw.hook updateGallery(); </script>