Compare commits
2 Commits
9b6d48a5fe
...
1ceb9cef7f
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1ceb9cef7f | ||
|
|
eb06a979f6 |
BIN
Jellyfin.Plugin.Seasonals/Web/birthday_assets/balloon_blue.gif
Normal file
|
After Width: | Height: | Size: 240 KiB |
BIN
Jellyfin.Plugin.Seasonals/Web/birthday_assets/balloon_green.gif
Normal file
|
After Width: | Height: | Size: 240 KiB |
|
After Width: | Height: | Size: 240 KiB |
BIN
Jellyfin.Plugin.Seasonals/Web/birthday_assets/balloon_orange.gif
Normal file
|
After Width: | Height: | Size: 240 KiB |
BIN
Jellyfin.Plugin.Seasonals/Web/birthday_assets/balloon_pink.gif
Normal file
|
After Width: | Height: | Size: 240 KiB |
BIN
Jellyfin.Plugin.Seasonals/Web/birthday_assets/balloon_red.gif
Normal file
|
After Width: | Height: | Size: 240 KiB |
BIN
Jellyfin.Plugin.Seasonals/Web/birthday_assets/balloon_yellow.gif
Normal file
|
After Width: | Height: | Size: 240 KiB |
BIN
Jellyfin.Plugin.Seasonals/Web/birthday_assets/gift_1.gif
Normal file
|
After Width: | Height: | Size: 106 KiB |
BIN
Jellyfin.Plugin.Seasonals/Web/birthday_assets/gift_2.gif
Normal file
|
After Width: | Height: | Size: 108 KiB |
@@ -13,23 +13,22 @@
|
||||
|
||||
.friday13-cat {
|
||||
position: absolute;
|
||||
width: 100px;
|
||||
width: 150px; /* MARK: Cat size */
|
||||
height: auto;
|
||||
user-select: none;
|
||||
animation-timing-function: linear;
|
||||
animation-iteration-count: infinite;
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
@keyframes cat-walk-right {
|
||||
0% { left: -10vw; transform: scaleX(1); opacity: 1; }
|
||||
99% { left: 110vw; transform: scaleX(1); opacity: 1; }
|
||||
100% { opacity: 0; }
|
||||
0% { left: -10vw; transform: scaleX(-1); opacity: 1; }
|
||||
99% { left: 110vw; transform: scaleX(-1); opacity: 1; }
|
||||
100% { opacity: 0; transform: scaleX(-1); left: 110vw; }
|
||||
}
|
||||
|
||||
@keyframes cat-walk-left {
|
||||
0% { left: 110vw; transform: scaleX(-1); opacity: 1; }
|
||||
99% { left: -10vw; transform: scaleX(-1); opacity: 1; }
|
||||
100% { opacity: 0; }
|
||||
0% { left: 110vw; transform: scaleX(1); opacity: 1; }
|
||||
99% { left: -10vw; transform: scaleX(1); opacity: 1; }
|
||||
100% { opacity: 0; transform: scaleX(1); left: -10vw; }
|
||||
}
|
||||
|
||||
|
||||
@@ -35,21 +35,38 @@ observer.observe(document.body, {
|
||||
});
|
||||
|
||||
function createFriday13(container) {
|
||||
// Add walking black cat
|
||||
const numCats = 1;
|
||||
for (let i = 0; i < numCats; i++) {
|
||||
function spawnCat() {
|
||||
// MARK: Height of the cat from bottom
|
||||
const catBottomPosition = "-15px";
|
||||
// MARK: Time it takes for the cat to cross the screen
|
||||
const catWalkDurationSeconds = 20;
|
||||
|
||||
const cat = document.createElement('img');
|
||||
cat.className = 'friday13-cat';
|
||||
cat.src = '../Seasonals/Resources/friday_assets/black-cat.gif';
|
||||
cat.style.animationDelay = `${Math.random() * 5}s`;
|
||||
cat.style.bottom = `5px`; // Walk along the very bottom edge
|
||||
cat.style.bottom = catBottomPosition;
|
||||
|
||||
// Either walk left to right or right to left
|
||||
const dir = Math.random() > 0.5 ? 'right' : 'left';
|
||||
cat.style.animationName = `cat-walk-${dir}`;
|
||||
cat.style.animationDuration = `18s`;
|
||||
cat.style.animationDuration = `${catWalkDurationSeconds}s`;
|
||||
cat.style.animationIterationCount = `1`; // play once and remove
|
||||
cat.style.animationFillMode = `forwards`;
|
||||
|
||||
container.appendChild(cat);
|
||||
|
||||
// Remove and respawn
|
||||
setTimeout(() => {
|
||||
if (cat.parentNode) {
|
||||
cat.parentNode.removeChild(cat);
|
||||
}
|
||||
// Respawn with random delay between 5 to 25 seconds
|
||||
setTimeout(spawnCat, Math.random() * 20000 + 5000);
|
||||
}, (catWalkDurationSeconds * 1000) + 500); // Wait for duration + 500ms safety margin
|
||||
}
|
||||
|
||||
// Initial spawn with random delay
|
||||
setTimeout(spawnCat, Math.random() * 5000);
|
||||
}
|
||||
|
||||
function initializeFriday13() {
|
||||
|
||||
|
Before Width: | Height: | Size: 31 KiB After Width: | Height: | Size: 88 KiB |
BIN
Jellyfin.Plugin.Seasonals/Web/olympic_assets/bronze_coin.gif
Normal file
|
After Width: | Height: | Size: 224 KiB |
BIN
Jellyfin.Plugin.Seasonals/Web/olympic_assets/gold_coin.gif
Normal file
|
After Width: | Height: | Size: 204 KiB |
BIN
Jellyfin.Plugin.Seasonals/Web/olympic_assets/ring_black.png
Normal file
|
After Width: | Height: | Size: 62 KiB |
BIN
Jellyfin.Plugin.Seasonals/Web/olympic_assets/ring_blue.png
Normal file
|
After Width: | Height: | Size: 60 KiB |
BIN
Jellyfin.Plugin.Seasonals/Web/olympic_assets/ring_green.png
Normal file
|
After Width: | Height: | Size: 61 KiB |
BIN
Jellyfin.Plugin.Seasonals/Web/olympic_assets/ring_red.png
Normal file
|
After Width: | Height: | Size: 60 KiB |
BIN
Jellyfin.Plugin.Seasonals/Web/olympic_assets/ring_yellow.png
Normal file
|
After Width: | Height: | Size: 58 KiB |
BIN
Jellyfin.Plugin.Seasonals/Web/olympic_assets/silver_coin.gif
Normal file
|
After Width: | Height: | Size: 157 KiB |
BIN
Jellyfin.Plugin.Seasonals/Web/olympic_assets/torch.gif
Normal file
|
After Width: | Height: | Size: 123 KiB |
BIN
Jellyfin.Plugin.Seasonals/Web/space_assets/Satellite_1.gif
Normal file
|
After Width: | Height: | Size: 1.3 MiB |
BIN
Jellyfin.Plugin.Seasonals/Web/space_assets/Satellite_2.gif
Normal file
|
After Width: | Height: | Size: 1.2 MiB |
BIN
Jellyfin.Plugin.Seasonals/Web/space_assets/astronaut_1.gif
Normal file
|
After Width: | Height: | Size: 75 KiB |
BIN
Jellyfin.Plugin.Seasonals/Web/space_assets/iss.png
Normal file
|
After Width: | Height: | Size: 296 KiB |
BIN
Jellyfin.Plugin.Seasonals/Web/space_assets/planet_1.png
Normal file
|
After Width: | Height: | Size: 36 KiB |
BIN
Jellyfin.Plugin.Seasonals/Web/space_assets/planet_2.png
Normal file
|
After Width: | Height: | Size: 27 KiB |
BIN
Jellyfin.Plugin.Seasonals/Web/space_assets/planet_3.png
Normal file
|
After Width: | Height: | Size: 21 KiB |
BIN
Jellyfin.Plugin.Seasonals/Web/space_assets/planet_4.png
Normal file
|
After Width: | Height: | Size: 36 KiB |
BIN
Jellyfin.Plugin.Seasonals/Web/space_assets/planet_5.png
Normal file
|
After Width: | Height: | Size: 33 KiB |
BIN
Jellyfin.Plugin.Seasonals/Web/space_assets/planet_6.png
Normal file
|
After Width: | Height: | Size: 26 KiB |
BIN
Jellyfin.Plugin.Seasonals/Web/space_assets/planet_7.png
Normal file
|
After Width: | Height: | Size: 33 KiB |
BIN
Jellyfin.Plugin.Seasonals/Web/space_assets/planet_8.png
Normal file
|
After Width: | Height: | Size: 25 KiB |
BIN
Jellyfin.Plugin.Seasonals/Web/space_assets/planet_9.png
Normal file
|
After Width: | Height: | Size: 31 KiB |
BIN
Jellyfin.Plugin.Seasonals/Web/space_assets/rocket.gif
Normal file
|
After Width: | Height: | Size: 30 KiB |
BIN
Jellyfin.Plugin.Seasonals/Web/space_assets/space-shuttle.png
Normal file
|
After Width: | Height: | Size: 59 KiB |
BIN
Jellyfin.Plugin.Seasonals/Web/sport_assets/badminton_1.png
Normal file
|
After Width: | Height: | Size: 13 KiB |
BIN
Jellyfin.Plugin.Seasonals/Web/sport_assets/badminton_2.png
Normal file
|
After Width: | Height: | Size: 22 KiB |
BIN
Jellyfin.Plugin.Seasonals/Web/sport_assets/baseball_1.png
Normal file
|
After Width: | Height: | Size: 26 KiB |
BIN
Jellyfin.Plugin.Seasonals/Web/sport_assets/baseball_2.png
Normal file
|
After Width: | Height: | Size: 38 KiB |
BIN
Jellyfin.Plugin.Seasonals/Web/sport_assets/basketball_1.png
Normal file
|
After Width: | Height: | Size: 56 KiB |
BIN
Jellyfin.Plugin.Seasonals/Web/sport_assets/basketball_2.png
Normal file
|
After Width: | Height: | Size: 34 KiB |
BIN
Jellyfin.Plugin.Seasonals/Web/sport_assets/billiard_ball_1.png
Normal file
|
After Width: | Height: | Size: 31 KiB |
BIN
Jellyfin.Plugin.Seasonals/Web/sport_assets/billiard_ball_10.png
Normal file
|
After Width: | Height: | Size: 30 KiB |
BIN
Jellyfin.Plugin.Seasonals/Web/sport_assets/billiard_ball_11.png
Normal file
|
After Width: | Height: | Size: 29 KiB |
BIN
Jellyfin.Plugin.Seasonals/Web/sport_assets/billiard_ball_12.png
Normal file
|
After Width: | Height: | Size: 30 KiB |
BIN
Jellyfin.Plugin.Seasonals/Web/sport_assets/billiard_ball_13.png
Normal file
|
After Width: | Height: | Size: 29 KiB |
BIN
Jellyfin.Plugin.Seasonals/Web/sport_assets/billiard_ball_14.png
Normal file
|
After Width: | Height: | Size: 30 KiB |
BIN
Jellyfin.Plugin.Seasonals/Web/sport_assets/billiard_ball_2.png
Normal file
|
After Width: | Height: | Size: 31 KiB |
BIN
Jellyfin.Plugin.Seasonals/Web/sport_assets/billiard_ball_3.png
Normal file
|
After Width: | Height: | Size: 29 KiB |
BIN
Jellyfin.Plugin.Seasonals/Web/sport_assets/billiard_ball_4.png
Normal file
|
After Width: | Height: | Size: 28 KiB |
BIN
Jellyfin.Plugin.Seasonals/Web/sport_assets/billiard_ball_5.png
Normal file
|
After Width: | Height: | Size: 28 KiB |
BIN
Jellyfin.Plugin.Seasonals/Web/sport_assets/billiard_ball_6.png
Normal file
|
After Width: | Height: | Size: 31 KiB |
BIN
Jellyfin.Plugin.Seasonals/Web/sport_assets/billiard_ball_7.png
Normal file
|
After Width: | Height: | Size: 31 KiB |
BIN
Jellyfin.Plugin.Seasonals/Web/sport_assets/billiard_ball_8.png
Normal file
|
After Width: | Height: | Size: 28 KiB |
BIN
Jellyfin.Plugin.Seasonals/Web/sport_assets/billiard_ball_9.png
Normal file
|
After Width: | Height: | Size: 31 KiB |
BIN
Jellyfin.Plugin.Seasonals/Web/sport_assets/bowling_1.png
Normal file
|
After Width: | Height: | Size: 24 KiB |
BIN
Jellyfin.Plugin.Seasonals/Web/sport_assets/bowling_2.png
Normal file
|
After Width: | Height: | Size: 12 KiB |
BIN
Jellyfin.Plugin.Seasonals/Web/sport_assets/football_1.png
Normal file
|
After Width: | Height: | Size: 57 KiB |
BIN
Jellyfin.Plugin.Seasonals/Web/sport_assets/football_2.png
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
Jellyfin.Plugin.Seasonals/Web/sport_assets/football_3.png
Normal file
|
After Width: | Height: | Size: 33 KiB |
BIN
Jellyfin.Plugin.Seasonals/Web/sport_assets/football_4.png
Normal file
|
After Width: | Height: | Size: 34 KiB |
BIN
Jellyfin.Plugin.Seasonals/Web/sport_assets/football_5.png
Normal file
|
After Width: | Height: | Size: 29 KiB |
BIN
Jellyfin.Plugin.Seasonals/Web/sport_assets/golf_ball_1.png
Normal file
|
After Width: | Height: | Size: 27 KiB |
BIN
Jellyfin.Plugin.Seasonals/Web/sport_assets/golf_ball_2.png
Normal file
|
After Width: | Height: | Size: 24 KiB |
BIN
Jellyfin.Plugin.Seasonals/Web/sport_assets/rugby_ball_1.png
Normal file
|
After Width: | Height: | Size: 30 KiB |
BIN
Jellyfin.Plugin.Seasonals/Web/sport_assets/rugby_ball_2.png
Normal file
|
After Width: | Height: | Size: 29 KiB |
|
After Width: | Height: | Size: 5.0 KiB |
|
After Width: | Height: | Size: 6.1 KiB |
BIN
Jellyfin.Plugin.Seasonals/Web/sport_assets/tennis_ball_1.png
Normal file
|
After Width: | Height: | Size: 20 KiB |
BIN
Jellyfin.Plugin.Seasonals/Web/sport_assets/tennis_ball_2.png
Normal file
|
After Width: | Height: | Size: 22 KiB |
BIN
Jellyfin.Plugin.Seasonals/Web/sport_assets/trophy.gif
Normal file
|
After Width: | Height: | Size: 89 KiB |
BIN
Jellyfin.Plugin.Seasonals/Web/sport_assets/volleyball_1.png
Normal file
|
After Width: | Height: | Size: 34 KiB |
BIN
Jellyfin.Plugin.Seasonals/Web/sport_assets/volleyball_2.png
Normal file
|
After Width: | Height: | Size: 28 KiB |
BIN
Jellyfin.Plugin.Seasonals/Web/sport_assets/waterball_1.png
Normal file
|
After Width: | Height: | Size: 28 KiB |
BIN
Jellyfin.Plugin.Seasonals/Web/sport_assets/waterball_2.png
Normal file
|
After Width: | Height: | Size: 27 KiB |
BIN
Jellyfin.Plugin.Seasonals/Web/underwater_assets/Jellyfish_1.gif
Normal file
|
After Width: | Height: | Size: 497 KiB |
BIN
Jellyfin.Plugin.Seasonals/Web/underwater_assets/Jellyfish_2.gif
Normal file
|
After Width: | Height: | Size: 485 KiB |
BIN
Jellyfin.Plugin.Seasonals/Web/underwater_assets/Seaweed_1.gif
Normal file
|
After Width: | Height: | Size: 220 KiB |
BIN
Jellyfin.Plugin.Seasonals/Web/underwater_assets/Seaweed_2.gif
Normal file
|
After Width: | Height: | Size: 219 KiB |
BIN
Jellyfin.Plugin.Seasonals/Web/underwater_assets/crab_1.gif
Normal file
|
After Width: | Height: | Size: 9.8 KiB |
BIN
Jellyfin.Plugin.Seasonals/Web/underwater_assets/crap_2.gif
Normal file
|
After Width: | Height: | Size: 2.3 KiB |
BIN
Jellyfin.Plugin.Seasonals/Web/underwater_assets/crap_3.gif
Normal file
|
After Width: | Height: | Size: 6.1 KiB |
BIN
Jellyfin.Plugin.Seasonals/Web/underwater_assets/dolphin.gif
Normal file
|
After Width: | Height: | Size: 9.4 KiB |
BIN
Jellyfin.Plugin.Seasonals/Web/underwater_assets/fish_1.gif
Normal file
|
After Width: | Height: | Size: 167 KiB |
BIN
Jellyfin.Plugin.Seasonals/Web/underwater_assets/fish_2.gif
Normal file
|
After Width: | Height: | Size: 167 KiB |
BIN
Jellyfin.Plugin.Seasonals/Web/underwater_assets/fish_3.gif
Normal file
|
After Width: | Height: | Size: 166 KiB |
BIN
Jellyfin.Plugin.Seasonals/Web/underwater_assets/fish_4.gif
Normal file
|
After Width: | Height: | Size: 318 B |
BIN
Jellyfin.Plugin.Seasonals/Web/underwater_assets/fish_5.gif
Normal file
|
After Width: | Height: | Size: 3.3 KiB |
BIN
Jellyfin.Plugin.Seasonals/Web/underwater_assets/fish_6.gif
Normal file
|
After Width: | Height: | Size: 13 KiB |
BIN
Jellyfin.Plugin.Seasonals/Web/underwater_assets/seahorse_1.gif
Normal file
|
After Width: | Height: | Size: 20 KiB |
BIN
Jellyfin.Plugin.Seasonals/Web/underwater_assets/seahorse_2.gif
Normal file
|
After Width: | Height: | Size: 2.9 KiB |
BIN
Jellyfin.Plugin.Seasonals/Web/underwater_assets/shell_1.gif
Normal file
|
After Width: | Height: | Size: 5.0 KiB |
BIN
Jellyfin.Plugin.Seasonals/Web/underwater_assets/starfish_1.gif
Normal file
|
After Width: | Height: | Size: 3.9 KiB |
BIN
Jellyfin.Plugin.Seasonals/Web/underwater_assets/starfish_2.gif
Normal file
|
After Width: | Height: | Size: 836 KiB |
BIN
Jellyfin.Plugin.Seasonals/Web/underwater_assets/turtle.gif
Normal file
|
After Width: | Height: | Size: 162 KiB |