Модуль:Prototypes/Механика/Исследование: различия между версиями
Pok (обсуждение | вклад) мНет описания правки |
Pok (обсуждение | вклад) Нет описания правки |
||
| Строка 1: | Строка 1: | ||
local p = {} | local p = {} | ||
local boardIndex = {} -- Индекс по ID плат | local boardIndex = {} -- Индекс по ID плат | ||
local machineIndex = {} -- Индекс по имени машин | local machineIndex = {} -- Индекс по имени машин | ||
| Строка 8: | Строка 5: | ||
-- Функция для загрузки данных плат из JSON-файла и создания индексов | -- Функция для загрузки данных плат из JSON-файла и создания индексов | ||
local function loadData() | local function loadData() | ||
local data = mw.text.jsonDecode(mw.title.new("Участник:IanComradeBot/entity_prototypes.json"):getContent()) | |||
-- Создание индекса плат по ID и машин по имени | |||
for id, entity in pairs(data) do | |||
boardIndex[id] = entity | |||
-- Индексируем только машинные или консольные платы | |||
if entity.name and (entity.name:find("%(машинная плата%)") or entity.name:find("%(консольная плата%)")) then | |||
local machineName = entity.name:gsub(" %(машинная плата%)", ""):gsub(" %(консольная плата%)", "") | |||
machineIndex[machineName] = entity.id | |||
end | end | ||
end | end | ||
return | return data | ||
end | end | ||
-- Функция для загрузки данных исследований из JSON-файла | -- Функция для загрузки данных исследований из JSON-файла | ||
local function loadResearchData() | local function loadResearchData() | ||
return mw.text.jsonDecode(mw.title.new("User:IanComradeBot/research_prototypes.json"):getContent()) | |||
end | end | ||
-- Функция для перевода ID плат в ID машин с | -- Функция для перевода ID плат в ID машин с использованием индексов | ||
local function translateBoardIDToMachineID(boardID) | local function translateBoardIDToMachineID(boardID) | ||
-- Используем индекс для быстрого поиска платы | -- Используем индекс для быстрого поиска платы | ||
local board = boardIndex[boardID] | local board = boardIndex[boardID] | ||
| Строка 46: | Строка 34: | ||
-- Проверка на машинные или консольные платы | -- Проверка на машинные или консольные платы | ||
local machineName = board.name:gsub(" %(машинная плата%)", ""):gsub(" %(консольная плата%)", "") | local machineName = board.name:gsub(" %(машинная плата%)", ""):gsub(" %(консольная плата%)", "") | ||
return machineIndex[machineName] | |||
end | end | ||
| Строка 72: | Строка 56: | ||
end | end | ||
-- Загружаем данные исследований | -- Загружаем данные исследований | ||
local data = loadResearchData() | local data = loadResearchData() | ||