Fortnite Esports Wiki

Power Rankings of Brazil and Oceania at the moment are not updated to the last two competitive seasons, so the current positions of the players are not 100% accurate.

READ MORE

Fortnite Esports Wiki
Advertisement

Documentation for this module may be created at Module:PlayerTeamHistoryCompact/doc

local util_args = require('Module:ArgsUtil')
local util_cargo = require("Module:CargoUtil")
local util_esports = require("Module:EsportsUtil")
local util_html = require("Module:HtmlUtil")
local util_map = require("Module:MapUtil")
local util_math = require("Module:MathUtil")
local util_news = require("Module:NewsUtil")
local util_source = require("Module:SourceUtil")
local util_table = require("Module:TableUtil")
local util_text = require("Module:TextUtil")
local util_time = require("Module:TimeUtil")
local util_timedelta = require("Module:TimedeltaUtil")
local util_vars = require("Module:VarsUtil")
local i18n = require('Module:i18nUtil')
local lang = mw.getLanguage('en')

local PTH = require('Module:PlayerTeamHistoryEmbeddedAbstract'):extends()

PTH.CargoStoreTableName = 'TenuresUnbroken'

local h = {}

local p = {}
function p.main(frame)
	local args = util_args.merge()
	return p._main(args)
end

function p._main(args)
	return PTH('PlayerTeamHistory'):run(args)
end

function PTH:init(name)
	self:super('init', name)
	
	util_table.mergeArrays(
		self.PRELOADS_TO_IGNORE,
		{
			-- insignificant team changes
			'to_main_also_stay',
			'loan_return',
			
			-- not sure why this next one was ignored...?
			-- 'loan_end_and_join',
		}
	)

	-- because we want to know current status on teams, we need to
	-- retrieve information about players' statuses/roles/etc changing.
	-- this is effectively additional ancillary data
	-- otherwise we'd just ignore completely, as opposed to ignoring only the leave parts
	util_table.mergeArrays(
		self.PRELOADS_TO_IGNORE.leave, {
			-- role changes
			'confirm_role_swap',
			'gcd_to_sub',
			'role_swap',
			'gcd_role_swap',
			-- modifier changes
			'sub_to_trainee',
			'to_active',
			'to_inactive',
			'to_starting',
			'to_sub',
			'to_trainee',
			-- insignificant team changes
			'loaned_to',
			'team_rename_same_page',
			'draft_pick_signed',
			'loan_end_and_join',
		}
	)
	
end

function PTH:getKey(row)
	return row.TeamPage or row.Team
end

function PTH:doWeNeedANewLine(changesByLine, row, index)
	if not index then return true end
	if not row.TeamLeave then
		-- if this is a join, we want to make a new row iff we have a leave
		-- in the most recent row in the index
		local currentLineNumber = self:getMostRecentLineNumberFromIndex(index)
		return changesByLine[currentLineNumber].TeamLeave
	end
	return not index
end

function PTH:addNewTeamToExistingLine(line, row)
	-- in the "normal" version, it's not possible to need to do this because
	-- the key encodes role and role modifier. but in this version we don't record that
	-- so here we'll make sure that the key information is all accurate for current
	-- 
	-- this part is only needed for lines that the player is currently on but
	-- since we have no way to determine which lines those are until we're done,
	-- we'll just do it for everything
	--
	-- team is needed here because TeamPage might group different teams together
	if line.TeamLeave then return end
	util_table.push(line.RosterChangeIds, row.RosterChangeId)
	
	-- remember this so we don't have to modify row at all during this operation
	-- since we'll overwrite the copy in line if we do the merge
	local rosterChangeIds = line.RosterChangeIds
	
	if row.TeamLeave then
		util_table.merge(line, row)
		line.RosterChangeIds = rosterChangeIds
		return
	end
	for _, v in ipairs({ 'Role', 'RolesString', 'RoleArgs', 'Status', 'Team', 'RoleModifier', 'Roles', 'RolesIngame', 'RolesStaff' }) do
		line[v .. 'Join'] = row[v .. 'Join']
	end
end

return p
Advertisement