Модуль:Prototypes/Механика/Исследование: различия между версиями
Pok (обсуждение | вклад) мНет описания правки |
Pok (обсуждение | вклад) мНет описания правки |
||
| Строка 1: | Строка 1: | ||
local p = {} | local p = {} | ||
-- Хранилище для кэша перевода | |||
local boardToMachineCache = {} | |||
local data -- глобальная переменная для данных | |||
-- Функция для перевода ID плат в ID машин | -- Функция для перевода ID плат в ID машин | ||
local function translateBoardIDToMachineID(boardID) | local function translateBoardIDToMachineID(boardID) | ||
-- | -- Проверяем кэш | ||
if boardToMachineCache[boardID] ~= nil then | |||
return boardToMachineCache[boardID] | |||
end | |||
-- Поиск платы по ID и извлечение её названия | -- Поиск платы по ID и извлечение её названия | ||
| Строка 21: | Строка 27: | ||
-- Список исключений | -- Список исключений | ||
local excludeWords = {"Unanchored", "Debug", "Admin | local excludeWords = {"Unanchored", "Debug", "Admin"} | ||
-- | -- Оптимизация: создаем таблицу для быстрого поиска по имени | ||
local machineID = nil | |||
for _, entity in pairs(data) do | for _, entity in pairs(data) do | ||
if entity.name == machineName then | if entity.name == machineName then | ||
| Строка 36: | Строка 43: | ||
if not shouldExclude then | if not shouldExclude then | ||
machineID = entity.id -- Сохраняем ID машины | |||
break | |||
end | end | ||
end | end | ||
end | end | ||
return | -- Кэшируем результат | ||
boardToMachineCache[boardID] = machineID | |||
return machineID -- Возвращаем ID машины или nil | |||
end | end | ||
| Строка 54: | Строка 64: | ||
local customRecipeUnlocks = frame.args.customRecipeUnlocks or nil -- Ручной ввод в список разблокируемых технологий | local customRecipeUnlocks = frame.args.customRecipeUnlocks or nil -- Ручной ввод в список разблокируемых технологий | ||
-- Загрузка данных из JSON | -- Загрузка данных из JSON один раз | ||
if not data then | |||
data = mw.text.jsonDecode(mw.title.new("User:IanComradeBot/research_prototypes.json"):getContent()) | |||
end | |||
local out = cssLink | local out = cssLink | ||