Files
Martin Natano 35bc6b8775 Update credits
2022-06-11 23:38:52 +02:00

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
}