Module:EnemyNav: Difference between revisions

From IdleOn MMO Wiki
mNo edit summary
mNo edit summary
Line 1: Line 1:
local p = {}
local p = {}
local Lists = mw.loadData("Module:EnemyNav/data")  
local Lists = mw.loadData("Module:EnemyNav/data")  
local function formatNav(prevEnemy, nextEnemy)
-- construct output.
local navBar = [[<div class='EnemyNav'><div class='EnemyNavLeft'>%s</div><div class='EnemyNavCenter'>Enemies</div><div class='EnemyNavRight'>%s</div></div>]]
local enemySect = "[[File:%s_icon.png|16px|link=%s]] [[%s]]"
local pFormat = prevEnemy ~= '' and string.format("[[File:ArrowLeft.png|15px|link=%s]]" .. enemySect, prevEnemy, prevEnemy, prevEnemy, prevEnemy) or ''
local nFormat = nextEnemy ~= '' and string.format(enemySect .. "[[File:ArrowRight.png|15px|link=%s]]", nextEnemy, nextEnemy, nextEnemy, nextEnemy) or ''
return string.format(navBar, pFormat, nFormat)
end


function p.BuildNav( frame )
function p.BuildNav( frame )
Line 8: Line 18:
-- branch data load based on type
-- branch data load based on type
if enemyType == 'Normal' then navList = Lists.enemyList  
if enemyType == 'Normal' then  
elseif enemyType == 'Boss' then navList = Lists.bossList  
navList = Lists.enemyList  
elseif enemyType == 'Event' then navList = Lists.eventList  
elseif enemyType == 'Boss' then  
elseif enemyType == 'Dungeon' then navList = Lists.dungeonList  
navList = Lists.bossList  
elseif enemyType == 'Rift' then navList = Lists.riftList  
elseif enemyType == 'Event' then  
else return "This type doesn't have an associate Navigation list." end
navList = Lists.eventList  
elseif enemyType == 'Dungeon' then  
navList = Lists.dungeonList  
elseif enemyType == 'Rift' then  
navList = Lists.riftList  
else  
return "This type doesn't have an associate Navigation list."  
end
mw.ext.VariablesLua.vardefine( test, navList )
mw.ext.VariablesLua.vardefine( test, navList )


Line 29: Line 46:
local nextEnemy = navList[i+1] ~= nil and navList[i+1] or ''
local nextEnemy = navList[i+1] ~= nil and navList[i+1] or ''
-- construct output.
 
local navBar = [[<div class='EnemyNav'><div class='EnemyNavLeft'>%s</div><div class='EnemyNavCenter'>Enemies</div><div class='EnemyNavRight'>%s</div></div>]]
return formatNav(prevEnemy, nextEnemy)
local enemySect = "[[File:%s_icon.png|16px|link=%s]] [[%s]]"
local pFormat = prevEnemy ~= '' and string.format("[[File:ArrowLeft.png|15px|link=%s]]" .. enemySect, prevEnemy, prevEnemy, prevEnemy, prevEnemy) or ''
local nFormat = nextEnemy ~= '' and string.format(enemySect .. "[[File:ArrowRight.png|15px|link=%s]]", nextEnemy, nextEnemy, nextEnemy, nextEnemy) or ''
return string.format(navBar, prevEnemy, nextEnemy)
end
end


local p
local p

Revision as of 15:28, 3 April 2024

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

local p = {}
local Lists = mw.loadData("Module:EnemyNav/data") 

local function formatNav(prevEnemy, nextEnemy)
	-- construct output.
	local navBar = [[<div class='EnemyNav'><div class='EnemyNavLeft'>%s</div><div class='EnemyNavCenter'>Enemies</div><div class='EnemyNavRight'>%s</div></div>]]
	local enemySect = "[[File:%s_icon.png|16px|link=%s]] [[%s]]"
	local pFormat = prevEnemy ~= '' and string.format("[[File:ArrowLeft.png|15px|link=%s]]" .. enemySect, prevEnemy, prevEnemy, prevEnemy, prevEnemy) or ''
	local nFormat = nextEnemy ~= '' and string.format(enemySect .. "[[File:ArrowRight.png|15px|link=%s]]", nextEnemy, nextEnemy, nextEnemy, nextEnemy) or ''
	
	return string.format(navBar, pFormat, nFormat)
end

function p.BuildNav( frame )
	local enemyType = frame.args.Type
	local midEnemy = frame.args.Enemy -- Pagename
	local navList = {}
	
	-- branch data load based on type
	if enemyType == 'Normal' then 
		navList = Lists.enemyList 
	elseif enemyType == 'Boss' then 
		navList = Lists.bossList 
	elseif enemyType == 'Event' then 
		navList = Lists.eventList 
	elseif enemyType == 'Dungeon' then 
		navList = Lists.dungeonList 
	elseif enemyType == 'Rift' then 
		navList = Lists.riftList 
	else 
		return "This type doesn't have an associate Navigation list." 
	end
	mw.ext.VariablesLua.vardefine( test, navList )

	-- Iterate until self found.
	local i
	for i=1, #navList do
		if navList[i] == midEnemy then
			break -- Index foound, break loop.
		end
		return "This enemy is not in the " .. enemyType .. " list."
	end
	
	-- Using self-index get previous and next enemies, if they exist.
	local prevEnemy = navList[i-1] ~= nil and navList[i-1] or ''
	local nextEnemy = navList[i+1] ~= nil and navList[i+1] or ''
	

	return formatNav(prevEnemy, nextEnemy)
end

local p