battles/classes/Battles/Nick.php

105 lines
3.5 KiB
PHP
Raw Normal View History

<?php
namespace Battles;
/**
* Разные способы отображения строки с логином персонажа.
*/
class Nick extends User
{
private function getInvisibilityStatus()
{
return db::c()->query('SELECT 1 FROM users_effects WHERE type = 1022 AND owner_id = ?i', $this->id);
}
/**
* Отображение иконки склонности.
* @return string
*/
private function getAlign()
{
if (isset($this->align)) {
return sprintf('<img src="i/align_%s.gif">', $this->align);
} else {
return '';
}
}
/**
* Отображение иконки клана.
* @return string
*/
private function getClan()
{
if (isset($this->clan)) {
return sprintf('<img src="i/clan/%s.png">', $this->clan);
} else {
return '';
}
}
/**
* Вызов класса из самого себя. Читать про обратное связывание и пытаться что-то понять.
* @param $playerId
*
* @return Nick
*/
public static function id($playerId)
{
return new self($playerId);
}
/**
* Возвращает строку со склонностью, кланом, логином, уровнем, ссылкой на профиль.
*
* @param int $showInvisibility - По умолчанию 0. Выбрать 1, если надо отображать невидимый статус.
*
* @return string
* @throws \Krugozor\Database\Mysql\Exception
*/
public function full($showInvisibility = 0)
{
if ($showInvisibility && $this->getInvisibilityStatus()) {
return '<i>невидимка</i>';
}
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>', $this->login, $this->level, $this->login);
}
/**
* Возвращает строку с логином или невидимым статусом.
* @return string
* @throws \Krugozor\Database\Mysql\Exception
*/
public function short()
{
if ($this->getInvisibilityStatus()) {
return '<i>невидимка</i>';
} else {
return htmlspecialchars($this->login);
}
}
/**
* Возвращает строку со склонностью, кланом, логином, уровнем, ссылкой на профиль, здоровьем.
* @return string
*/
public function battle()
{
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);
}
/**
* Возвращает строку с логином и здоровьем, выделяя строку определённым стилем.
* @param $textstyle - Название стиля отображения логина персонажа (main.css) для цветового разделения команд.
*
* @return string
*/
public function battleShort($textstyle)
{
if ($this->getInvisibilityStatus()) {
return '<i>невидимка</i>';
}
else {
return sprintf('<span style="%s">%s</span> [_hp_/_maxhp_]', $textstyle, $this->login);
}
}
}