モジュール:地図

ナビゲーションに移動 検索に移動
モジュールの解説[作成]
local head={}
for k,v in ipairs({string.byte("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",1,-1)}) do
	head[v]=k-1
end
local tail={}
for k,v in ipairs({string.byte("==9xsy+===4ldYem5=8kUNIOVn/wcMEAFPfzvbLD=BJZt3jTHCGQg0.rXSKRWo*=7qiahp6===^2u1-==",1,-1)}) do
	if v~=string.byte("=") then
		tail[v]={(k-1)%9-4,math.floor((k-1)/9)-4}
	end
end
return function(name,index)
	local result={}
	for line in string.gmatch(mw.loadData("Module:地図/"..name)[index],"[^,]+") do
		local b={line:byte(1,-1)}
		local p={head[b[1]]+64*(head[b[2]]+64*head[b[3]]),head[b[4]]+64*(head[b[5]]+64*head[b[6]])}
		local list={}
		table.insert(list,{p[1]*360/65536,p[2]*360*2/3/65536})
		for k,v in ipairs(b) do
			if k>=7 then
				local d=tail[v]
				p={p[1]+d[1],p[2]+d[2]}
				table.insert(list,{p[1]*360/65536,p[2]*360*2/3/65536})
			end
		end
		table.insert(result,list)
	end
	return result
end