模块:Data

来自滚动的天空Wiki
跳到导航 跳到搜索

本模块用来获取关卡信息。许多模板例如{{关卡信息}}、{{关卡列表}}、{{关卡导航}}都依赖于此模板。

关卡信息[编辑]

关卡信息储存在模块:Data/Level中。

次序获取功能[编辑]

次序获取功能是该模块的p.getName函数,它能够通过参数作为名称,来返回这一关的域名(number形式)。该函数可以将关卡的中文名、繁体中文名或者罗马数字名称(即在8比特出现之前的前10关的名称)来返回关卡次序。不能通过{{#invoke:}}调用。如果找不到次序,则直接返回原来的文本。

>print(p.getName("山丘"))
1
>print(p.getName("IX"))
电子迷宫
>print(p.getName("Hello world"))
Hello world

翻译功能[编辑]

翻译功能能够自动识别参数的中文,并转化为英文作为字符串形式的域名,该函数的名称为p.translate,可以通过{{#invoke:}}调用。

>print(p.translate("钻石"))
diamond

这样,使用获取关卡信息的函数时就可以使用中文了。不过翻译列表是特定的。

在模块中,可以使用p.translate(原文)来返回文字。直接使用p.translate()而不带参数将会返回整个翻译列表。


local p={}

p.data={}
p.data.level=mw.loadData("模块:Data/Level")

--==关卡次序获取功能,能够利用迭代将关卡名称等信息转换为p.data.level中的次序==--
function p.getName(x)
	for k,v in pairs(p.data.level) do
		if v.name==x then
			return k
		elseif v.nameT==x then
			return k
		end
	end
	--如果无法匹配,则直接还原输入的值
	return x
end

--==翻译功能,能够自动识别参数中的中文并翻译成可行的英文参数==--
function p.translate(x)
	local translate={
		-- 翻译列表
		name={"名称";"名稱";"名字"};
		en={'英文名'},
		order={"编号";"編號"};
		diamond={"钻石";"鑽石"};
		star={"星";"星星"};
		locked={"锁定";"鎖定";"需要解锁";"需要解鎖"};
		crown={"皇冠"};
		roman={"罗马";"罗马数字";"羅馬";"羅馬數字"};
		coming={"即将到来";"即將到來"};
		present={"礼物";"禮物"};
		version={"版本";"最早版本"};
	}
	
	if type(x) == 'table' then
		x=x.args[1]
	elseif type(x) == 'string' then
		x = x
	else
		x = nil
		return translate
	end
	
	local translation
	local result
	--迭代部分,开始翻译
	for k,v in pairs(translate) do
		if k==x then return k end
		local item = translate[k]
		for m,n in ipairs(item) do
			if n==x then return k end
		end
	end
	return result or x
end
p["翻译"]=p.translate--等价函数
p["翻譯"]=p.translate--等价函数
--==获取关卡数据,能够通过{{#invoke:data|getLevelData}}中的参数返回关卡数据,以维基文本的形式==--
function p.getLevelData(frame)
	local m = frame.args
	local d = p.data.level[p.getName(m[1])]
	local v = type(d)=='table' and d[p.translate(m[2])]
	return v and tostring(v) or ''
end
p["获取关卡数据"]=p.getLevelData--等价函数
p["獲取關卡數據"]=p.getLevelData--等价函数
--== 版本获取功能 ==--
function p.getVersion(a)
	return "暂时未提供版本获取功能,请等待该功能加入后使用。参见[[模块:Data]]。"
end
return p