2020-08-27 12:17:02 +00:00
|
|
|
|
<?php
|
2020-10-28 20:21:08 +00:00
|
|
|
|
namespace Battles;
|
2020-08-27 12:17:02 +00:00
|
|
|
|
/**
|
|
|
|
|
* Разные способы отображения строки с логином персонажа.
|
|
|
|
|
*/
|
2021-01-28 21:05:34 +00:00
|
|
|
|
const INVIS = '<i>невидимка</i>';
|
2020-08-27 12:17:02 +00:00
|
|
|
|
class Nick extends User
|
|
|
|
|
{
|
|
|
|
|
private function getInvisibilityStatus()
|
|
|
|
|
{
|
2021-01-28 21:05:34 +00:00
|
|
|
|
return self::$db->fetch('SELECT 1 FROM users_effects WHERE type = 1022 AND owner_id = ?', $this->id);
|
2020-08-27 12:17:02 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Отображение иконки склонности.
|
|
|
|
|
* @return string
|
|
|
|
|
*/
|
2021-02-01 16:42:52 +00:00
|
|
|
|
private function getAlignToNickname():?string
|
2020-08-27 12:17:02 +00:00
|
|
|
|
{
|
2021-02-01 16:42:52 +00:00
|
|
|
|
if ($this->align) {
|
2020-08-27 12:17:02 +00:00
|
|
|
|
return sprintf('<img src="i/align_%s.gif">', $this->align);
|
|
|
|
|
} else {
|
2021-01-28 21:05:34 +00:00
|
|
|
|
return null;
|
2020-08-27 12:17:02 +00:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Отображение иконки клана.
|
|
|
|
|
* @return string
|
|
|
|
|
*/
|
2021-02-01 16:42:52 +00:00
|
|
|
|
private function getClanToNickname():?string
|
2020-08-27 12:17:02 +00:00
|
|
|
|
{
|
2021-02-01 16:42:52 +00:00
|
|
|
|
if ($this->clan) {
|
2020-09-30 22:12:53 +00:00
|
|
|
|
return sprintf('<img src="i/clan/%s.png">', $this->clan);
|
2020-08-27 12:17:02 +00:00
|
|
|
|
} else {
|
2021-01-28 21:05:34 +00:00
|
|
|
|
return null;
|
2020-08-27 12:17:02 +00:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
2020-10-30 00:33:02 +00:00
|
|
|
|
* Вызов класса из самого себя. Читать про обратное связывание и пытаться что-то понять.
|
2020-08-27 12:17:02 +00:00
|
|
|
|
* @param $playerId
|
|
|
|
|
*
|
|
|
|
|
* @return Nick
|
|
|
|
|
*/
|
2021-01-28 21:05:34 +00:00
|
|
|
|
public static function id($playerId): Nick
|
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
|
|
|
|
|
*/
|
2021-01-27 13:53:39 +00:00
|
|
|
|
public function full($showInvisibility = 0):string
|
2020-08-27 12:17:02 +00:00
|
|
|
|
{
|
|
|
|
|
if ($showInvisibility && $this->getInvisibilityStatus()) {
|
2021-01-28 21:05:34 +00:00
|
|
|
|
return INVIS;
|
2020-08-27 12:17:02 +00:00
|
|
|
|
}
|
2021-02-01 16:42:52 +00:00
|
|
|
|
return $this->getAlignToNickname().$this->getClanToNickname().sprintf('<b>%s</b> [%s] <a href="inf.php?%s" target="_blank"><img src="i/inf.gif" style="width:12px;height:11px"></a>', $this->login, $this->level, $this->login);
|
2020-08-27 12:17:02 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Возвращает строку с логином или невидимым статусом.
|
2021-01-27 13:53:39 +00:00
|
|
|
|
* @param int $showInvisibility отображать логин даже если персонаж невидимка.
|
2020-08-27 12:17:02 +00:00
|
|
|
|
* @return string
|
|
|
|
|
*/
|
2021-01-27 13:53:39 +00:00
|
|
|
|
public function short($showInvisibility = 0):string
|
2020-08-27 12:17:02 +00:00
|
|
|
|
{
|
2021-02-01 01:40:40 +00:00
|
|
|
|
if (!$showInvisibility && $this->getInvisibilityStatus()) {
|
2021-01-28 21:05:34 +00:00
|
|
|
|
return INVIS;
|
2020-08-27 12:17:02 +00:00
|
|
|
|
} else {
|
|
|
|
|
return htmlspecialchars($this->login);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Возвращает строку со склонностью, кланом, логином, уровнем, ссылкой на профиль, здоровьем.
|
|
|
|
|
* @return string
|
|
|
|
|
*/
|
2021-01-27 13:53:39 +00:00
|
|
|
|
public function battle():string
|
2020-08-27 12:17:02 +00:00
|
|
|
|
{
|
|
|
|
|
return $this->getAlign().$this->getClan().sprintf('<b>%s</b> [%s] <a href="inf.php?%s" target="_blank"><img src="i/inf.gif" style="width:12px;height:11px"></a> <img src="i/herz.gif" alt="HP"> _hp_/_maxhp_', $this->login, $this->level, $this->login);
|
|
|
|
|
}
|
2020-08-27 12:31:35 +00:00
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Возвращает строку с логином и здоровьем, выделяя строку определённым стилем.
|
|
|
|
|
* @param $textstyle - Название стиля отображения логина персонажа (main.css) для цветового разделения команд.
|
|
|
|
|
*
|
|
|
|
|
* @return string
|
|
|
|
|
*/
|
2021-01-27 13:53:39 +00:00
|
|
|
|
public function battleShort($textstyle):string
|
2020-08-27 12:31:35 +00:00
|
|
|
|
{
|
|
|
|
|
if ($this->getInvisibilityStatus()) {
|
2021-01-28 21:05:34 +00:00
|
|
|
|
return INVIS;
|
2020-08-27 12:31:35 +00:00
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
return sprintf('<span style="%s">%s</span> [_hp_/_maxhp_]', $textstyle, $this->login);
|
|
|
|
|
}
|
|
|
|
|
}
|
2020-08-27 12:17:02 +00:00
|
|
|
|
}
|