aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorywang <ywang@forksworld.de>2020-12-27 21:25:42 +0100
committerywang <ywang@forksworld.de>2020-12-27 21:25:42 +0100
commit35ef2ecb84171427142a9627661050c46eaa75a3 (patch)
tree092f67b131fc015d7ebaf34dbcb83b74bbb239e1
parent9bf29384b39fb9c617e9fa5fff8a29a5fd0fa52c (diff)
downloadfireworkz-35ef2ecb84171427142a9627661050c46eaa75a3.tar.gz
fireworkz-35ef2ecb84171427142a9627661050c46eaa75a3.tar.bz2
fireworkz-35ef2ecb84171427142a9627661050c46eaa75a3.zip
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
-rw-r--r--init.lua292
-rw-r--r--textures/anim_blue_star.pngbin189 -> 0 bytes
-rw-r--r--textures/anim_green_star.pngbin189 -> 0 bytes
-rw-r--r--textures/anim_red_star.pngbin189 -> 0 bytes
-rw-r--r--textures/anim_yellow_star.pngbin189 -> 0 bytes
-rw-r--r--textures/rocket_ball.pngbin3156 -> 0 bytes
-rw-r--r--textures/rocket_custom_red.pngbin3076 -> 0 bytes
-rw-r--r--textures/rocket_default.pngbin2558 -> 169 bytes
-rw-r--r--textures/rocket_default_blue.pngbin3150 -> 898 bytes
-rw-r--r--textures/rocket_default_blue_white_red.pngbin3084 -> 890 bytes
-rw-r--r--textures/rocket_default_green.pngbin3137 -> 899 bytes
-rw-r--r--textures/rocket_default_green_yellow_red.pngbin3060 -> 837 bytes
-rw-r--r--textures/rocket_default_red.pngbin3082 -> 898 bytes
-rw-r--r--textures/rocket_default_white.pngbin2671 -> 753 bytes
-rw-r--r--textures/rocket_default_yellow.pngbin3176 -> 860 bytes
-rw-r--r--textures/rocket_love.pngbin2564 -> 0 bytes
16 files changed, 113 insertions, 179 deletions
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
--- a/textures/anim_blue_star.png
+++ /dev/null
Binary files differ
diff --git a/textures/anim_green_star.png b/textures/anim_green_star.png
deleted file mode 100644
index ea54db3..0000000
--- a/textures/anim_green_star.png
+++ /dev/null
Binary files differ
diff --git a/textures/anim_red_star.png b/textures/anim_red_star.png
deleted file mode 100644
index ae29d94..0000000
--- a/textures/anim_red_star.png
+++ /dev/null
Binary files differ
diff --git a/textures/anim_yellow_star.png b/textures/anim_yellow_star.png
deleted file mode 100644
index 22bde83..0000000
--- a/textures/anim_yellow_star.png
+++ /dev/null
Binary files differ
diff --git a/textures/rocket_ball.png b/textures/rocket_ball.png
deleted file mode 100644
index 1805b31..0000000
--- a/textures/rocket_ball.png
+++ /dev/null
Binary files differ
diff --git a/textures/rocket_custom_red.png b/textures/rocket_custom_red.png
deleted file mode 100644
index 9af5780..0000000
--- a/textures/rocket_custom_red.png
+++ /dev/null
Binary files differ
diff --git a/textures/rocket_default.png b/textures/rocket_default.png
index 89542bc..4ab5478 100644
--- a/textures/rocket_default.png
+++ b/textures/rocket_default.png
Binary files differ
diff --git a/textures/rocket_default_blue.png b/textures/rocket_default_blue.png
index abcf9f3..b9b878d 100644
--- a/textures/rocket_default_blue.png
+++ b/textures/rocket_default_blue.png
Binary files differ
diff --git a/textures/rocket_default_blue_white_red.png b/textures/rocket_default_blue_white_red.png
index 2972bc8..aa352ab 100644
--- a/textures/rocket_default_blue_white_red.png
+++ b/textures/rocket_default_blue_white_red.png
Binary files differ
diff --git a/textures/rocket_default_green.png b/textures/rocket_default_green.png
index da92cbc..46cee97 100644
--- a/textures/rocket_default_green.png
+++ b/textures/rocket_default_green.png
Binary files differ
diff --git a/textures/rocket_default_green_yellow_red.png b/textures/rocket_default_green_yellow_red.png
index 6d7b70f..da756f9 100644
--- a/textures/rocket_default_green_yellow_red.png
+++ b/textures/rocket_default_green_yellow_red.png
Binary files differ
diff --git a/textures/rocket_default_red.png b/textures/rocket_default_red.png
index 2851774..6f1e46a 100644
--- a/textures/rocket_default_red.png
+++ b/textures/rocket_default_red.png
Binary files differ
diff --git a/textures/rocket_default_white.png b/textures/rocket_default_white.png
index e7c469a..a94ae9d 100644
--- a/textures/rocket_default_white.png
+++ b/textures/rocket_default_white.png
Binary files differ
diff --git a/textures/rocket_default_yellow.png b/textures/rocket_default_yellow.png
index 51aec3c..f181cc3 100644
--- a/textures/rocket_default_yellow.png
+++ b/textures/rocket_default_yellow.png
Binary files differ
diff --git a/textures/rocket_love.png b/textures/rocket_love.png
deleted file mode 100644
index 8945f8e..0000000
--- a/textures/rocket_love.png
+++ /dev/null
Binary files differ