battles/classes/Battles/Nick.php
Igor Barkov (iwork) 3502904656 Рефакторинг, очистка, работа над ошибками, связанными с базой, отказ от глобальной переменной $user во многих файлах.
Singleton в некоторых местах вместо решения #42.
Новые шаги для решения #16 и #52.
Closes #42.
Closes #32.
Closes #31.
2022-01-27 01:15:33 +02:00

82 lines
2.6 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?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]";
}
}