Модуль:Entity Sprite/all: различия между версиями
Pok (обсуждение | вклад) Нет описания правки |
Pok (обсуждение | вклад) Нет описания правки |
||
| (не показана 1 промежуточная версия этого же участника) | |||
| Строка 154: | Строка 154: | ||
local parents = getParents(entry) | local parents = getParents(entry) | ||
if whitelistSet | if whitelistSet and not hasAnyParent(parents, whitelistSet) then | ||
return false | |||
end | end | ||
| Строка 181: | Строка 179: | ||
end | end | ||
local function | local function buildFileLink(id, project) | ||
local | local prefix = getPrefix(id, project) | ||
return "[[:Файл:" .. prefix .. id .. ".png]]" | |||
end | |||
local function buildSpriteUrl(baseUrl, spritePath) | |||
return baseUrl .. spritePath | |||
end | |||
local function buildSpritePathLink(baseUrl, spritePath) | |||
local url = buildSpriteUrl(baseUrl, spritePath) | |||
return "[" .. url .. " " .. spritePath .. "]" | |||
return spritePath | |||
end | end | ||
local function | local function buildStateLink(baseUrl, spritePath, state) | ||
local | local url = buildSpriteUrl(baseUrl, spritePath) .. "/" .. state .. ".png" | ||
return "[" .. url .. " " .. state .. "]" | |||
end | end | ||
local function | local function buildSpriteStateLinks(baseUrl, states) | ||
if not states or #states == 0 then | |||
return "" | |||
if not | |||
return | |||
end | end | ||
local links = {} | |||
if | for _, item in ipairs(states) do | ||
if item.sprite and item.state then | |||
table.insert(links, buildStateLink(baseUrl, item.sprite, item.state)) | |||
end | |||
end | end | ||
return | return table.concat(links, ", ") | ||
end | end | ||
local function | local function buildRepeatSpriteValue(baseUrl, entry) | ||
local spritePath | local spritePath = getSpritePath(entry) | ||
if not spritePath then | if not spritePath then | ||
return | return "" | ||
end | end | ||
local pathLink = | local pathLink = buildSpritePathLink(baseUrl, spritePath) | ||
local states = getSpriteStates(entry) | |||
if | if states and #states > 0 and states[1].state and states[1].state ~= "" then | ||
return pathLink .. " (" .. buildStateLink(baseUrl, spritePath, states[1].state) .. ")" | |||
return pathLink .. " (" .. | |||
end | end | ||
| Строка 267: | Строка 247: | ||
for _, obj in ipairs(group) do | for _, obj in ipairs(group) do | ||
table.insert(idLinks, buildFileLink(obj.id, project)) | |||
table.insert(idLinks, | |||
end | end | ||
| Строка 276: | Строка 253: | ||
local firstEntry = group[1].entry | local firstEntry = group[1].entry | ||
local prefix = getPrefix(firstId, project) | local prefix = getPrefix(firstId, project) | ||
local spriteValue = | local spriteValue = buildRepeatSpriteValue(baseUrl, firstEntry) | ||
table.insert(result, mw.getCurrentFrame():preprocess( | table.insert(result, mw.getCurrentFrame():preprocess( | ||
"{{Entity Sprite/Repeat| | "{{Entity Sprite/Repeat|файлы=" .. table.concat(idLinks, " ") .. | ||
"|перенаправление=" .. prefix .. firstId .. | "|перенаправление=" .. prefix .. firstId .. | ||
"|id=" .. firstId .. | "|id=" .. firstId .. | ||
| Строка 298: | Строка 275: | ||
local prefix = getPrefix(id, project) | local prefix = getPrefix(id, project) | ||
local states = getSpriteStates(entry) | local states = getSpriteStates(entry) | ||
local stateStr = | local stateStr = buildSpriteStateLinks(baseUrl, states) | ||
return mw.getCurrentFrame():preprocess( | return mw.getCurrentFrame():preprocess( | ||
"{{Entity Sprite/Image|файл=" .. prefix .. id .. | "{{Entity Sprite/Image|файл=" .. prefix .. id .. | ||
"|id=" .. id .. | "|id=" .. id .. | ||
"|путь=" .. baseUrl | "|путь=" .. buildSpriteUrl(baseUrl, spritePath) .. | ||
"|state=" .. stateStr .. | "|state=" .. stateStr .. | ||
"}}" | "}}" | ||
| Строка 350: | Строка 315: | ||
if action == "repeat" then | if action == "repeat" then | ||
return generateRepeatTemplate(filteredData, project, baseUrl) | return generateRepeatTemplate(filteredData, project, baseUrl) | ||
elseif action == "image" then | elseif action == "image" then | ||
local result = {} | local result = {} | ||