feat: Add support for uncentered champion images

- Updated the Champion model to include an optional parameter for retrieving uncentered champion images. Adjusted image URLs in relevant views accordingly.
This commit is contained in:
Rico van Zelst
2024-04-14 14:21:32 +02:00
parent a6ac3f8496
commit 0fb2b967fb
4 changed files with 22 additions and 18 deletions

View File

@@ -37,7 +37,7 @@ class ChampionController extends Controller
$splashColor = Cache::remember(
'championSplashColorCache'.$champion->slug,
$sixMonthsInSeconds,
static fn () => getAverageColorFromImageUrl('https://wsrv.nl/?url='.$champion->getChampionImageAttribute())
static fn () => getAverageColorFromImageUrl('https://wsrv.nl/?url=' . $champion->getChampionImageAttribute(true))
);
$champion->splash_color = $splashColor;

View File

@@ -99,9 +99,13 @@ class Champion extends Model
return $this->hasMany(Streamer::class, 'champion_id', 'champion_id');
}
public function getChampionImageAttribute(): string
public function getChampionImageAttribute(bool $uncentered = false): string
{
return 'https://raw.communitydragon.org/pbe/plugins/rcp-be-lol-game-data/global/default/v1/champion-splashes/'.$this->champion_id.'/'.$this->champion_id.'000.jpg';
$baseUrl = 'https://raw.communitydragon.org/pbe/plugins/rcp-be-lol-game-data/global/default/v1/champion-splashes/';
$imagePath = $uncentered ? 'uncentered/' : '';
$imageUrl = $baseUrl . $imagePath . $this->champion_id . '/' . $this->champion_id . '000.jpg';
return $imageUrl;
}
public function getChampionImageTileAttribute(): string

View File

@@ -17,7 +17,7 @@
<div class="absolute inset-0 aspect-video glow-shadow rounded-2xl"
style="--splash-color: {{ $champion->splash_color }}"></div>
<div class="relative overflow-hidden aspect-video rounded-2xl">
<img src="//wsrv.nl/?url={{ $champion->getChampionImageAttribute() }}&w=880&output=webp&q=85&il"
<img src="//wsrv.nl/?url={{ $champion->getChampionImageAttribute(true) }}&w=880&output=webp&q=85&il"
alt="{{ $champion->name }} Splash Art"
class="z-10 object-cover w-full h-full transition-transform duration-700 transform scale-100 hover:scale-105">
</div>

View File

@@ -11,7 +11,7 @@
<h3 class="mt-8 mb-2 text-2xl font-bold text-center text-transparent uppercase sm:text-3xl bg-gradient-to-bl from-orange-300 to-orange-500 bg-clip-text">Champions on Sale</h3>
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6">
<div class="grid grid-cols-1 gap-6 md:grid-cols-2 lg:grid-cols-3">
@foreach($sales['CHAMPION'] as $sale)
@php
$champion = Champion::where('champion_id', $sale['id'])->first();
@@ -21,12 +21,12 @@
@endphp
<a href="/champion/{{$champion->slug}}">
<div
class="flex flex-col text-gray-700 bg-stone-800/40 shadow-md rounded-2xl bg-clip-border border border-stone-800 hover:border-orange-500/10 hover:shadow-orange-500/10 items-center">
<div class="absolute mt-4 rounded-full bg-black/60 px-3 py-1 text-white">
class="flex flex-col items-center text-gray-700 border shadow-md bg-stone-800/40 rounded-2xl bg-clip-border border-stone-800 hover:border-orange-500/10 hover:shadow-orange-500/10">
<div class="absolute px-3 py-1 mt-4 text-white rounded-full bg-black/60">
{{ $discountPercentage }}% Off
</div>
<div
class="mx-4 overflow-hidden w-auto rounded-2xl bg-clip-border border-2 border-orange-400/40 mt-3 aspect-video">
class="w-auto mx-4 mt-3 overflow-hidden border-2 rounded-2xl bg-clip-border border-orange-400/40 aspect-video">
<img
src="//wsrv.nl/?url={{ $champion->getChampionImageAttribute() }}&w=450&output=webp&q=80&il&default=ssl:wsrv.nl%2F%3Furl%3Dhttps://i.ibb.co/5s6YyvN/aaaa.png"
class="aspect-video"
@@ -36,8 +36,8 @@
</div>
<div class="px-4 py-2">
<div class="flex">
<p class="block text-sm antialiased font-medium text-gray-100 text-left">
<span class="text-orange-400 font-bold">{{ $champion->name }}</span>
<p class="block text-sm antialiased font-medium text-left text-gray-100">
<span class="font-bold text-orange-400">{{ $champion->name }}</span>
{{ $discountedPrice }} RP
</p>
</div>
@@ -48,9 +48,9 @@
</div>
<h3 class="text-2xl font-bold text-center text-transparent uppercase sm:text-3xl bg-gradient-to-bl from-orange-300 to-orange-500 bg-clip-text mt-8">Skins on Sale</h3>
<div class="container mx-auto p-4 flex items-center justify-center flex-col text-white">
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6">
<h3 class="mt-8 text-2xl font-bold text-center text-transparent uppercase sm:text-3xl bg-gradient-to-bl from-orange-300 to-orange-500 bg-clip-text">Skins on Sale</h3>
<div class="container flex flex-col items-center justify-center p-4 mx-auto text-white">
<div class="grid grid-cols-1 gap-6 md:grid-cols-2 lg:grid-cols-3">
@foreach($sales['CHAMPION_SKIN'] as $sale)
@php
$skin = ChampionSkin::where('full_skin_id', $sale['id'])->first();
@@ -60,12 +60,12 @@
@endphp
<a href="/skin/{{ $skin->slug }}">
<div
class="flex flex-col text-gray-700 bg-stone-800/40 shadow-md rounded-2xl bg-clip-border border border-stone-800 hover:border-orange-500/10 hover:shadow-orange-500/10 items-center">
<div class="absolute mt-4 rounded-full bg-black/60 px-3 py-1 text-white">
class="flex flex-col items-center text-gray-700 border shadow-md bg-stone-800/40 rounded-2xl bg-clip-border border-stone-800 hover:border-orange-500/10 hover:shadow-orange-500/10">
<div class="absolute px-3 py-1 mt-4 text-white rounded-full bg-black/60">
{{ $discountPercentage }}% Off
</div>
<div
class="mx-4 overflow-hidden w-auto rounded-2xl bg-clip-border border-2 border-orange-400/40 mt-3 aspect-video">
class="w-auto mx-4 mt-3 overflow-hidden border-2 rounded-2xl bg-clip-border border-orange-400/40 aspect-video">
<img
src="//wsrv.nl/?url={{ $skin->getSkinImageAttribute() }}&w=450&output=webp&q=80&il&default=ssl:wsrv.nl%2F%3Furl%3Dhttps://i.ibb.co/5s6YyvN/aaaa.png"
class="aspect-video"
@@ -75,8 +75,8 @@
</div>
<div class="px-4 py-2">
<div class="flex">
<p class="block text-sm antialiased font-medium text-gray-100 text-left">
<span class="text-orange-400 font-bold">{{ $skin->skin_name }}</span>
<p class="block text-sm antialiased font-medium text-left text-gray-100">
<span class="font-bold text-orange-400">{{ $skin->skin_name }}</span>
{{ $discountedPrice }} RP
</p>
</div>