невидимка'; class Nick extends User { private function getInvisibilityStatus() { return self::$db->fetch('SELECT 1 FROM users_effects WHERE type = 1022 AND owner_id = ?', $this->id); } /** * Отображение иконки склонности. * @return string */ private function getAlignToNickname():?string { if ($this->align) { return sprintf('', $this->align); } else { return null; } } /** * Отображение иконки клана. * @return string */ private function getClanToNickname():?string { if ($this->clan) { return sprintf('', $this->clan); } else { return null; } } /** * Вызов класса из самого себя. Читать про обратное связывание и пытаться что-то понять. * @param $playerId * * @return Nick */ public static function id($playerId): Nick { return new self($playerId); } /** * Возвращает строку со склонностью, кланом, логином, уровнем, ссылкой на профиль. * * @param int $showInvisibility отображать логин даже если персонаж невидимка. * * @return string */ public function full($showInvisibility = 0):string { if (!$showInvisibility && $this->getInvisibilityStatus()) { return INVIS; } return $this->getAlignToNickname().$this->getClanToNickname().sprintf('%s [%s] ', $this->login, $this->level, $this->login); } /** * Возвращает строку с логином или невидимым статусом. * @param int $showInvisibility отображать логин даже если персонаж невидимка. * @return string */ public function short($showInvisibility = 0):string { if (!$showInvisibility && $this->getInvisibilityStatus()) { return INVIS; } else { return htmlspecialchars($this->login); } } /** * Возвращает строку со склонностью, кланом, логином, уровнем, ссылкой на профиль, здоровьем. * @return string */ public function battle():string { return $this->getAlign().$this->getClan().sprintf('%s [%s] HP _hp_/_maxhp_', $this->login, $this->level, $this->login); } /** * Возвращает строку с логином и здоровьем, выделяя строку определённым стилем. * @param $textstyle - Название стиля отображения логина персонажа (main.css) для цветового разделения команд. * * @return string */ public function battleShort($textstyle):string { if ($this->getInvisibilityStatus()) { return INVIS; } else { return sprintf('%s [_hp_/_maxhp_]', $textstyle, $this->login); } } }