Модуль:Prototypes/Механика/Исследование: различия между версиями

мНет описания правки
мНет описания правки
Строка 1: Строка 1:
local p = {}
local p = {}
-- Хранилище для кэша перевода
local boardToMachineCache = {}
local data -- глобальная переменная для данных


-- Функция для перевода ID плат в ID машин
-- Функция для перевода ID плат в ID машин
local function translateBoardIDToMachineID(boardID)
local function translateBoardIDToMachineID(boardID)
-- Загрузка данных из JSON
-- Проверяем кэш
local data = mw.text.jsonDecode(mw.title.new("Участник:IanComradeBot/entity_prototypes.json"):getContent())
if boardToMachineCache[boardID] ~= nil then
return boardToMachineCache[boardID]
end


-- Поиск платы по ID и извлечение её названия
-- Поиск платы по ID и извлечение её названия
Строка 21: Строка 27:


-- Список исключений
-- Список исключений
local excludeWords = {"Unanchored", "Debug", "Admin", "Enabled"}
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
return entity.id -- Возвращаем ID машины
machineID = entity.id -- Сохраняем ID машины
break
end
end
end
end
end
end


return nil -- Если машина не найдена, возвращаем nil
-- Кэшируем результат
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 один раз
local data = mw.text.jsonDecode(mw.title.new("User:IanComradeBot/research_prototypes.json"):getContent())
if not data then
data = mw.text.jsonDecode(mw.title.new("User:IanComradeBot/research_prototypes.json"):getContent())
end


local out = cssLink
local out = cssLink