Module:Songtable:修订间差异

来自Arcaea中文维基
(创建页面,内容为“--autoimage未完成 local p = {} function Mergecheck(ta,tb,tc,td) --输入4个值,检查合并关系 --输出一个带两个值的table,分别为合并后的…”)
 
无编辑摘要
第1行: 第1行:
--autoimage未完成
local p = {}
local p = {}


第43行: 第42行:


return result
return result
--use example:
 
--local result=Mergecheck(2,1,1,2)
--local resulta= result[1]
--local resultb= result[2][1]
--local resultc= result[2][2]
--local resultd= result[2][3]
--local resulte= result[2][4]
--who this?
end
end


第107行: 第99行:
function EasySplitText(ain,byd)
function EasySplitText(ain,byd)
text=ain
text=ain
local secondarybox={}
local Secondarybox={}
local result=""
local result=""
if byd==true then
text[21]=tostring(text[21]).."\n"..tostring(text[23])
end
text[20]=tostring(text[20]).."\n"..tostring(text[22])
if byd==true
if byd==true
then
then
local o,p=1,21
local o,p=1,21
for i=1,21 do
for i=1,15 do
secondarybox[o]=mw.html.create("div")
Secondarybox[o]=mw.html.create("div")
secondarybox[o]
Secondarybox[o]
:wikitext(tostring(text[o]))
:wikitext(tostring(text[o]))
:addClass("Sbox"..p)
:addClass("Sbox"..p)
result=result..tostring(secondarybox[o])
result=result..tostring(Secondarybox[o])
o,p=o+1,p+1
o,p=o+1,p+1
end
end
else
else
local o,p=1,21
local o,p=1,21
for i=1,21 do
for i=1,14 do
if o~=5 and o~=10 and o~=15 and o~=18
if o~=5 and o~=10 
then
then
secondbox[o]=mw.html.create("div")
Secondarybox[o]=mw.html.create("div")
secondbox[o]
Secondarybox[o]
:wikitext(text[o])
:wikitext(text[o])
:addClass("Sbox"..p)
:addClass("Sbox"..p)
result=result..tostring(secondbox[o])
result=result..tostring(Secondarybox[o])
end
end
o,p=o+1,p+1
o,p=o+1,p+1
end
end
end
Secondarybox[16]=mw.html.create("div")
Secondarybox[16]
:wikitext(text[16])
:addClass("Sbox36")
result=result..tostring(Secondarybox[16])
if byd==true
then
if text[18]==nil
then
Secondarybox[17]=mw.html.create("div")
Secondarybox[17]
:wikitext(text[17])
:addClass("Sbox37")
:cssText("grid-column: 2 / span 4;")
result=result..tostring(Secondarybox[17])
else
Secondarybox[17]=mw.html.create("div")
Secondarybox[17]
:wikitext(text[17])
:addClass("Sbox37")
:cssText("grid-column: 2 / span 3;")
result=result..tostring(Secondarybox[17])
Secondarybox[18]=mw.html.create("div")
Secondarybox[18]
:wikitext(text[18])
:addClass("Sbox38")
result=result..tostring(Secondarybox[18])
end
else
Secondarybox[17]=mw.html.create("div")
Secondarybox[17]
:wikitext(text[17])
:addClass("Sbox37")
:cssText("grid-column: 2 / span 3;")
result=result..tostring(Secondarybox[17])
end
end
第181行: 第208行:
local notewrite=frame:getParent().args["Note编写"] --临时转换
local notewrite=frame:getParent().args["Note编写"] --临时转换
if notewrite~=nil 
if notewrite~=nil then SplitGroup[1],SplitGroup[2],SplitGroup[3],SplitGroup[4]=notewrite,notewrite,notewrite,notewrite end
then
--如果没有分难度谱师参数输入,直接用谱师的值
SplitGroup[1],SplitGroup[2],SplitGroup[3],SplitGroup[4]=notewrite,notewrite,notewrite,notewrite
--如果没有分难度谱师参数输入,直接用谱师的值
-- 12-14 四谱师 如空留位
else
SplitGroup[1]=frame:getParent().args["PastNote编写"] 
-- 12-14 四谱师 如空留位
SplitGroup[2]=frame:getParent().args["PresentNote编写"] 
SplitGroup[1]=frame:getParent().args["PastNote编写"]
SplitGroup[3]=frame:getParent().args["FutureNote编写"] 
SplitGroup[2]=frame:getParent().args["PresentNote编写"]
SplitGroup[4]=frame:getParent().args["BeyondNote编写"] 
SplitGroup[3]=frame:getParent().args["FutureNote编写"]
SplitGroup[4]=frame:getParent().args["BeyondNote编写"]
end
--依次对应21-33
--依次对应21-33
第221行: 第245行:
local texta,textb,textc="","",""
local texta,textb,textc="","",""
texta=RegularText(RegularGroup,bydyes)
texta=RegularText(RegularGroup,bydyes)
textb=SplitText(SplitGroup,bydyes)
textb=SplitText(SplitGroup)
textc=EasySplitText(EasySplitGroup,bydyes)
textc=EasySplitText(EasySplitGroup,bydyes)
--将参数封装为table变量,输入进函数返回转换后的字符串。
--将参数封装为table变量,输入进函数返回转换后的字符串。
第231行: 第255行:
:addClass("box")
:addClass("box")
:cssText("grid-template-columns:"..tostring(column))
:cssText("grid-template-columns:"..tostring(column))
:css ("background-color","antiquewhite")
:wikitext(endstring)
:wikitext(endstring)

2021年2月3日 (三) 21:35的版本

可在Module:Songtable/doc创建此模块的帮助文档

local p = {}

function Mergecheck(ta,tb,tc,td)
	--输入4个值,检查合并关系
	--输出一个带两个值的table,分别为合并后的块数和一个带有“第几块向右合并几块“的table

	local pst=tostring(ta)
	local prs=tostring(tb)
	local ftr=tostring(tc)
	local byd=tostring(td)
	local blocksnum=nil --合并后有多少块
	local mergenum={1,1,1,1} --在哪块向右合并多少
	local result={}

	local trun1,trun2,trun3,bydyes=false,false,false,false
	if (pst==prs) then trun1=true  end
	if (prs==ftr) then trun2=true  end
	if (ftr==byd) then trun3=true  end
	if (byd~=nil) then bydyes=true end
	--trun1 aaxx trun2 xaax trun3 xxaa
	--genre1:aaaa genre2:abbb genre3:aaab genre4:aabb
	--genre5:aabc genre6:abbc genre7:abcc genre8:abcd
	if bydyes then
		if trun1       and trun2        and trun3      then blocksnum=1 mergenum[1]=4    end
		if not(trun1)  and trun2       and trun3       then blocksnum=2 mergenum[2]=3   end
		if trun1       and trun2        and not(trun3) then blocksnum=2 mergenum[1]=3    end
		if trun1       and not(trun2)  and trun3       then blocksnum=2 mergenum[1]=2 mergenum[2]=2 end
		if trun1       and not(trun2)  and not(trun3)  then blocksnum=3 mergenum[1]=2   end
		if not(trun1)  and trun2       and not(trun3)  then blocksnum=3 mergenum[2]=2   end
		if not(trun1)  and not(trun2)  and trun3       then blocksnum=3 mergenum[3]=2   end
		if not(trun1)  and not(trun2)  and not(trun3) then blocksnum=4                  end
	else
		if trun1  and trun2   then blocksnum=3 mergenum[1]=3 end
		if not(trun1) and trun2   then blocksnum=2 mergenum[2]=2 end
		if trun1  and not(trun2)  then blocksnum=2 mergenum[1]=2 end
		if not(trun1) and not(trun2)  then blocksnum=3               end
	end


	result[1]=blocksnum
	result[2]=mergenum

	return result

end

function RegularText(text,byd)
	local o=1
	local Secondarybox={}
	local result=""
	for i=1,11 do
		Secondarybox[o] =mw.html.create("div")
		Secondarybox[o]
			:wikitext(text[o])
			:addClass("Sbox"..o)
		if byd==true and (o==1 or o==2) then Secondarybox[o]:cssText("grid-column: 1 / span 5;") end
		if o==3 or o==5 or o==7 or o==9 or o==11 then Secondarybox[o]:cssText("grid-column: 1 / span 1;") end
		if byd==true and (o==4 or o==6 or o==8 or o==10) then Secondarybox[o]:cssText("grid-column: 2 / span 4;") end
		if byd==false and (o==1 or o==2) then Secondarybox[o]:cssText("grid-column: 1 / span 4;") end
		if byd==false and (o==4 or o==6 or o==8 or o==10) then Secondarybox[o]:cssText("grid-column: 2 / span 3;") end
		result=result..tostring(Secondarybox[o])
		o=o+1
	end
	
	return result
end

function SplitText(text)
	local Mergecheck=Mergecheck(text[1],text[2],text[3],text[4]) --获取合成的转换信息
	local Secondarybox={}
	local result=""
	
	for i=1,3 do
	local op=1
		for i=1,4 do
			if text[op]==nil then text[op],text[op+1]=text[op+1],text[op] end
			if text[op]==text[op-1] then text[op]=text[op+1] end
			op=op+1
		end
	end
	
	local c,p,o=1,1,12
	for i=1,Mergecheck[1] do
		local mergenumber=Mergecheck[2][p]
		Secondarybox[o] =mw.html.create("div")
		Secondarybox[o]
			:wikitext(tostring(text[p]))
			:addClass("Sbox"..o)
			:cssText("grid-column: "..tostring(c+1).." / span "..mergenumber) --第几个块获取第几个块的合成信息
		result=result..tostring(Secondarybox[o])
		c=c+mergenumber
		o=o+1
		p=p+1
	end
	
	return tostring(result)
end

function EasySplitText(ain,byd)
	text=ain
	local Secondarybox={}
	local result=""
	
	if byd==true
	then
		local o,p=1,21
		for i=1,15 do
			Secondarybox[o]=mw.html.create("div")
			Secondarybox[o]
				:wikitext(tostring(text[o]))
				:addClass("Sbox"..p)
			result=result..tostring(Secondarybox[o])
			o,p=o+1,p+1
		end
	else
		local o,p=1,21
		for i=1,14 do
			if o~=5 and o~=10 
			then
				Secondarybox[o]=mw.html.create("div")
				Secondarybox[o]
					:wikitext(text[o])
					:addClass("Sbox"..p)
			result=result..tostring(Secondarybox[o])
			end
		o,p=o+1,p+1
		end
		
	end
	
	Secondarybox[16]=mw.html.create("div")
	Secondarybox[16]
		:wikitext(text[16])
		:addClass("Sbox36")
	result=result..tostring(Secondarybox[16])

	
	if byd==true 
	then 
		
		if text[18]==nil 
		then
			Secondarybox[17]=mw.html.create("div")
			Secondarybox[17]
				:wikitext(text[17])
				:addClass("Sbox37")
				:cssText("grid-column: 2 / span 4;")
			result=result..tostring(Secondarybox[17])
		else
			Secondarybox[17]=mw.html.create("div")
			Secondarybox[17]
				:wikitext(text[17])
				:addClass("Sbox37")
				:cssText("grid-column: 2 / span 3;")
			result=result..tostring(Secondarybox[17])
			
			Secondarybox[18]=mw.html.create("div")
			Secondarybox[18]
				:wikitext(text[18])
				:addClass("Sbox38")
			result=result..tostring(Secondarybox[18])
		end
	else
		Secondarybox[17]=mw.html.create("div")
		Secondarybox[17]
			:wikitext(text[17])
			:addClass("Sbox37")
			:cssText("grid-column: 2 / span 3;")
		result=result..tostring(Secondarybox[17])
	end
	
	return tostring(result)
end

function autoimage(image)
	
end

function p.box(frame)
	--主函数
	local RegularGroup={} --不会进行拆分的组
	local SplitGroup={} --会进行4等拆分的组
	local EasySplitGroup={} --会进行2等拆分的组
	
	local bydyes
	local column=""
	local byd=tonumber(frame:getParent().args["Beyond等级"])
	if byd then bydyes=true else bydyes=false end
	if bydyes==true then column="10% 22.5% 22.5% 22.5% 22.5%" else column="10% 30% 30% 30%" end
	
	local songname=frame:getParent().args["曲名"]
	
	if frame:getParent().args["第二曲名"] then songname=songname..frame:getParent().args["第二曲名"] end
	
	-- 1-11对应表 example: image class:Sbox1
	RegularGroup[1]="image"
	RegularGroup[2]=songname
	RegularGroup[3]="编曲"
	RegularGroup[4]=frame:getParent().args["编曲"]
	RegularGroup[5]="曲包"
	RegularGroup[6]=frame:getParent().args["曲包"]
	RegularGroup[7]="时长"
	RegularGroup[8]=frame:getParent().args["时长"]
	RegularGroup[9]="BPM"
	RegularGroup[10]=frame:getParent().args["BPM"]
	RegularGroup[11]="谱师"
	
	local notewrite=frame:getParent().args["Note编写"] --临时转换
	
	if notewrite~=nil then SplitGroup[1],SplitGroup[2],SplitGroup[3],SplitGroup[4]=notewrite,notewrite,notewrite,notewrite end
	--如果没有分难度谱师参数输入,直接用谱师的值
	
	-- 12-14 四谱师 如空留位
	SplitGroup[1]=frame:getParent().args["PastNote编写"] 
	SplitGroup[2]=frame:getParent().args["PresentNote编写"] 
	SplitGroup[3]=frame:getParent().args["FutureNote编写"] 
	SplitGroup[4]=frame:getParent().args["BeyondNote编写"] 
	
	--依次对应21-33
	EasySplitGroup[1]="难度"
	EasySplitGroup[2]="Past"
	EasySplitGroup[3]="Present"
	EasySplitGroup[4]="Future"
	EasySplitGroup[5]="Beyond"
	EasySplitGroup[6]="等级"
	EasySplitGroup[7]=frame:getParent().args["Past等级"]
	EasySplitGroup[8]=frame:getParent().args["Present等级"]
	EasySplitGroup[9]=frame:getParent().args["Future等级"]
	EasySplitGroup[10]=frame:getParent().args["Beyond等级"]
	EasySplitGroup[11]="物量"
	EasySplitGroup[12]=frame:getParent().args["PastNote"]
	EasySplitGroup[13]=frame:getParent().args["PresentNote"]
	EasySplitGroup[14]=frame:getParent().args["FutureNote"]
	EasySplitGroup[15]=frame:getParent().args["BeyondNote"]
	EasySplitGroup[16]="画师"
	EasySplitGroup[17]=frame:getParent().args["画师"]
	EasySplitGroup[18]=frame:getParent().args["Beyond画师"]
	EasySplitGroup[19]="更新时间"
	EasySplitGroup[20]=frame:getParent().args["更新版本"]
	EasySplitGroup[21]=frame:getParent().args["Beyond更新版本"]
	EasySplitGroup[22]=frame:getParent().args["更新时间"]
	EasySplitGroup[23]=frame:getParent().args["Beyond更新时间"]
	

	local texta,textb,textc="","",""
	texta=RegularText(RegularGroup,bydyes)
	textb=SplitText(SplitGroup)
	textc=EasySplitText(EasySplitGroup,bydyes)
	--将参数封装为table变量,输入进函数返回转换后的字符串。
	
	local endstring=texta..textb..textc
	
	local box =mw.html.create("div")
	box
		:addClass("box")
		:cssText("grid-template-columns:"..tostring(column))
		:wikitext(endstring)
	
	return tostring(box)
	
end

return p