local function get_credits() local f = assert(io.open(core.get_mainmenu_path() .. "/credits.json")) local json = core.parse_json(f:read("*all")) f:close() return json end local function get_renderer_info() local out = {} local renderer = core.get_active_renderer() if renderer:sub(1, 7) == "OpenGL " then renderer = renderer:sub(8) end local m = renderer:match("^[%d.]+") if not m then m = renderer:match("^ES [%d.]+") end out[#out + 1] = m or renderer out[#out + 1] = core.get_active_driver():lower() out[#out + 1] = core.get_active_irrlicht_device():upper() return table.concat(out, " / ") end return function(state) imfs.begin(size.x, size.y) :padding(0, 0) :bgcolor(theme.styles.bg_color, true) if not state.credits then local credits = get_credits() state.credits = table.concat({ "", "", "", "", "", fgettext_ne("Core Developers"), "\n", core.hypertext_escape(table.concat(credits.core_developers, "\n")), "\n\n", fgettext_ne("Core Team"), "\n", core.hypertext_escape(table.concat(credits.core_team, "\n")), "\n\n", fgettext_ne("Active Contributors"), "\n", core.hypertext_escape(table.concat(credits.contributors, "\n")), "\n\n", fgettext_ne("Previous Core Developers"), "\n", core.hypertext_escape(table.concat(credits.previous_core_developers, "\n")), "\n\n", fgettext_ne("Previous Contributors"), "\n", core.hypertext_escape(table.concat(credits.previous_contributors, "\n")), "\n\n", }):gsub("%[.-%]", "%1"):gsub("\\<.-\\>", "%1") end local header_height = size.x * (72/672) imfs.image(0, 0.2, size.x, header_height, default_textures.."menu_header.png") imfs.hypertext(0, header_height + 0.3, "100%", 0.5, "Version "..version.string.."") imfs.hypertext(0, header_height + 0.9, "100%", "100% - "..(header_height + 0.9), state.credits) imfs.button("100% - 2.2", 0.2, 2, 0.75, "Back") :onclick(function() show_meta_menu() end) imfs.button(0.2, 0.2, 3, 0.75, "API reference") :onclick(function() end) imfs.button(0.2, 1.05, 3, 0.75, "Website") :onclick(function() core.open_url("https://luanti.org") end) imfs.button(0.2, 1.9, 3, 0.75, "Open data directory") :onclick(function() core.open_dir(core.get_user_path()) end) imfs.box(0, "100% - 0.45", 6, 0.45, theme.styles.bg_color) imfs.label(0.2, "100% - 0.225", fgettext_ne("Active renderer:").." "..get_renderer_info()) local offset = math.abs(size.x - size.y) imfs.image(size.x > size.y and offset / 2 or 0, size.x < size.y and offset / 2 or 0, math.min(size.x, size.y), math.min(size.x, size.y), default_textures.."logo.png^[opacity:32") return imfs.end_() end