<?php

namespace App\Support;

class WowData
{
    /**
     * @return array<int, string>
     */
    public static function securityLevels(): array
    {
        return [
            0 => 'Игрок',
            1 => 'Модератор',
            2 => 'Гейммастер',
            3 => 'Администратор',
        ];
    }

    public static function securityLevelName(int $level): string
    {
        return self::securityLevels()[$level] ?? 'Неизвестно';
    }

    public static function raceName(int $race): string
    {
        return [
            1 => 'Человек',
            2 => 'Орк',
            3 => 'Дворф',
            4 => 'Ночной эльф',
            5 => 'Нежить',
            6 => 'Таурен',
            7 => 'Гном',
            8 => 'Тролль',
            10 => 'Эльф крови',
            11 => 'Дреней',
        ][$race] ?? 'Неизвестно';
    }

    public static function className(int $class): string
    {
        return [
            1 => 'Воин',
            2 => 'Паладин',
            3 => 'Охотник',
            4 => 'Разбойник',
            5 => 'Жрец',
            6 => 'Рыцарь смерти',
            7 => 'Шаман',
            8 => 'Маг',
            9 => 'Чернокнижник',
            11 => 'Друид',
        ][$class] ?? 'Неизвестно';
    }

    public static function genderName(int $gender): string
    {
        return [
            0 => 'Мужской',
            1 => 'Женский',
        ][$gender] ?? 'Неизвестно';
    }

    public static function formatMoney(int $copper): string
    {
        $gold = intdiv($copper, 10000);
        $silver = intdiv($copper % 10000, 100);
        $bronze = $copper % 100;

        return sprintf('%dз %dс %dм', $gold, $silver, $bronze);
    }

    public static function formatPlayedTime(int $seconds): string
    {
        $days = intdiv($seconds, 86400);
        $hours = intdiv($seconds % 86400, 3600);
        $minutes = intdiv($seconds % 3600, 60);

        if ($days > 0) {
            return sprintf('%dд %dч', $days, $hours);
        }

        if ($hours > 0) {
            return sprintf('%dч %dм', $hours, $minutes);
        }

        return sprintf('%dм', $minutes);
    }
}
