Dead by Daylight Wiki
Advertisement
Dead by Daylight Wiki

local p = {}
local data = require("Module:Datatable")
local mathOps = require("Module:MathOps")
local utils = require("Module:Utils")
local prkz = require("Module:Datatable/Perks")
local perkImg = require("Module:PerkImage")
local str = require("Module:Strings")
local frame = mw.getCurrentFrame()


strings = {
	file = "Plik",
	altName = "Alias",
	gender = "Płeć",
	role = "Rola",
	nationality = "Narodowość",
	dlc  = "DLC",
	actor = "Aktor Głosowy",
	uknownActor = "Nieujawniony Aktor Głosowy", --unkown/undisclosed
	male = "Mężczyzna",
	female = "Kobieta",
	undefined = "Nieokreślona",
}

function p.getCountOfSurvivors()
	return utils.getCount("survivor")
end

function getSurvivorNameById(id) --not used
	for _, s in ipairs(survivors) do
		if s.id == id then return s.name end
	end
	return 0
end

function getSurvivorIdByName(name)
	for _, survivor in ipairs(survivors) do
		if survivor.name == name then
			return survivor.id
		end
	end
	
	return 0
end

function getSurvivorById(id)
	for _, survivor in ipairs(survivors) do
		if survivor.id == id then return survivor end
	end
	return nil
end

function p.resolveSurvivorCharTable()
	local survivorId = getSurvivorIdByName(mw.title.getCurrentTitle().text)
	local surv = utils.getCharacterById(survivorId, survivors)
	local result = ""
	
	if type(surv) ~= "table" then return surv end
	
	result = 
	'{| class = "infoboxtable"' .. nl ..
	ntl ..' class = "infoboxTitle" | ' .. nl ..
	'! class = "center bold" colspan = 2 | ' .. (surv.shortName or surv.name) .. nl ..
	ntl .. nl ..
	'! class = "center" colspan = 2 | [[' .. strings.file .. ':' .. resolveSurvPortraitImageFileName(surv) .. '.png|150px]]' .. nl ..
	ntl .. nl
	if surv.altName ~= nil then
		result = result .. '| class = "titleColumn" | ' .. strings.altName .. ' || class = "valueColumn" | ' .. surv.altName .. nl .. ntl .. nl
	end
	result = result ..
	'| class = "titleColumn" | ' .. strings.gender .. ' || class = "valueColumn" | ' .. utils.resolveGender(surv.gender) .. nl ..
	ntl .. nl ..
	'| class = "titleColumn" | ' .. strings.role .. ' || class = "valueColumn" | ' .. surv.role .. nl ..
	ntl .. nl ..
	'| class = "titleColumn" | ' .. strings.nationality .. ' || class = "valueColumn" | ' .. surv.nationality .. nl ..
	ntl .. nl
	if surv.dlc ~= nil then
		result = result .. '| class = "titleColumn" | ' .. strings.dlc .. ' || class = "valueColumn" | [[' .. getDlcById(surv.dlc).name .. ']] ' .. nl .. ntl .. nl
	end
	result = result ..
	'| class = "titleColumn" | ' .. strings.actor .. ' || class = "valueColumn" | ' .. (surv.actor or strings.uknownActor) .. nl ..
	'|}'
	
	
	mw.log(result)
	return result	

end
	

function p.resolveSurvivorsTable()
	local result = ""
	local name
	local fileName

	result = result .. "<div style=\"color: #fff;\">"
	for i, survivor in ipairs(survivors) do
		
		fileName = resolveSurvivorsPortraitFileNameById(survivor.id)
		
		result = result .. "<div style=\"display: inline-block; text-align:center; margin: 10px\">[[" .. survivor.name .. "]]"
		result = result .. "[[" .. strings.file .. ":" .. fileName .. ".png|center|frameless|link=" .. survivor.name .. "]]</div>"

	end
	result = result .. "</div>"

	return result
end

function p.resolveSurvivorsTableMainPage()
	local result = ""
	local name
	local fileName

	result = result .. "<div class=\"fpbox\" id=\"fpsurvivors\" style=\"text-align: center;\">"
	result = result .. "<div class=\"heading\">" .. "[[Ocalali]] [[" .. strings.file .. ":IconHelpLoading survivor.png|32px]]</div>"
	result = result .. "<div class=\"fplinks charSection\">"
	for i, survivor in ipairs(survivors) do
		name = survivor.shortName or survivor.name
		fileName = resolveSurvivorsPortraitFileNameById(survivor.id)
		
		result = result .. "<div class=\"fplink charMainPageBox plainlinks image\"><div class=\"box\"><div class=\"row\"><div class=\"cell\">"
		result = result .. "<div class=\"image\">[[" .. strings.file .. ":" .. fileName .. ".png|link=" .. name .. "]]</div>"
		result = result .. "<div class=\" charLink survivorLink link\">[[" .. name .. "]]</div></div></div></div></div>"
	end
	result = result .. "</div>"
	result = result .. "</div>"

	return result
end
	
function resolveSurvPortraitImageFileName(surv)
	local fileConst = "_charSelect_portrait"
	return "S" .. string.format("%02d", surv.id) .. fileConst
end

function resolveSurvivorsPortraitFileNameById(id)
	local fileConst = "_charPreview_portrait"
	local fileName
	
	fileName = getFileNameFromTableById(id)
	if not utils.isValidFileName(fileName) then --S{ID}_charPreview_portrait
		fileName = "S" .. string.format("%02d", id) .. fileConst
	end
	if not utils.isValidFileName(fileName) then --File not Found
		fileName = "UnknownSurvivor" .. fileConst
	end
	
	mw.log(fileName)
	return fileName
end

function getFileNameFromTableById(id)
	mw.log(id)
	for j, sImage in ipairs(survivorImages) do
		if sImage.id == id then
			return sImage.preview
		end
	end
	return ""
end

function getDlcById(id)
	for _, dlc in ipairs(dlcs) do
		if dlc.id == id then return dlc end
	end
end

function getSurvivorListWithPerks()
	local perkTable = {}
	for _,perk in ipairs(perks) do
		if perk.character ~= nil and perk.charType == 'S' then
			if perkTable[perk.character] == nil then
				perkTable[perk.character] = {}
			end
			perkTable[perk.character].id = perk.character
			perkTable[perk.character][#perkTable[perk.character]+1] = perk
		end
	end
	
	return perkTable
end

function p.resolveSurvivorsEntries()
	local perkTable = getSurvivorListWithPerks()
	local result = ""
	
	result = result .. '<div style="display: flex; flex-flow: row wrap; justify-content:center;">' .. nl
	
	for _, trio in ipairs(perkTable) do
		result = result .. '<div class = "entryTable">' .. nl ..
		'{| class = "wikitable"' .. nl
		
		survivor = getSurvivorById(trio.id)
		result = result .. '|+ ' .. survivor.name .. nl ..
		ntl .. nl ..
		'| rowspan = 3 | [[' .. strings.file .. ':' .. resolveSurvPortraitImageFileName(survivor) .. '.png|99px|link=' .. survivor.name .. ']]' .. nl
		utils.sortPerksByLevel(trio)
		for i, perk in ipairs(trio) do
			result = result .. '! [[' .. strings.file .. ':' .. perkImg.main(perk.name) .. '|33px]]' .. nl ..
			'! [[' .. perk.name .. ']]' .. nl ..
			'| ' .. utils.clr(perk.level, 6) .. nl
			if i < #trio then
				result = result .. ntl .. nl
			end
		end
		result = result .. '|}' .. nl ..
		'</div>' .. nl
	end
	
	result = result .. '</div>' .. nl
	
	mw.log(result)
	--mw.log(mw.dumpObject(perkTable))
	return result
end

return p
Advertisement