невидимка';
class Nick
{
private User $user;
private function __construct(int $userid)
{
$this->user = User::getInstance($userid);
}
/**
* Отображение иконки склонности.
* @return string
*/
private function getAlignImage(): ?string
{
return $this->getImage($this->user->getAlign(), '/i/align_');
}
/**
* Отображение иконки клана.
* @return string
*/
private function getClanImage(): string
{
return $this->getImage($this->user->getClan(), '/i/clan/');
}
private function getImage($name, $path): string
{
if (empty($name)) {
return '';
}
$file = $path . $name . '.png';
$alt = '';
if (strpos($path, 'align')) {
$alt = '{a:' . $name . '}';
} elseif (strpos($path, 'clan')) {
$alt = '{c:' . $name . '}';
}
return file_exists($file) ? "" : $alt;
}
private function getInfolinkImage(): string
{
return "";
}
/**
* Вызов класса из самого себя. Читать про обратное связывание и пытаться что-то понять.
*
* @param $playerId
*
* @return Nick
*/
public static function id($playerId): self
{
return new self($playerId);
}
/**
* Возвращает строку со склонностью, кланом, логином, уровнем, ссылкой на профиль.
*
* @param int $showInvisibility отображать логин даже если персонаж невидимка.
*
* @return string
*/
public function full(int $showInvisibility = 0): string
{
if ($showInvisibility === 0 && UserEffect::isInvisible($this->user->getId())) {
return INVIS;
}
return $this->getAlignImage() . ' ' . $this->getClanImage() . ' ' . $this->user->getLogin() . " [" . $this->user->getLevel() . "] " . $this->getInfolinkImage();
}
/**
* Возвращает строку с логином.
* Избавиться от этого! Оставлено для совместимости.
* @return string
*/
public function short(): string
{
return $this->user->getLogin();
}
/**
* Возвращает строку со склонностью, кланом, логином, уровнем, ссылкой на профиль, здоровьем.
* @return string
*/
public function battle(): string
{
return $this->full() . " [" . $this->user->stats()->getHealth() . "/" . $this->user->stats()->getMaxHealth() . "]";
}
}