Модуль:Prototypes/Механика/Исследование: различия между версиями
Pok (обсуждение | вклад) мНет описания правки |
Pok (обсуждение | вклад) мНет описания правки |
||
| Строка 1: | Строка 1: | ||
local p = {} | local p = {} | ||
-- Глобальная переменная для данных | |||
local data | |||
-- Хранилище для кэша перевода | -- Хранилище для кэша перевода | ||
local boardToMachineCache = {} | local boardToMachineCache = {} | ||
-- Функция для перевода 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("%(машинная плата%)") | 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 | ||