summaryrefslogtreecommitdiff
path: root/unifieddyes/init.lua
diff options
context:
space:
mode:
Diffstat (limited to 'unifieddyes/init.lua')
-rw-r--r--unifieddyes/init.lua127
1 files changed, 38 insertions, 89 deletions
diff --git a/unifieddyes/init.lua b/unifieddyes/init.lua
index 09b156f..36007dd 100644
--- a/unifieddyes/init.lua
+++ b/unifieddyes/init.lua
@@ -41,26 +41,6 @@ else
S = function(s) return s end
end
--- helper functions for other mods that use this one
-
-unifieddyes.HUES = {
- "red",
- "orange",
- "yellow",
- "lime",
- "green",
- "aqua",
- "cyan",
- "skyblue",
- "blue",
- "violet",
- "magenta",
- "redviolet"
-}
-
-unifieddyes.HUES_WITH_GREY = table.copy(unifieddyes.HUES)
-table.insert(unifieddyes.HUES_WITH_GREY, "grey")
-
-- the names of the various colors here came from http://www.procato.com/rgb+index/
unifieddyes.HUES_EXTENDED = {
@@ -90,6 +70,13 @@ unifieddyes.HUES_EXTENDED = {
{ "crimson", 0xff, 0x00, 0x40 }
}
+unifieddyes.HUES_WITH_GREY = {}
+
+for _,i in ipairs(unifieddyes.HUES_EXTENDED) do
+ table.insert(unifieddyes.HUES_WITH_GREY, i[1])
+end
+table.insert(unifieddyes.HUES_WITH_GREY, "grey")
+
unifieddyes.HUES_WALLMOUNTED = {
"red",
"orange",
@@ -162,8 +149,6 @@ unifieddyes.player_last_right_clicked = {}
unifieddyes.palette_has_color = {}
unifieddyes.player_showall = {}
--- unifieddyes.player_last_right_clicked[placer:get_player_name()] = {pos = pos, node = node, def = def}
-
-- if a node with a palette is placed in the world,
-- but the itemstack used to place it has no palette_index (color byte),
-- create something appropriate to make it officially white.
@@ -215,9 +200,9 @@ function unifieddyes.generate_split_palette_nodes(name, def, drop)
local def2 = table.copy(def)
local desc_color = string.gsub(string.upper(string.sub(color, 1, 1))..string.sub(color, 2), "_", " ")
if string.sub(def2.description, -1) == ")" then
- def2.description = string.sub(def2.description, 1, -2)..", "..desc_color..")"
+ def2.description = string.sub(def2.description, 1, -2)..", "..desc_color.." shades)"
else
- def2.description = def2.description.."("..desc_color..")"
+ def2.description = def2.description.."("..desc_color.." shades)"
end
def2.palette = "unifieddyes_palette_"..color.."s.png"
def2.paramtype2 = "colorfacedir"
@@ -247,13 +232,14 @@ end
-- these helper functions register all of the recipes needed to create colored
-- nodes with any of the dyes supported by that node's palette.
-local function register_c(craft, hue, sat, val)
+local function register_c(craft, h, sat, val)
+ local hue = (type(h) == "table") and h[1] or h
local color = ""
if val then
- if craft.palette ~= "extended" then
+ if craft.palette == "wallmounted" then
color = val..hue..sat
else
- color = val..hue[1]..sat
+ color = val..hue..sat
end
else
color = hue -- if val is nil, then it's grey.
@@ -294,7 +280,7 @@ local function register_c(craft, hue, sat, val)
end
function unifieddyes.register_color_craft(craft)
- local hues_table = unifieddyes.HUES
+ local hues_table = unifieddyes.HUES_EXTENDED
local sats_table = unifieddyes.SATS
local vals_table = unifieddyes.VALS
local greys_table = unifieddyes.GREYS
@@ -306,7 +292,6 @@ function unifieddyes.register_color_craft(craft)
sats_table = {""}
vals_table = unifieddyes.VALS
elseif craft.palette == "extended" then
- hues_table = unifieddyes.HUES_EXTENDED
vals_table = unifieddyes.VALS_EXTENDED
greys_table = unifieddyes.GREYS_EXTENDED
end
@@ -391,10 +376,10 @@ end
function unifieddyes.get_hsv(name) -- expects a node/item name
local hue = ""
local a,b
- for _, i in ipairs(unifieddyes.HUES) do
- a,b = string.find(name, "_"..i)
- if a and not ( string.find(name, "_redviolet") and i == "red" ) then
- hue = i
+ for _, i in ipairs(unifieddyes.HUES_EXTENDED) do
+ a,b = string.find(name, "_"..i[1])
+ if a then
+ hue = i[1]
break
end
end
@@ -424,9 +409,10 @@ end
-- in the function below, color is just a color string, while
-- palette_type can be:
--
--- "split" = 89 color palette split into pieces for colorfacedir
--- "wallmounted" = 32-color abridged palette
-- "extended" = 256 color palette
+-- "split" = 200 color palette split into pieces for colorfacedir
+-- "wallmounted" = 32-color abridged palette
+
function unifieddyes.getpaletteidx(color, palette_type)
@@ -475,24 +461,6 @@ function unifieddyes.getpaletteidx(color, palette_type)
["black"] = 4,
}
- local hues = {
- ["red"] = 1,
- ["orange"] = 2,
- ["yellow"] = 3,
- ["lime"] = 4,
- ["green"] = 5,
- ["aqua"] = 6,
- ["spring"] = 6,
- ["cyan"] = 7,
- ["skyblue"] = 8,
- ["azure"] = 8,
- ["blue"] = 9,
- ["violet"] = 10,
- ["magenta"] = 11,
- ["redviolet"] = 12,
- ["rose"] = 12,
- }
-
local hues_extended = {
["red"] = 0,
["vermilion"] = 1,
@@ -544,6 +512,17 @@ function unifieddyes.getpaletteidx(color, palette_type)
["darks50"] = 7,
}
+ local shades_split = {
+ ["faint"] = 0,
+ [""] = 1,
+ ["s50"] = 2,
+ ["light"] = 3,
+ ["medium"] = 4,
+ ["mediums50"] = 5,
+ ["dark"] = 6,
+ ["darks50"] = 7,
+ }
+
local shades_extended = {
["faint"] = 0,
["pastel"] = 1,
@@ -627,19 +606,8 @@ function unifieddyes.getpaletteidx(color, palette_type)
shade = "light"
end
if palette_type == "split" then -- it's colorfacedir
-
- -- If using this palette, translate new color names back to old.
-
- if color == "spring" then
- color = "aqua"
- elseif color == "azure" then
- color = "skyblue"
- elseif color == "rose" then
- color = "redviolet"
- end
-
- if hues[color] and shades[shade] then
- return (shades[shade] * 32), hues[color]
+ if hues_extended[color] and shades_split[shade] then
+ return (shades_split[shade] * 32), hues_extended[color]+1
end
elseif palette_type == "extended" then
if hues_extended[color] and shades_extended[shade] then
@@ -730,7 +698,7 @@ function unifieddyes.on_airbrush(itemstack, player, pointed_thing)
newcolor = string.sub(painting_with, 5)
else
if hue ~= 0 then
- newcolor = unifieddyes.HUES[hue]
+ newcolor = unifieddyes.HUES_EXTENDED[hue][1]
else
newcolor = "grey"
end
@@ -743,10 +711,6 @@ function unifieddyes.on_airbrush(itemstack, player, pointed_thing)
end
end
- if newcolor == "spring" then newcolor = "aqua"
- elseif newcolor == "azure" then newcolor = "skyblue"
- elseif newcolor == "rose" then newcolor = "redviolet"
- end
name = modname..":"..string.gsub(nodename2, oldcolor, newcolor)
if not minetest.registered_items[name] then
@@ -813,16 +777,16 @@ function unifieddyes.color_to_name(param2, def)
local h = color - v * 8
return unifieddyes.VALS[v]..unifieddyes.HUES_WALLMOUNTED[h+1]
- elseif string.find(def.palette, "unifieddyes_palette") then -- it's the "split" 89-color palette
+ elseif string.find(def.palette, "unifieddyes_palette") then -- it's the split palette
-- palette names in this mode are always "unifieddyes_palette_COLORs.png"
local s = string.sub(def.palette, 21)
local color = string.sub(s, 1, string.find(s, "s.png")-1)
local v = math.floor(param2/32)
- if v == 0 then return "white" end
if color ~= "grey" then
- if v == 1 then return color
+ if v == 0 then return "faint_"..color
+ elseif v == 1 then return color
elseif v == 2 then return color.."_s50"
elseif v == 3 then return "light_"..color
elseif v == 4 then return "medium_"..color
@@ -1206,14 +1170,6 @@ for _, h in ipairs(unifieddyes.HUES_EXTENDED) do
end
end
minetest.register_alias("unifieddyes:"..val..hue, "dye:"..val..hue)
- if h[1] == "spring" then
- minetest.register_alias("unifieddyes:"..val.."aqua", "dye:"..val.."spring")
- elseif h[1] == "azure" then
- minetest.register_alias("unifieddyes:"..val.."skyblue", "dye:"..val.."azure")
- elseif h[1] == "rose" then
- minetest.register_alias("unifieddyes:"..val.."redviolet", "dye:"..val.."rose")
- end
-
if v > 3 then -- also register the low-sat version
@@ -1234,13 +1190,6 @@ for _, h in ipairs(unifieddyes.HUES_EXTENDED) do
groups = { dye=1, not_in_creative_inventory=1 },
})
minetest.register_alias("unifieddyes:"..val..hue.."_s50", "dye:"..val..hue.."_s50")
- if h[1] == "spring" then
- minetest.register_alias("unifieddyes:"..val.."aqua_s50", "dye:"..val.."spring_s50")
- elseif h[1] == "azure" then
- minetest.register_alias("unifieddyes:"..val.."skyblue_s50", "dye:"..val.."azure_s50")
- elseif h[1] == "rose" then
- minetest.register_alias("unifieddyes:"..val.."redviolet_s50", "dye:"..val.."rose_s50")
- end
end
end
end