-- To add a section to the credits, use the following:
-- local theme_credits= {
-- 	name= "Theme Credits", -- the name of your section
-- 	"Me", -- The people you want to list in your section.
-- 	"Myself",
-- 	"My other self",
--  {logo= "pro_dude", name= "Pro self"}, -- Someone who has a logo image.
--     -- This logo image would be "Graphics/CreditsLogo pro_dude.png".
-- }
-- StepManiaCredits.AddSection(theme_credits)
--
-- If you want to add your section after an existing section, use the following:
-- StepManiaCredits.AddSection(theme_credits, 7)
--
-- Or position can be the name of a section to insert after:
-- StepManiaCredits.AddSection(theme_credits, "Special Thanks")
--
-- Or if you want to add your section before a section:
-- StepManiaCredits.AddSection(theme_credits, "Special Thanks", true)

-- StepManiaCredits is defined in _fallback/Scripts/04 CreditsHelpers.lua.

local line_on = function(self) self:zoom(0.875):strokecolor(color("#444444")):shadowcolor(color("#444444")):shadowlength(1) end
local section_on = function(self) self:diffuse( color("#88DDFF") ):strokecolor( color("#446688") ):shadowcolor( color("#446688")):shadowlength(1) end
local subsection_on = function(self) self:diffuse( color("#88DDFF") ):strokecolor( color("#446688") ):shadowcolor( color("#446688")):shadowlength(1) end
local item_padding_start = 4
local line_height= 30
-- Tell the credits table the line height so it can use it for logo sizing.
StepManiaCredits.SetLineHeight(line_height)

local creditScroller = Def.ActorScroller {
	SecondsPerItem = 0.5,
	NumItemsToDraw = 40,
	TransformFunction = function( self, offset, itemIndex, numItems)
		self:y(line_height*offset)
	end,
	OnCommand = function( self )
		self:scrollwithpadding(item_padding_start,15)
	end
}

-- Add sections with padding.
for section in ivalues(StepManiaCredits.Get()) do
	StepManiaCredits.AddLineToScroller(creditScroller, section.name, section_on)
	for name in ivalues(section) do
		if name.type == "subsection" then
			StepManiaCredits.AddLineToScroller(creditScroller, name, subsection_on)
		else
			StepManiaCredits.AddLineToScroller(creditScroller, name, line_on)
		end
	end
	StepManiaCredits.AddLineToScroller(creditScroller)
	StepManiaCredits.AddLineToScroller(creditScroller)
end

creditScroller.BeginCommand=function(self)
	SCREENMAN:GetTopScreen():PostScreenMessage( 'SM_MenuTimer', (creditScroller.SecondsPerItem * (#creditScroller + item_padding_start) + 10) )
end

return Def.ActorFrame{
	creditScroller..{
		InitCommand=function(self) self:xy( SCREEN_CENTER_X,SCREEN_BOTTOM-64 ) end
	},
	Def.Sprite{
		Texture=THEME:GetPathB("ScreenWithMenuElements","background/_bg top"),
		InitCommand=function(self) self:Center() end
	}
}
