Edit the documentation or categories for this module.
local util_args = require('Module:ArgsUtil')
local util_cargo = require("Module:CargoUtil")
local util_html = require("Module:HtmlUtil")
local util_map = require('Module:MapUtil')
local util_table = require("Module:TableUtil")
local util_text = require("Module:TextUtil")
local util_vars = require("Module:VarsUtil")
local i18n = require("Module:I18nUtil")
local lang = mw.getLanguage('en')
local CompoundEntityAbstract = require('Module:CompoundEntityAbstract')
local p = CompoundEntityAbstract:extends()
local h = {}
p.Entity = require('Module:Role2')
function p:init(str, sep)
sep = sep or '%s*;%s*'
self:super('init', str, sep)
self.ingame = self:filterIngameRoles(true)
self.staff = self:filterIngameRoles(false)
self.hasIngame = #self.ingame > 0
self.hasStaff = #self.staff > 0
self.ingameOnly = not self.hasStaff
self.staffOnly = not self.hasStaff
end
function p:filterIngameRoles(isIngame)
local filteredRoles = {}
for _, role in ipairs(self) do
if (isIngame and role:isIngame()) or (not isIngame and not role:isIngame()) then
filteredRoles[#filteredRoles+1] = role
end
end
return filteredRoles
end
function p:ingameImages(sep, opts)
local tbl = {}
for _, obj in ipairs(self.ingame) do
tbl[#tbl+1] = obj:image(obj, opts)
end
return util_table.concat(tbl, sep or '')
end
function p:staffNames(length, sep, opts)
local tbl = {}
for _, obj in ipairs(self.staff) do
tbl[#tbl+1] = obj:name(obj, length, opts)
end
return util_table.concat(tbl, sep)
end
return p