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

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


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


-- Функция для перевода ID плат в ID машин
-- Функция для перевода ID плат в ID машин
Строка 10: Строка 12:
if boardToMachineCache[boardID] ~= nil then
if boardToMachineCache[boardID] ~= nil then
return boardToMachineCache[boardID]
return boardToMachineCache[boardID]
end
-- Если данные еще не загружены, загружаем их
if not data then
data = mw.text.jsonDecode(mw.title.new("Участник:IanComradeBot/entity_prototypes.json"):getContent())
end
end


Строка 19: Строка 26:


-- Проверка наличия "(машинная плата)" или "(консольная плата)" в имени
-- Проверка наличия "(машинная плата)" или "(консольная плата)" в имени
if not board.name:find("%(машинная плата%)") and not board.name:find("%(консольная плата%)") then
if not (board.name:find("%(машинная плата%)") or board.name:find("%(консольная плата%)")) then
return nil -- Если в имени нет одной из фраз, возвращаем nil
return nil -- Если в имени нет одной из фраз, возвращаем nil
end
end


-- Удаление "(машинная плата)" и "(консольная плата)" из имени платы
-- Удаление "(машинная плата)" и "(консольная плата)" из имени платы
local machineName = board.name:gsub(" %(машинная плата%)", ""):gsub(" %(консольная плата%)", "")
local machineName = board.name:gsub(" %(машинная плата%)", ""):gsub(" %(консольная плата%)", ""):trim()


-- Список исключений
-- Список исключений
Строка 49: Строка 56:
end
end


-- Кэшируем результат
-- Кэшируем результат (nil, если не найдено)
boardToMachineCache[boardID] = machineID
boardToMachineCache[boardID] = machineID
return machineID -- Возвращаем ID машины или nil
return machineID -- Возвращаем ID машины или nil