mirror of
https://github.com/rico-vz/HeimerdingerLoL.git
synced 2025-12-06 18:20:48 +01:00
A new resource type, 'Crimson Rush', has been added to the Champion model. This extends the range of available resource types for champions in the game.
144 lines
3.8 KiB
PHP
144 lines
3.8 KiB
PHP
<?php
|
|
|
|
namespace App\Models;
|
|
|
|
use Cviebrock\EloquentSluggable\Sluggable;
|
|
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
|
use Illuminate\Database\Eloquent\Model;
|
|
use Illuminate\Database\Eloquent\Relations\HasMany;
|
|
use Illuminate\Database\Eloquent\Relations\HasOne;
|
|
|
|
class Champion extends Model
|
|
{
|
|
use HasFactory;
|
|
use Sluggable;
|
|
|
|
protected $fillable = [
|
|
'champion_id',
|
|
'key',
|
|
'name',
|
|
'title',
|
|
'lore',
|
|
'roles',
|
|
'price_be',
|
|
'price_rp',
|
|
'resource_type',
|
|
'attack_type',
|
|
'adaptive_type',
|
|
'release_date',
|
|
'release_patch',
|
|
];
|
|
|
|
public function getResourceTypeAttribute($value): string
|
|
{
|
|
$resourceTypes = [
|
|
'BLOOD_WELL' => 'Blood',
|
|
'MANA' => 'Mana',
|
|
'ENERGY' => 'Energy',
|
|
'NONE' => 'None',
|
|
'HEALTH' => 'Health',
|
|
'RAGE' => 'Rage',
|
|
'COURAGE' => 'Courage',
|
|
'SHIELD' => 'Shield',
|
|
'FURY' => 'Fury',
|
|
'FEROCITY' => 'Ferocity',
|
|
'HEAT' => 'Heat',
|
|
'GRIT' => 'Grit',
|
|
'BLOODTHIRST' => 'Bloodthirst',
|
|
'FLOW' => 'Flow',
|
|
'SOUL_UNBOUND' => 'Soul Unbound',
|
|
'CRIMSON_RUSH' => 'Crimson Rush',
|
|
];
|
|
|
|
return $resourceTypes[$value];
|
|
}
|
|
|
|
public function getAdaptiveTypeAttribute($value): string
|
|
{
|
|
$adaptiveTypes = [
|
|
'ADAPTIVE_DAMAGE' => 'Adaptive',
|
|
'MAGIC_DAMAGE' => 'Magical',
|
|
'PHYSICAL_DAMAGE' => 'Physical',
|
|
];
|
|
|
|
return $adaptiveTypes[$value];
|
|
}
|
|
|
|
public function sluggable(): array
|
|
{
|
|
return [
|
|
'slug' => [
|
|
'source' => 'name',
|
|
],
|
|
];
|
|
}
|
|
|
|
public function getRouteKeyName(): string
|
|
{
|
|
return 'slug';
|
|
}
|
|
|
|
public function skins(): HasMany
|
|
{
|
|
return $this->hasMany(ChampionSkin::class, 'champion_id', 'champion_id');
|
|
}
|
|
|
|
public function lanes(): HasOne
|
|
{
|
|
return $this->hasOne(ChampionRoles::class, 'champion_id', 'champion_id');
|
|
}
|
|
|
|
public function streamers()
|
|
{
|
|
return $this->hasMany(Streamer::class, 'champion_id', 'champion_id');
|
|
}
|
|
|
|
public function getChampionImageAttribute(bool $uncentered = false): string
|
|
{
|
|
return getChampionImage($this->champion_id.'000', $uncentered ? 'uncentered_splash' : 'splash');
|
|
}
|
|
|
|
public function getChampionImageTileAttribute(): string
|
|
{
|
|
return getChampionImage($this->champion_id.'000', 'tile');
|
|
}
|
|
|
|
public function getChampionSquareImageAttribute(): string
|
|
{
|
|
return 'https://raw.communitydragon.org/pbe/plugins/rcp-be-lol-game-data/global/default/v1/champion-icons/'.$this->champion_id.'.png';
|
|
}
|
|
|
|
// TODO: Implement Ability Icons in the DB and get them from there.
|
|
public function getChampionAbilityIconQAttribute(): string
|
|
{
|
|
return 'https://cdn.communitydragon.org/latest/champion/'.$this->champion_id.'/ability-icon/q';
|
|
}
|
|
|
|
public function getChampionAbilityIconWAttribute(): string
|
|
{
|
|
return 'https://cdn.communitydragon.org/latest/champion/'.$this->champion_id.'/ability-icon/w';
|
|
}
|
|
|
|
public function getChampionAbilityIconEAttribute(): string
|
|
{
|
|
return 'https://cdn.communitydragon.org/latest/champion/'.$this->champion_id.'/ability-icon/e';
|
|
}
|
|
|
|
public function getChampionAbilityIconRAttribute(): string
|
|
{
|
|
return 'https://cdn.communitydragon.org/latest/champion/'.$this->champion_id.'/ability-icon/r';
|
|
}
|
|
|
|
public function getChampionAbilityIconPAttribute(): string
|
|
{
|
|
return 'https://cdn.communitydragon.org/latest/champion/'.$this->champion_id.'/ability-icon/p';
|
|
}
|
|
|
|
protected function casts(): array
|
|
{
|
|
return [
|
|
'roles' => 'array',
|
|
];
|
|
}
|
|
}
|