diff options
Diffstat (limited to 'unifieddyes/init.lua')
-rw-r--r-- | unifieddyes/init.lua | 127 |
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 |