321 lines
9.6 KiB
Lua
321 lines
9.6 KiB
Lua
local function Fooled()
|
|
local phrases = {
|
|
"hornswaggled",
|
|
"bamboozled",
|
|
"hoodwinked",
|
|
"swindled",
|
|
"duped",
|
|
"hoaxed",
|
|
"fleeced",
|
|
"shafted",
|
|
"caboodled",
|
|
"beguiled",
|
|
"finagled",
|
|
"two-timed",
|
|
"suckered",
|
|
"flimflammed",
|
|
"generous"
|
|
}
|
|
return phrases[math.random(#phrases)]
|
|
end
|
|
|
|
local line_height= 30 -- so that actor logos can use it.
|
|
|
|
local stepmania_credits= {
|
|
{
|
|
name="ITGmania Team",
|
|
"Martin Natano (natano)",
|
|
"teejusb",
|
|
},
|
|
{
|
|
name= "the spinal shark collective (project lead)",
|
|
"AJ Kelly as freem",
|
|
"Jonathan Payne (Midiman)",
|
|
"Colby Klein (shakesoda)",
|
|
},
|
|
{
|
|
name= "sm-ssc Team",
|
|
"Jason Felds (wolfman2000)", -- Timing Segments, Split Timing, optimization
|
|
"Thai Pangsakulyanont (theDtTvB)", -- BMS, Split Timing, optimization
|
|
"Alberto Ramos (Daisuke Master)",
|
|
"Jack Walstrom (FSX)",
|
|
},
|
|
{
|
|
name= "StepMania Team",
|
|
"Chris Danford",
|
|
"Glenn Maynard",
|
|
"Steve Checkoway",
|
|
-- and various other contributors
|
|
},
|
|
{
|
|
name= "OpenITG Team",
|
|
"infamouspat",
|
|
"Mark Cannon (vyhd)",
|
|
},
|
|
{
|
|
name= "Translators",
|
|
{type= "subsection", name= "Pre-5.0.5"},
|
|
"John Reactor (Polish)",
|
|
"DHalens (Spanish)",
|
|
"@Niler_jp (Japanese)",
|
|
"Deamon007 (Dutch)",
|
|
{type= "subsection", name= "5.0.5 update"},
|
|
"Kevin O. (Thumbsy) (Dutch)",
|
|
"Grégory Doche (French)",
|
|
"Jarosław Pietras (Polish)",
|
|
"Alejandro G. de la Muñoza (Spanish)",
|
|
"Raymund Zacharias (German)",
|
|
{type= "subsection", name= "5.0.10 update"},
|
|
"Milène Gauthier-Sabourin (Arvaneth) (French)",
|
|
{type= "subsection", name= "5.0.11 update"},
|
|
"Joel Robert Justiawan (JOELwindows7) (Indonesian)",
|
|
},
|
|
{
|
|
name= "Other Contributors",
|
|
{type= "subsection", name= "ITGmania"},
|
|
"Club Fantastic (https://www.clubfantastic.com/)",
|
|
"DinsFire64 (Mine Fix)",
|
|
"EvocaitArt (Enchantment NoteSkin)",
|
|
"jenx (Fast Profile Switching)",
|
|
"LightningXCE (Cyber NoteSkin)",
|
|
"MegaSphere (Note/Rainbow/Vivid NoteSkins)",
|
|
{type= "subsection", name= "StepMania"},
|
|
"Aldo Fregoso (Aldo_MX)", -- delays and much more. StepMania AMX creator
|
|
"Alfred Sorenson", -- new lua bindings
|
|
"A.C/@waiei", -- custom scoring fixes + Hybrid scoring
|
|
"cerbo", -- lua bindings and other fun stuff
|
|
"cesarmades", -- pump/cmd* noteskins
|
|
"Chris Eldridge (kurisu)", -- dance-threepanel stepstype support
|
|
"Christophe Goulet-LeBlanc (Kommisar)", -- songs
|
|
"corec", -- various fixes
|
|
"cybik", -- Android port
|
|
"dbk2", -- mac builds, a couple actor behavior fixes, new lua bindings
|
|
"djpohly", -- piuio kernel module, XML compatibility, other useful stuff
|
|
"galopin", -- piu PlayStation2 usb mat support
|
|
"gholms", -- automake 1.11 support
|
|
"hanubeki (@803832)", -- beginner helper fix, among various other things
|
|
"juanelote", -- SongManager:GetSongGroupByIndex, JumpToNext/PrevGroup logic mods
|
|
"Kaox", -- pump/default noteskin
|
|
-- Add Graphics/CreditsLogo name.png and change your entry to a table like this to look super pro.
|
|
{logo= "kyzentun", name= "Kyzentun"}, -- new lua bindings, theme documentation
|
|
"Lirodon", -- Lambda default theme on 5.1
|
|
"Mad Matt", -- new lua bindings
|
|
"Matt McCutchen", -- minor fix for some dance pads on linux
|
|
"MrThatKid", -- nitg modifiers
|
|
"NitroX72", -- pump/frame noteskin
|
|
"nixtrix", -- various BMS features and other fixes
|
|
"Petriform", -- default theme music
|
|
"Prcuvu", -- various VS2015 related fixes
|
|
"psmay", -- SextetStream driver and related things
|
|
"桜為小鳩/Sakurana-Kobato (@sakuraponila)", -- custom scoring fixes
|
|
"Samuel Kim (1a2a3a2a1a)", -- various beat mode fixes
|
|
"tuxdude", -- minor changes to service menu layout
|
|
"v1toko", -- x-mode from StepNXA
|
|
"Wallacoloo", -- delete songs, other fixes
|
|
},
|
|
{
|
|
name= "Special Thanks",
|
|
"A Pseudonymous Coder", -- support
|
|
"Bill Shillito (DM Ashura)", -- Music (not yet though)
|
|
"cpubasic13", -- testing (a lot)
|
|
"Dreamwoods",
|
|
"Jason Bolt (LightningXCE)",
|
|
"Jousway", -- Noteskins
|
|
"Luizsan", -- creator of Delta theme
|
|
"Matt1360", -- Automake magic + oitg bro
|
|
"Ryan McKanna (Plaguefox)",
|
|
"Sta Kousin", --help with Japanese bug reports
|
|
},
|
|
{
|
|
name= "Shoutouts",
|
|
"The Lua team", -- lua project lead or some shit. super nerdy but oh hell.
|
|
{logo= "mojang", name= "Mojang AB"}, -- minecraft forever -freem
|
|
"Wolfire Games", -- piles of inspiration
|
|
"NAKET Coder",
|
|
"Ciera Boyd", -- you bet your ass I'm putting my girlfriend in the credits -shakesoda
|
|
"#KBO",
|
|
"Celestia Radio", -- LOVE AND TOLERANCE
|
|
"Perkedel Corporation", -- Joel's company.
|
|
"You showed us... your ultimate dance",
|
|
},
|
|
}
|
|
|
|
local kyzentuns_fancy_value= 16
|
|
|
|
local special_logos= {
|
|
kyzentun= Def.ActorMultiVertex{
|
|
Name= "logo",
|
|
Texture= THEME:GetPathG("CreditsLogo", "kyzentun"),
|
|
OnCommand= function(self)
|
|
self:SetDrawState{Mode= "DrawMode_Quads"}
|
|
kyzentuns_fancy_value= math.random(2, 32)
|
|
self:playcommand("fancy", {state= 0})
|
|
self:queuecommand("normal_state")
|
|
end,
|
|
fancyCommand= function(self, params)
|
|
local verts= {}
|
|
local rlh= line_height - 2
|
|
local sx= rlh * -1
|
|
local sy= rlh * -.5
|
|
local sp= rlh / kyzentuns_fancy_value
|
|
local spt= 1 / kyzentuns_fancy_value
|
|
local c= color("#ffffff")
|
|
for x= 1, kyzentuns_fancy_value do
|
|
local lx= sx + (sp * (x-1))
|
|
local rx= sx + (sp * x)
|
|
local ltx= spt * (x-1)
|
|
local rtx= spt * x
|
|
for y= 1, kyzentuns_fancy_value do
|
|
local ty= sy + (sp * (y-1))
|
|
local by= sy + (sp * y)
|
|
local tty= spt * (y-1)
|
|
local bty= spt * y
|
|
if params.state == 1 then
|
|
ltx= 0
|
|
rtx= 1
|
|
tty= 0
|
|
bty= 1
|
|
end
|
|
verts[#verts+1]= {{lx, ty, 0}, {ltx, tty}, c}
|
|
verts[#verts+1]= {{rx, ty, 0}, {rtx, tty}, c}
|
|
verts[#verts+1]= {{rx, by, 0}, {rtx, bty}, c}
|
|
verts[#verts+1]= {{lx, by, 0}, {ltx, bty}, c}
|
|
end
|
|
end
|
|
self:SetVertices(verts)
|
|
end,
|
|
normal_stateCommand= function(self)
|
|
self:linear(1)
|
|
self:playcommand("fancy", {state= 0})
|
|
self:queuecommand("split_state")
|
|
end,
|
|
split_stateCommand= function(self)
|
|
self:linear(1)
|
|
self:playcommand("fancy", {state= 1})
|
|
self:queuecommand("normal_state")
|
|
end,
|
|
},
|
|
mojang= Def.Actor{
|
|
Name= "logo",
|
|
OnCommand= function(self)
|
|
self:GetParent():GetChild("name"):distort(.25) -- minecraft is broken, -kyz
|
|
end
|
|
},
|
|
}
|
|
|
|
-- Go through the credits and swap in the special logos.
|
|
for section in ivalues(stepmania_credits) do
|
|
for entry in ivalues(section) do
|
|
if type(entry) == "table" and special_logos[entry.logo] then
|
|
entry.logo= special_logos[entry.logo]
|
|
end
|
|
end
|
|
end
|
|
|
|
local function position_logo(self)
|
|
local name= self:GetParent():GetChild("name")
|
|
local name_width= name:GetZoomedWidth()
|
|
local logo_width= self:GetZoomedWidth()
|
|
self:x(0 - (name_width / 2) - 4 - (logo_width / 2))
|
|
end
|
|
|
|
StepManiaCredits= {
|
|
AddSection= function(section, pos, insert_before)
|
|
if not section.name then
|
|
lua.ReportScriptError("A section being added to the credits must have a name field.")
|
|
return
|
|
end
|
|
if #section < 1 then
|
|
lua.ReportScriptError("Adding a blank section to the credits doesn't make sense.")
|
|
return
|
|
end
|
|
if type(pos) == "string" then
|
|
for i, section in ipairs(stepmania_credits) do
|
|
if section.name == pos then
|
|
pos= i -- insert_after is default behavior
|
|
end
|
|
end
|
|
end
|
|
if pos and type(pos) ~= "number" then
|
|
lua.ReportScriptError("Credits section '" .. tostring(pos) .. " not found, cannot use position to add new section.")
|
|
return
|
|
end
|
|
pos= pos or #stepmania_credits
|
|
if insert_before then
|
|
pos= pos - 1
|
|
end
|
|
-- table.insert does funny things if you pass an index <= 0
|
|
if pos < 1 then
|
|
lua.ReportScriptError("Cannot add credits section at position " .. tostring(pos) .. ".")
|
|
return
|
|
end
|
|
table.insert(stepmania_credits, pos, section)
|
|
end,
|
|
AddLineToScroller= function(scroller, text, command)
|
|
if type(scroller) ~= "table" then
|
|
lua.ReportScriptError("scroller passed to AddLineToScroller must be an actor table.")
|
|
return
|
|
end
|
|
local actor_to_insert
|
|
if type(text) == "string" or not text then
|
|
actor_to_insert= Def.ActorFrame{
|
|
Def.BitmapText{
|
|
Font= "Common Normal",
|
|
Text = text or "";
|
|
OnCommand = command or lineOn;
|
|
}
|
|
}
|
|
elseif type(text) == "table" then
|
|
actor_to_insert= Def.ActorFrame{
|
|
Def.BitmapText{
|
|
Name= "name", Font= "Common Normal",
|
|
Text = text.name or "",
|
|
InitCommand = command or lineOn,
|
|
},
|
|
}
|
|
if text.logo then
|
|
if type(text.logo) == "string" then
|
|
actor_to_insert[#actor_to_insert+1]= Def.Sprite{
|
|
Name= "logo",
|
|
InitCommand= function(self)
|
|
-- Use LoadBanner to disable the odd dimension warning.
|
|
self:LoadBanner(THEME:GetPathG("CreditsLogo", text.logo))
|
|
-- Scale to slightly less than the line height for padding.
|
|
local yscale= (line_height-2) / self:GetHeight()
|
|
self:zoom(yscale)
|
|
-- Position logo to the left of the name.
|
|
position_logo(self)
|
|
end
|
|
}
|
|
else -- assume logo is an actor
|
|
-- Insert positioning InitCommand.
|
|
text.logo.InitCommand= position_logo
|
|
actor_to_insert[#actor_to_insert+1]= text.logo
|
|
end
|
|
end
|
|
end
|
|
table.insert(scroller, actor_to_insert)
|
|
end,
|
|
Get= function()
|
|
-- Copy the base credits and add the copyright message at the end.
|
|
local ret= DeepCopy(stepmania_credits)
|
|
ret[#ret+1]= StepManiaCredits.RandomCopyrightMessage()
|
|
return ret
|
|
end,
|
|
RandomCopyrightMessage= function()
|
|
return {
|
|
name= "Copyright",
|
|
"ITGmania is released under the terms of the MIT license.",
|
|
"If you paid for the program you've been " .. Fooled() .. ".",
|
|
"All content is the sole property of their respectful owners."
|
|
}
|
|
end,
|
|
SetLineHeight= function(height)
|
|
if type(height) ~= "number" then
|
|
lua.ReportScriptError("height passed to StepManiaCredits.SetLineHeight must be a number.")
|
|
return
|
|
end
|
|
line_height= height
|
|
end
|
|
}
|