|
|
| (не показано 335 промежуточных версий этого же участника) |
| Строка 1: |
Строка 1: |
| local p = {}
| |
|
| |
|
| local cachedData = nil
| |
|
| |
| local function loadData(filePath)
| |
| if cachedData then
| |
| return cachedData
| |
| end
| |
| local page = mw.title.new(filePath)
| |
| local content = page and page:getContent()
| |
| cachedData = content and mw.text.jsonDecode(content) or nil
| |
| return cachedData
| |
| end
| |
|
| |
| local function getSpritePath(entry)
| |
| return entry.Sprite and entry.Sprite.sprite or (entry.Icon and entry.Icon.sprite)
| |
| end
| |
|
| |
| local indexById = nil
| |
|
| |
| local function buildIndex(data)
| |
| local index = {}
| |
| for _, entry in ipairs(data) do
| |
| if entry.id then
| |
| index[entry.id] = entry
| |
| end
| |
| end
| |
| return index
| |
| end
| |
|
| |
| function p.main(frame)
| |
| local param = frame.args[1]
| |
| local secondaryParam = frame.args[2]
| |
|
| |
| if not cachedData then
| |
| cachedData = loadData('User:IanComradeBot/prototypes/entity sprite.json')
| |
| if cachedData then
| |
| indexById = buildIndex(cachedData)
| |
| end
| |
| end
| |
|
| |
| if not cachedData then
| |
| return 'Ошибка: Невозможно загрузить данные из JSON.'
| |
| end
| |
|
| |
| if param == "image" and secondaryParam then
| |
| local entry = indexById and indexById[secondaryParam]
| |
| return entry and getSpritePath(entry) or "Ошибка: ID не найден."
| |
| end
| |
| end
| |
|
| |
| return p
| |