From 35ef2ecb84171427142a9627661050c46eaa75a3 Mon Sep 17 00:00:00 2001 From: ywang Date: Sun, 27 Dec 2020 21:25:42 +0100 Subject: Changes to textures and crafting recipes; code cleanup * Use texture overlays instead of a texture for each firework type and animation color * Simplified crafting recipes with dye, paper, and gunpowder * Clean up code * Optimized textures using optipng --- init.lua | 292 +++++++++++---------------- textures/anim_blue_star.png | Bin 189 -> 0 bytes textures/anim_green_star.png | Bin 189 -> 0 bytes textures/anim_red_star.png | Bin 189 -> 0 bytes textures/anim_yellow_star.png | Bin 189 -> 0 bytes textures/rocket_ball.png | Bin 3156 -> 0 bytes textures/rocket_custom_red.png | Bin 3076 -> 0 bytes textures/rocket_default.png | Bin 2558 -> 169 bytes textures/rocket_default_blue.png | Bin 3150 -> 898 bytes textures/rocket_default_blue_white_red.png | Bin 3084 -> 890 bytes textures/rocket_default_green.png | Bin 3137 -> 899 bytes textures/rocket_default_green_yellow_red.png | Bin 3060 -> 837 bytes textures/rocket_default_red.png | Bin 3082 -> 898 bytes textures/rocket_default_white.png | Bin 2671 -> 753 bytes textures/rocket_default_yellow.png | Bin 3176 -> 860 bytes textures/rocket_love.png | Bin 2564 -> 0 bytes 16 files changed, 113 insertions(+), 179 deletions(-) delete mode 100644 textures/anim_blue_star.png delete mode 100644 textures/anim_green_star.png delete mode 100644 textures/anim_red_star.png delete mode 100644 textures/anim_yellow_star.png delete mode 100644 textures/rocket_ball.png delete mode 100644 textures/rocket_custom_red.png delete mode 100644 textures/rocket_love.png diff --git a/init.lua b/init.lua index 9e5aa3d..7024cef 100644 --- a/init.lua +++ b/init.lua @@ -14,38 +14,61 @@ fireworkz.settings.max_hear_distance_fuse = tonumber(settings:get("max_hear_dist fireworkz.settings.max_hear_distance_launch = tonumber(settings:get("max_hear_distance_launch")) or 13 fireworkz.settings.max_hear_distance_bang = tonumber(settings:get("max_hear_distance_bang")) or 90 +local color_map = { + blue = "cyan", + green = "lime", +} + +local figure_map = { + default = "yellow", + ball = "magenta", + love = "red" +} + +local figure_ingredient_map = { + --[[ + 1 2 3 + 4 x 5 + 6 x 7 + ]] + default = {false, true}, + ball = {true, true, true, true, true, true, true}, + love = {true, false, true, true, true}, +} + +local color_variants = {"red", "green", "blue", "yellow", "white"} +local figure_variants = {"default", "ball", "love"} + local variant_list = { - --{colour = "default", figure = "", form = "", desc = ""}, - {colour = "red", figure = "default", form = "", desc = S("Red")}, - {colour = "green", figure = "default", form = "", desc = S("Green")}, - {colour = "blue", figure = "default", form = "", desc = S("Blue")}, - {colour = "yellow", figure = "default", form = "", desc = S("Yellow")}, - {colour = "white", figure = "default", form = "", desc = S("White")}, - {colour = "red", figure = "ball", form = "", desc = S("Red")}, - {colour = "green", figure = "ball", form = "", desc = S("Green")}, - {colour = "blue", figure = "ball", form = "", desc = S("Blue")}, - {colour = "yellow", figure = "ball", form = "", desc = S("Yellow")}, - {colour = "white", figure = "ball", form = "", desc = S("White")}, - {colour = "red", figure = "custom", form = "love", desc = S("Red")}, - {colour = "blue_white_red", figure = "ball_default_love", form = "", desc = S("Blue-White-Love"), + {colour = "blue_white_red", figure = "ball_default_love", desc = S("Blue-White-Love"), rdt = { - {color = "blue", figure = "ball", form = ""}, - {color = "yellow", figure = "default", form = ""}, - {color = "red", figure = "custom", form = "love"}, + {color = "blue", figure = "ball"}, + {color = "yellow", figure = "default"}, + {color = "red", figure = "love"}, } }, - {colour = "green_yellow_red", figure = "ball_default_love", form = "", desc = S("Green-Yellow-Love"), + {colour = "green_yellow_red", figure = "ball_default_love", desc = S("Green-Yellow-Love"), rdt = { - {color = "green", figure = "ball", form = ""}, - {color = "yellow", figure = "default", form = ""}, - {color = "red", figure = "custom", form = "love"}, + {color = "green", figure = "ball"}, + {color = "yellow", figure = "default"}, + {color = "red", figure = "love"}, } }, } +for _, i in pairs(color_variants) do + local t = variant_list + local u = i:sub(1,1):upper()..i:sub(2) + for _, j in pairs(figure_variants) do + t[#t+1] = {colour = i, figure = j, desc = S(u)} + end +end + --Functions -local function default_figure(r) +local figures = {} + +function figures.default(r) local tab = {} local num = 1 for x=-r, r, 0.02 do @@ -64,10 +87,10 @@ local function default_figure(r) end end end - return tab + return tab, 2, 4 end -local function ball_figure(r) +function figures.ball(r) local tab = {} local num = 1 for x= -r, r, 0.01 do @@ -85,41 +108,38 @@ local function ball_figure(r) end end end - return tab + return tab, 4, 4 end -local function custom_figure(form) - local tab = {} - if form == "love" then - tab[1] = {x=0,y=0,z=0,v=60} - tab[2] = {x=0,y=0,z=-0.02,v=60} - tab[3] = {x=0.01,y=0,z=-0.03,v=60} - tab[4] = {x=0.02,y=0,z=-0.04,v=60} - tab[5] = {x=0.03,y=0,z=-0.04,v=60} - tab[6] = {x=0.04,y=0,z=-0.03,v=60} - tab[7] = {x=0.05,y=0,z=-0.02,v=60} - tab[8] = {x=0.05,y=0,z=-0.01,v=60} - tab[9] = {x=0.04,y=0,z=0,v=60} - tab[10] = {x=0.04,y=0,z=0.01,v=60} - tab[11] = {x=0.03,y=0,z=0.02,v=60} - tab[12] = {x=0.02,y=0,z=0.03,v=60} - tab[13] = {x=0.01,y=0,z=0.04,v=60} - tab[14] = {x=0,y=0,z=0.05,v=60} - tab[15] = {x=-0.01,y=0,z=0.04,v=60} - tab[16] = {x=-0.02,y=0,z=0.03,v=60} - tab[17] = {x=-0.03,y=0,z=0.02,v=60} - tab[18] = {x=-0.04,y=0,z=0.01,v=60} - tab[19] = {x=-0.04,y=0,z=0,v=60} - tab[20] = {x=-0.05,y=0,z=-0.01,v=60} - tab[21] = {x=-0.05,y=0,z=-0.02,v=60} - tab[22] = {x=-0.04,y=0,z=-0.03,v=60} - tab[23] = {x=-0.03,y=0,z=-0.04,v=60} - tab[24] = {x=-0.02,y=0,z=-0.04,v=60} - tab[25] = {x=-0.01,y=0,z=-0.03,v=60} - else - tab[1] = {x=0,y=0,z=0,v=0} - end - return tab +function figures.love(r) + local tab = { + {x=0,y=0,z=0,v=60}, + {x=0,y=0,z=-0.02,v=60}, + {x=0.01,y=0,z=-0.03,v=60}, + {x=0.02,y=0,z=-0.04,v=60}, + {x=0.03,y=0,z=-0.04,v=60}, + {x=0.04,y=0,z=-0.03,v=60}, + {x=0.05,y=0,z=-0.02,v=60}, + {x=0.05,y=0,z=-0.01,v=60}, + {x=0.04,y=0,z=0,v=60}, + {x=0.04,y=0,z=0.01,v=60}, + {x=0.03,y=0,z=0.02,v=60}, + {x=0.02,y=0,z=0.03,v=60}, + {x=0.01,y=0,z=0.04,v=60}, + {x=0,y=0,z=0.05,v=60}, + {x=-0.01,y=0,z=0.04,v=60}, + {x=-0.02,y=0,z=0.03,v=60}, + {x=-0.03,y=0,z=0.02,v=60}, + {x=-0.04,y=0,z=0.01,v=60}, + {x=-0.04,y=0,z=0,v=60}, + {x=-0.05,y=0,z=-0.01,v=60}, + {x=-0.05,y=0,z=-0.02,v=60}, + {x=-0.04,y=0,z=-0.03,v=60}, + {x=-0.03,y=0,z=-0.04,v=60}, + {x=-0.02,y=0,z=-0.04,v=60}, + {x=-0.01,y=0,z=-0.03,v=60}, + } + return tab, 7, 7 end -- Activate fireworks @@ -137,7 +157,7 @@ local function partcl_gen(pos, tab, size_min, size_max, colour) vertical = false, animation = {type="vertical_frames", aspect_w=9, aspect_h=9, length = 3.5,}, glow = 30, - texture = "anim_"..colour.."_star.png", + texture = "anim_white_star.png^[multiply:"..(color_map[colour] or colour), }) end end @@ -192,12 +212,9 @@ function rocket:on_step(dtime) minetest.sound_play("fireworkz_bang", {pos= self.object:get_pos(), max_hear_distance = fireworkz.settings.max_hear_distance_bang, gain = 3,}) for _, i in pairs(self.rdt) do local pos = self.object:getpos() - if i.figure == "ball" then - partcl_gen(pos, ball_figure(0.1), 4, 4, i.color) - elseif i.figure == "default" then - partcl_gen(pos, default_figure(0.1), 2, 4, i.color) - elseif i.figure == "custom" then - partcl_gen(pos, custom_figure(i.form), 7, 7, i.color) + if figures[i.figure] then + local t, min, max = figures[i.figure](0.1) + partcl_gen(pos, t, min, max, i.color) end end end @@ -215,20 +232,14 @@ for _, i in pairs(variant_list) do figure_desc = S("Ball") elseif i.figure == "ball_default_love" then figure_desc = S("Love Ball") - elseif i.figure == "custom" then - figure_desc = S("Custom") + elseif i.figure == "love" then + figure_desc = S("Love") end local figure = i.figure - if i.figure == "custom" and i.form == "love" then - figure = "love" - end - inv_image = "rocket_default_"..i.colour..".png" - if figure ~= "default" then - - inv_image = inv_image.."^rocket_"..figure..".png" - end - local rdt = i.rdt or {{color = i.colour, figure = i.figure, form = i.form},} + inv_image = ("rocket_default_%s.png^(rocket_default.png^[multiply:%s)"):format( + i.colour, figure_map[figure] or "white") + local rdt = i.rdt or {{color = i.colour, figure = i.figure},} rdt.texture = inv_image minetest.register_node("fireworkz:rocket_"..i.figure.."_"..i.colour, { description = S("Rocket").." (".. i.desc .. "|"..figure_desc..")", @@ -279,122 +290,45 @@ fireworkz.launch = function(pos, rdt) obj_ent.rdt = rdt end --- Craffitems - -minetest.register_craft({ - output = "fireworkz:rocket_default", - recipe = { - {"tnt:gunpowder"}, - {"default:paper"}, - {"default:coal_lump"} - }, -}) - -minetest.register_craft({ - output = "fireworkz:rocket_default_red", - recipe = { - {"default:tin_lump", "tnt:gunpowder", "dye:red"}, - {"", "default:paper", ""}, - {"", "default:coal_lump", ""} - }, -}) - -minetest.register_craft({ - output = "fireworkz:rocket_default_green", - recipe = { - {"default:tin_lump", "tnt:gunpowder", "dye:green"}, - {"", "default:paper", ""}, - {"", "default:coal_lump", ""} - }, -}) - -minetest.register_craft({ - output = "fireworkz:rocket_default_blue", - recipe = { - {"default:tin_lump", "tnt:gunpowder", "dye:blue"}, - {"", "default:paper", ""}, - {"", "default:coal_lump", ""} - }, -}) - -minetest.register_craft({ - output = "fireworkz:rocket_default_yellow", - recipe = { - {"default:tin_lump", "tnt:gunpowder", "dye:yellow"}, - {"", "default:paper", ""}, - {"", "default:coal_lump", ""} - }, -}) - -minetest.register_craft({ - output = "fireworkz:rocket_default_white", - recipe = { - {"default:tin_lump", "tnt:gunpowder", "dye:white"}, - {"", "default:paper", ""}, - {"", "default:coal_lump", ""} - }, -}) - -minetest.register_craft({ - output = "fireworkz:rocket_ball_red", - recipe = { - {"default:iron_lump", "tnt:gunpowder", "dye:red"}, - {"", "default:paper", ""}, - {"", "default:coal_lump", ""} - }, -}) - -minetest.register_craft({ - output = "fireworkz:rocket_ball_green", - recipe = { - {"default:iron_lump", "tnt:gunpowder", "dye:green"}, - {"", "default:paper", ""}, - {"", "default:coal_lump", ""} - }, -}) - -minetest.register_craft({ - output = "fireworkz:rocket_ball_blue", - recipe = { - {"default:iron_lump", "tnt:gunpowder", "dye:blue"}, - {"", "default:paper", ""}, - {"", "default:coal_lump", ""} - }, -}) - -minetest.register_craft({ - output = "fireworkz:rocket_ball_yellow", - recipe = { - {"default:iron_lump", "tnt:gunpowder", "dye:yellow"}, - {"", "default:paper", ""}, - {"", "default:coal_lump", ""} - }, -}) +for k,v in pairs {green = "green", orange = "yellow", red = "red", violet = "blue"} do + minetest.register_alias("fireworks:"..k, "fireworkz:rocket_default"..v) +end -minetest.register_craft({ - output = "fireworkz:rocket_ball_white", - recipe = { - {"default:iron_lump", "tnt:gunpowder", "dye:white"}, - {"", "default:paper", ""}, - {"", "default:coal_lump", ""} - }, -}) +-- Crafting + +for _, i in pairs(color_variants) do + for _, j in pairs(figure_variants) do + local m = figure_ingredient_map + local p = "default:paper" + if m[j] then + m = m[j] + minetest.register_craft{ + output = ("fireworkz:rocket_%s_%s"):format(j, i), + recipe = { + {m[1] and p or "", m[2] and p or "", m[3] and p or ""}, + {m[4] and p or "", "tnt:gunpowder", m[5] and p or ""}, + {m[6] and p or "", "dye:"..i, m[7] and p or ""}, + } + } + end + end +end minetest.register_craft({ output = "fireworkz:rocket_ball_default_love_blue_white_red", recipe = { - {"default:mese_crystal", "tnt:gunpowder", "dye:blue"}, - {"dye:white", "default:paper", ""}, - {"", "default:coal_lump", ""} + {"dye:blue", "dye:white", "dye:red"}, + {"default:paper", "tnt:gunpowder", "default:paper"}, + {"default:paper", "default:paper", "default:paper"} }, }) minetest.register_craft({ output = "fireworkz:rocket_ball_default_love_green_yellow_red", recipe = { - {"default:diamond", "tnt:gunpowder", "dye:green"}, - {"dye:yellow", "default:paper", "dye:red"}, - {"", "default:coal_lump", ""} + {"dye:green", "dye:yellow", "dye:red"}, + {"default:paper", "tnt:gunpowder", "default:paper"}, + {"default:paper", "default:paper", "default:paper"} }, }) diff --git a/textures/anim_blue_star.png b/textures/anim_blue_star.png deleted file mode 100644 index 0de81ec..0000000 Binary files a/textures/anim_blue_star.png and /dev/null differ diff --git a/textures/anim_green_star.png b/textures/anim_green_star.png deleted file mode 100644 index ea54db3..0000000 Binary files a/textures/anim_green_star.png and /dev/null differ diff --git a/textures/anim_red_star.png b/textures/anim_red_star.png deleted file mode 100644 index ae29d94..0000000 Binary files a/textures/anim_red_star.png and /dev/null differ diff --git a/textures/anim_yellow_star.png b/textures/anim_yellow_star.png deleted file mode 100644 index 22bde83..0000000 Binary files a/textures/anim_yellow_star.png and /dev/null differ diff --git a/textures/rocket_ball.png b/textures/rocket_ball.png deleted file mode 100644 index 1805b31..0000000 Binary files a/textures/rocket_ball.png and /dev/null differ diff --git a/textures/rocket_custom_red.png b/textures/rocket_custom_red.png deleted file mode 100644 index 9af5780..0000000 Binary files a/textures/rocket_custom_red.png and /dev/null differ diff --git a/textures/rocket_default.png b/textures/rocket_default.png index 89542bc..4ab5478 100644 Binary files a/textures/rocket_default.png and b/textures/rocket_default.png differ diff --git a/textures/rocket_default_blue.png b/textures/rocket_default_blue.png index abcf9f3..b9b878d 100644 Binary files a/textures/rocket_default_blue.png and b/textures/rocket_default_blue.png differ diff --git a/textures/rocket_default_blue_white_red.png b/textures/rocket_default_blue_white_red.png index 2972bc8..aa352ab 100644 Binary files a/textures/rocket_default_blue_white_red.png and b/textures/rocket_default_blue_white_red.png differ diff --git a/textures/rocket_default_green.png b/textures/rocket_default_green.png index da92cbc..46cee97 100644 Binary files a/textures/rocket_default_green.png and b/textures/rocket_default_green.png differ diff --git a/textures/rocket_default_green_yellow_red.png b/textures/rocket_default_green_yellow_red.png index 6d7b70f..da756f9 100644 Binary files a/textures/rocket_default_green_yellow_red.png and b/textures/rocket_default_green_yellow_red.png differ diff --git a/textures/rocket_default_red.png b/textures/rocket_default_red.png index 2851774..6f1e46a 100644 Binary files a/textures/rocket_default_red.png and b/textures/rocket_default_red.png differ diff --git a/textures/rocket_default_white.png b/textures/rocket_default_white.png index e7c469a..a94ae9d 100644 Binary files a/textures/rocket_default_white.png and b/textures/rocket_default_white.png differ diff --git a/textures/rocket_default_yellow.png b/textures/rocket_default_yellow.png index 51aec3c..f181cc3 100644 Binary files a/textures/rocket_default_yellow.png and b/textures/rocket_default_yellow.png differ diff --git a/textures/rocket_love.png b/textures/rocket_love.png deleted file mode 100644 index 8945f8e..0000000 Binary files a/textures/rocket_love.png and /dev/null differ -- cgit v1.2.3