From d07e415b3752c2e96a2a1fe27b023ca23abebd51 Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Tue, 6 Apr 2021 11:55:21 +0200 Subject: [PATCH] Add credits screen --- mods/HUD/mcl_credits/init.lua | 140 ++++++++++++++---- mods/HUD/mcl_credits/mod.conf | 1 - .../mcl_credits/textures/mineclone2_icon.png | Bin 0 -> 3961 bytes 3 files changed, 113 insertions(+), 28 deletions(-) create mode 100644 mods/HUD/mcl_credits/textures/mineclone2_icon.png diff --git a/mods/HUD/mcl_credits/init.lua b/mods/HUD/mcl_credits/init.lua index 05e7aeff45..a53ebbba94 100644 --- a/mods/HUD/mcl_credits/init.lua +++ b/mods/HUD/mcl_credits/init.lua @@ -2,22 +2,22 @@ mcl_credits = { players = {}, } -mcl_credits.description = "A faithful Open Source imitation of Minecraft" +mcl_credits.description = "A faithful Open Source clone of Minecraft" --- Sub-lists are sorted by number of commits +-- Sub-lists are sorted by number of commits, but the list should not be rearranged (-> new contributors are just added at the end of the list) mcl_credits.people = { - {"Creator of MineClone", { + {"Creator of MineClone", 0x0A9400, { "davedevils", }}, - {"Creator of MineClone2", { + {"Creator of MineClone2", 0xFBF837, { "Wuzzy", }}, - {"Maintainers", { + {"Maintainers", 0xFF51D5, { "Fleckenstein", "kay27", "oilboi", }}, - {"Developers", { + {"Developers", 0xF84355, { "bzoss", "AFCMS", "epCode", @@ -28,7 +28,7 @@ mcl_credits.people = { "Nicu", "aligator", }}, - {"Contributors", { + {"Contributors", 0x52FF00, { "Code-Sploit", "Laurent Rocher", "HimbeerserverDE", @@ -55,11 +55,11 @@ mcl_credits.people = { "nickolas360", "yutyo", }}, - {"3D Models", { + {"3D Models", 0x0019FF, { "22i", "tobyplowy", }}, - {"Textures", { + {"Textures", 0xFF9705, { "XSSheep", "kingoscargames", "leorockway", @@ -67,39 +67,125 @@ mcl_credits.people = { }}, } +local function add_hud_element(def, huds, y) + def.alignment = {x = 0, y = 0} + def.position = {x = 0.5, y = 0} + def.offset = {x = 0, y = y} + def.z_index = 1001 + local id = huds.player:hud_add(def) + table.insert(huds.ids, id) + huds.moving[id] = y + return id +end + function mcl_credits.show(player) local name = player:get_player_name() if mcl_credits.players[name] then return end - local hud_list = { - player:hud_add({ - hud_elem_type = "image", - text = "menu_bg.png", - position = {x = 0, y = 0}, - alignment = {x = 1, y = 1}, - scale = {x = -100, y = -100}, - z_index = 1000, - }) + local huds = { + new = true, -- workaround for MT < 5.5 (sending hud_add and hud_remove in the same tick) + player = player, + moving = {}, + ids = { + player:hud_add({ + hud_elem_type = "image", + text = "menu_bg.png", + position = {x = 0, y = 0}, + alignment = {x = 1, y = 1}, + scale = {x = -100, y = -100}, + z_index = 1000, + }), + player:hud_add({ + hud_elem_type = "text", + text = "Sneak to skip", + position = {x = 1, y = 1}, + alignment = {x = -1, y = -1}, + offset = {x = -5, y = -5}, + z_index = 1001, + number = 0xFFFFFF, + }) + }, } - mcl_credits.players[name] = hud_list + add_hud_element({ + hud_elem_type = "image", + text = "mineclone2_logo.png", + scale = {x = 1, y = 1}, + }, huds, 300, 0) + add_hud_element({ + hud_elem_type = "text", + text = mcl_credits.description, + number = 0x757575, + scale = {x = 5, y = 5}, + }, huds, 350, 0) + local y = 450 + for _, group in ipairs(mcl_credits.people) do + add_hud_element({ + hud_elem_type = "text", + text = group[1], + number = group[2], + scale = {x = 3, y = 3}, + }, huds, y, 0) + y = y + 25 + for _, name in ipairs(group[3]) do + y = y + 25 + add_hud_element({ + hud_elem_type = "text", + text = name, + number = 0xFFFFFF, + scale = {x = 1, y = 1}, + }, huds, y, 0) + end + y = y + 200 + end + huds.icon = add_hud_element({ + hud_elem_type = "image", + text = "mineclone2_icon.png", + scale = {x = 1, y = 1}, + }, huds, y) + mcl_credits.players[name] = huds end function mcl_credits.hide(player) local name = player:get_player_name() - local list = mcl_credits.players[name] - if list then - for _, id in pairs(list) do + local huds = mcl_credits.players[name] + if huds then + for _, id in pairs(huds.ids) do player:hud_remove(id) end end mcl_credits.players[name] = nil end -controls.register_on_press(function(player, key) - if key == "sneak" then - mcl_credits.hide(player) - elseif key == "aux1" then - mcl_credits.show(player) +minetest.register_on_leaveplayer(function(player) + mcl_credits.players[player:get_player_name()] = nil +end) + +minetest.register_globalstep(function(dtime) + for _, huds in pairs(mcl_credits.players) do + local player = huds.player + if not huds.new and player:get_player_control().sneak then + mcl_credits.hide(player) + else + local moving = {} + local any + for id, y in pairs(huds.moving) do + y = y - 1 + if y > -100 then + if id == huds.icon then + y = math.max(400, y) + else + any = true + end + player:hud_change(id, "offset", {x = 0, y = y}) + moving[id] = y + end + end + if not any then + mcl_credits.hide(player) + end + huds.moving = moving + end + huds.new = false end end) diff --git a/mods/HUD/mcl_credits/mod.conf b/mods/HUD/mcl_credits/mod.conf index b5532cd30d..3df6370afc 100644 --- a/mods/HUD/mcl_credits/mod.conf +++ b/mods/HUD/mcl_credits/mod.conf @@ -1,4 +1,3 @@ name = mcl_credits author = Fleckenstein description = Show a HUD containing the credits -depends = controls diff --git a/mods/HUD/mcl_credits/textures/mineclone2_icon.png b/mods/HUD/mcl_credits/textures/mineclone2_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..e479dfff5a55bf28d90056e968246e803aad0297 GIT binary patch literal 3961 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 Tj70