2020-08-27 12:17:02 +00:00
|
|
|
|
<?php
|
2022-01-26 23:15:33 +00:00
|
|
|
|
|
2020-10-28 20:21:08 +00:00
|
|
|
|
namespace Battles;
|
2022-01-26 23:15:33 +00:00
|
|
|
|
|
2020-08-27 12:17:02 +00:00
|
|
|
|
/**
|
|
|
|
|
* Разные способы отображения строки с логином персонажа.
|
|
|
|
|
*/
|
2021-01-28 21:05:34 +00:00
|
|
|
|
const INVIS = '<i>невидимка</i>';
|
2022-08-09 19:57:43 +00:00
|
|
|
|
class Nick
|
2020-08-27 12:17:02 +00:00
|
|
|
|
{
|
2022-08-09 19:57:43 +00:00
|
|
|
|
private User $user;
|
|
|
|
|
|
|
|
|
|
private function __construct(int $userid)
|
2020-08-27 12:17:02 +00:00
|
|
|
|
{
|
2022-08-09 19:57:43 +00:00
|
|
|
|
$this->user = User::getInstance($userid);
|
2020-08-27 12:17:02 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Отображение иконки склонности.
|
|
|
|
|
* @return string
|
|
|
|
|
*/
|
2022-01-26 23:15:33 +00:00
|
|
|
|
private function getAlignImage(): ?string
|
2020-08-27 12:17:02 +00:00
|
|
|
|
{
|
2022-08-09 19:57:43 +00:00
|
|
|
|
return $this->getImage($this->user->getAlign(), '/i/align_');
|
2020-08-27 12:17:02 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Отображение иконки клана.
|
|
|
|
|
* @return string
|
|
|
|
|
*/
|
2022-08-09 19:57:43 +00:00
|
|
|
|
private function getClanImage(): string
|
|
|
|
|
{
|
|
|
|
|
return $this->getImage($this->user->getClan(), '/i/clan/');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private function getImage($name, $path): string
|
2022-01-26 23:15:33 +00:00
|
|
|
|
{
|
2022-08-09 19:57:43 +00:00
|
|
|
|
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) ? "<img src='$file' alt='$alt'>" : $alt;
|
2022-01-26 23:15:33 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private function getInfolinkImage(): string
|
2020-08-27 12:17:02 +00:00
|
|
|
|
{
|
2022-08-09 19:57:43 +00:00
|
|
|
|
return "<a href='inf.php?" . $this->user->getLogin() . "' target='_blank'><img src='i/inf.gif' alt='Ссылка на профиль'></a>";
|
2020-08-27 12:17:02 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
2020-10-30 00:33:02 +00:00
|
|
|
|
* Вызов класса из самого себя. Читать про обратное связывание и пытаться что-то понять.
|
2022-08-09 19:57:43 +00:00
|
|
|
|
*
|
2020-08-27 12:17:02 +00:00
|
|
|
|
* @param $playerId
|
|
|
|
|
*
|
|
|
|
|
* @return Nick
|
|
|
|
|
*/
|
2022-01-26 23:15:33 +00:00
|
|
|
|
public static function id($playerId): self
|
2020-08-27 12:17:02 +00:00
|
|
|
|
{
|
|
|
|
|
return new self($playerId);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Возвращает строку со склонностью, кланом, логином, уровнем, ссылкой на профиль.
|
|
|
|
|
*
|
2021-01-27 13:53:39 +00:00
|
|
|
|
* @param int $showInvisibility отображать логин даже если персонаж невидимка.
|
2020-08-27 12:17:02 +00:00
|
|
|
|
*
|
|
|
|
|
* @return string
|
|
|
|
|
*/
|
2022-01-26 23:15:33 +00:00
|
|
|
|
public function full(int $showInvisibility = 0): string
|
2020-08-27 12:17:02 +00:00
|
|
|
|
{
|
2022-08-09 19:57:43 +00:00
|
|
|
|
if ($showInvisibility === 0 && UserEffect::isInvisible($this->user->getId())) {
|
|
|
|
|
return INVIS;
|
|
|
|
|
}
|
|
|
|
|
return $this->getAlignImage() . ' ' . $this->getClanImage() . ' ' . $this->user->getLogin() . " [" . $this->user->getLevel() . "] " . $this->getInfolinkImage();
|
2020-08-27 12:17:02 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
2022-01-26 23:15:33 +00:00
|
|
|
|
* Возвращает строку с логином.
|
|
|
|
|
* Избавиться от этого! Оставлено для совместимости.
|
2020-08-27 12:17:02 +00:00
|
|
|
|
* @return string
|
|
|
|
|
*/
|
2022-01-26 23:15:33 +00:00
|
|
|
|
public function short(): string
|
2020-08-27 12:17:02 +00:00
|
|
|
|
{
|
2022-08-09 19:57:43 +00:00
|
|
|
|
return $this->user->getLogin();
|
2020-08-27 12:17:02 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Возвращает строку со склонностью, кланом, логином, уровнем, ссылкой на профиль, здоровьем.
|
|
|
|
|
* @return string
|
|
|
|
|
*/
|
2022-01-26 23:15:33 +00:00
|
|
|
|
public function battle(): string
|
2020-08-27 12:17:02 +00:00
|
|
|
|
{
|
2022-08-09 19:57:43 +00:00
|
|
|
|
return $this->full() . "<img src='i/herz.gif' alt='HP'> [" . $this->user->stats()->getHealth() . "/" . $this->user->stats()->getMaxHealth() . "]";
|
2020-08-27 12:31:35 +00:00
|
|
|
|
}
|
2022-12-16 23:20:43 +00:00
|
|
|
|
}
|