--Minetest --Copyright (C) 2013 sapier -- --This program is free software; you can redistribute it and/or modify --it under the terms of the GNU Lesser General Public License as published by --the Free Software Foundation; either version 2.1 of the License, or --(at your option) any later version. -- --This program is distributed in the hope that it will be useful, --but WITHOUT ANY WARRANTY; without even the implied warranty of --MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the --GNU Lesser General Public License for more details. -- --You should have received a copy of the GNU Lesser General Public License along --with this program; if not, write to the Free Software Foundation, Inc., --51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -- IMPORTANT! some lines had to be split up to new lines because they didn't fit in the window local sussycraft_authors = { "SussyCraft Game Authors:", "Kacper Kostka (kacperks) ", "(Programming, Textures)", "Łukasz Brzostowski (Looki2000)", "", "(Programming, Textures, 3D Models, Soundtrack, Sounds)", "Karol Rostek (karoltoja200) discord:karoltoja200#6809", "(Textures)", "Dawid Cholewiusz (D47 0_o) discord:D46 0_o#8952", "(Structures builder)", "Kacper Brzostowski (wooden plank texture)", } -- https://github.com/orgs/minetest/teams/engine/members local core_developers = { "Perttu Ahola (celeron55) [Project founder]", "sfan5 ", "ShadowNinja ", "Nathanaëlle Courant (Nore/Ekdohibs) ", "Loic Blot (nerzhul/nrz) ", "Andrew Ward (rubenwardy) ", "Krock/SmallJoker ", "Lars Hofhansl ", "v-rob ", "hecks", "Hugues Ross ", "Dmitry Kostenko (x2048) ", } local core_team = { "Zughy [Issue triager]", } -- For updating active/previous contributors, see the script in ./util/gather_git_credits.py local active_contributors = { "Wuzzy [Features, translations, devtest]", "Lars Müller [Lua optimizations and fixes]", "Jude Melton-Houghton [Optimizations, bugfixes]", "paradust7 [Performance, fixes, Irrlicht refactoring]", "Desour [Fixes]", "ROllerozxa [Main menu]", "savilli [Bugfixes]", "Lexi Hale [Particlespawner animation]", "Liso [Shadow Mapping]", "JosiahWI [Fixes, build system]", "numzero [Graphics and rendering]", "HybridDog [Fixes]", "NeroBurner [Joystick]", "pecksin [Clickable web links]", "Daroc Alden [Fixes]", "Jean-Patrick Guerrero (kilbith) [Fixes]", } local previous_core_developers = { "BlockMen", "Maciej Kasatkin (RealBadAngel) [RIP]", "Lisa Milne (darkrose) ", "proller", "Ilya Zhuravlev (xyz) ", "PilzAdam ", "est31 ", "kahrl ", "Ryan Kwolek (kwolekr) ", "sapier", "Zeno", "Auke Kok (sofar) ", "Aaron Suen ", "paramat", "Pierre-Yves Rollo ", } local previous_contributors = { "Nils Dagsson Moskopp (erlehmann) [Minetest logo]", "red-001 ", "Giuseppe Bilotta", "ClobberXD", "Dániel Juhász (juhdanad) ", "MirceaKitsune ", "MoNTE48", "Constantin Wenger (SpeedProg)", "Ciaran Gultnieks (CiaranG)", "Paul Ouellette (pauloue)", "stujones11", "srifqi", "Rogier ", "Gregory Currie (gregorycu)", "JacobF", "Jeija ", } local function prepare_credits(dest, source) for _, s in ipairs(source) do -- if there's text inside brackets make it gray-ish s = s:gsub("%[.-%]", core.colorize("#aaa", "%1")) dest[#dest+1] = s end end local function build_hacky_list(items, spacing) spacing = spacing or 0.5 local y = spacing / 2 local ret = {} for _, item in ipairs(items) do if item ~= "" then ret[#ret+1] = ("label[0,%f;%s]"):format(y, core.formspec_escape(item)) end y = y + spacing end return table.concat(ret, ""), y end return { name = "about", caption = fgettext("About"), cbf_formspec = function(tabview, name, tabdata) local logofile = defaulttexturedir .. "logo.png" local version = core.get_version() local credit_list = {} table.insert_all(credit_list, { core.colorize("#ffdd33", fgettext("SussyCraft Developers")) }) prepare_credits(credit_list, sussycraft_authors) table.insert_all(credit_list, { core.colorize("#ffdd33", fgettext("Minetest Engine Developers")) }) prepare_credits(credit_list, core_developers) table.insert_all(credit_list, { "", core.colorize("#ffdd33", fgettext("Core Team")) }) prepare_credits(credit_list, core_team) table.insert_all(credit_list, { "", core.colorize("#ffdd33", fgettext("Active Contributors")) }) prepare_credits(credit_list, active_contributors) table.insert_all(credit_list, { "", core.colorize("#ffdd33", fgettext("Previous Core Developers")) }) prepare_credits(credit_list, previous_core_developers) table.insert_all(credit_list, { "", core.colorize("#ffdd33", fgettext("Previous Contributors")) }) prepare_credits(credit_list, previous_contributors) -- SUS local excamation_marks_count = math.random(1, 30) table.insert_all(credit_list, { "", "", core.colorize("#f00", fgettext("AMOGUS IS SUS" .. string.rep("!", excamation_marks_count))) }) local credit_fs, scroll_height = build_hacky_list(credit_list) -- account for the visible portion scroll_height = math.max(0, scroll_height - 6.9) local fs = "image[1.5,0.6;2.5,2.5;" .. core.formspec_escape(logofile) .. "]" .. "style[label_button;border=false]" .. "button[0.1,3.4;5.3,0.5;label_button;" .. core.formspec_escape("SussyCraft 0.8") .. "]" .. "button[1.5,4.1;2.5,0.8;homepage;Privacy Policy]" .. "scroll_container[5.5,0.1;9.5,6.9;scroll_credits;vertical;" .. tostring(scroll_height / 1000) .. "]" .. credit_fs .. "scroll_container_end[]".. "scrollbar[15,0.1;0.4,6.9;vertical;scroll_credits;0]" -- Render information fs = fs .. "style[label_button2;border=false]" .. "button[0.1,6;5.3,1;label_button2;" .. fgettext("Active renderer:") .. "\n" .. core.formspec_escape(core.get_screen_info().render_info) .. "]" if PLATFORM == "Android" then else end return fs, "size[15.5,7.1,false]real_coordinates[true]" end, cbf_button_handler = function(this, fields, name, tabdata) if fields.homepage then core.open_url("https://cubesoftware.xyz/sussycraft/privacy.html") end if fields.share_debug then local path = core.get_user_path() .. DIR_DELIM .. "debug.txt" core.share_file(path) end if fields.userdata then core.open_dir(core.get_user_path()) end end, }