Модуль:tablerole

Вернуться

Строка 1: Строка 1:
local p = {}
local p = {}
-- Задаем фиксированный порядок параметров
local predefinedOrder = {
    "Управление шаттлом",
    "Продвинутый атмос",
    "Химия",
    "Сборка ДАМ/Сингулярность/Тесла",
    "Постройка сложных объектов",
    "Робототехника",
    "Постройка приборов",
    "Исследования и разработка",
    "Хирургия",
    "Магия",
    "Медицинское оборудование",
    "Вирусология",
    "Фармакология",
    "Атмос",
    "Продвинутая ботаника",
    "Взлом",
    "Коктейли",
    "Готовка",
    "Базовая ботаника",
    "Базовое лечение",
    "Простые конструкции",
    "Работа с P.A.C.M.A.N"
}
-- Создаем карту для быстрого поиска индекса каждого параметра
local orderMap = {}
for index, name in ipairs(predefinedOrder) do
    orderMap[name] = index
end


function p.render(frame)
function p.render(frame)
Строка 26: Строка 58:
     end
     end
      
      
     -- Умная сортировка: если ключи числовые (например, 01, 2, 10),
     -- Сортировка по заданному порядкуту
    -- они сортируются как числа, а текстовые — по алфавиту
     table.sort(keys, function(a, b)  
     table.sort(keys, function(a, b)  
         local numA, numB = tonumber(a), tonumber(b)
         local posA = orderMap[a]
         if numA and numB then
        local posB = orderMap[b]
             return numA < numB
       
         elseif numA then
         if posA and posB then
             return true  -- Числа идут раньше строк
             return posA < posB
         elseif numB then
         elseif posA then
             return true  -- Параметры из вашего списка идут первыми
         elseif posB then
             return false
             return false
         else
         else
             return tostring(a) < tostring(b)
             return tostring(a) < tostring(b) -- Неизвестные параметры сортируются по алфавиту в конце
         end
         end
     end)
     end)