3502904656
Singleton в некоторых местах вместо решения #42. Новые шаги для решения #16 и #52. Closes #42. Closes #32. Closes #31.
82 lines
2.6 KiB
PHP
82 lines
2.6 KiB
PHP
<?php
|
||
|
||
namespace Battles;
|
||
|
||
use Battles\Database\Db;
|
||
|
||
/**
|
||
* Разные способы отображения строки с логином персонажа.
|
||
*/
|
||
const INVIS = '<i>невидимка</i>';
|
||
class Nick extends UserStats
|
||
{
|
||
private function isInvisible()
|
||
{
|
||
return Db::getInstance()->execute('SELECT count(*) FROM users_effects WHERE type = 1022 AND owner_id = ?', $this->id)->fetchColumn();
|
||
}
|
||
|
||
/**
|
||
* Отображение иконки склонности.
|
||
* @return string
|
||
*/
|
||
private function getAlignImage(): ?string
|
||
{
|
||
return $this->align ? "<img src='i/align_$this->align.gif' alt='Склонность'>" : null;
|
||
}
|
||
|
||
/**
|
||
* Отображение иконки клана.
|
||
* @return string
|
||
*/
|
||
private function getClanImage(): ?string
|
||
{
|
||
return $this->clan ? "<img src='i/clan/$this->clan.png' alt='Клан'>" : null;
|
||
}
|
||
|
||
private function getInfolinkImage(): string
|
||
{
|
||
return "<a href='inf.php?$this->login' target='_blank'><img src='i/inf.gif' alt='Ссылка на профиль'></a>";
|
||
}
|
||
|
||
/**
|
||
* Вызов класса из самого себя. Читать про обратное связывание и пытаться что-то понять.
|
||
* @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
|
||
{
|
||
return !$showInvisibility && $this->isInvisible() ? INVIS : $this->getAlignImage() . $this->getClanImage() . " <b>$this->login</b> [$this->level] " . $this->getInfolinkImage();
|
||
}
|
||
|
||
/**
|
||
* Возвращает строку с логином.
|
||
* Избавиться от этого! Оставлено для совместимости.
|
||
* @return string
|
||
*/
|
||
public function short(): string
|
||
{
|
||
return $this->login;
|
||
}
|
||
|
||
/**
|
||
* Возвращает строку со склонностью, кланом, логином, уровнем, ссылкой на профиль, здоровьем.
|
||
* @return string
|
||
*/
|
||
public function battle(): string
|
||
{
|
||
return $this->full() . "<img src='i/herz.gif' alt='HP'> [$this->health/$this->maxHealth]";
|
||
}
|
||
} |