expand old split-89 palette to 176 colors

(by adding more hues, now has all 24 in 7 shades each
plus 5 greys)
This commit is contained in:
Vanessa Dannenberg 2018-09-12 22:29:57 -04:00
parent 078a998d29
commit 3eb3a9a330
27 changed files with 25 additions and 85 deletions

110
init.lua

@ -41,26 +41,6 @@ else
S = function(s) return s end S = function(s) return s end
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/ -- the names of the various colors here came from http://www.procato.com/rgb+index/
unifieddyes.HUES_EXTENDED = { unifieddyes.HUES_EXTENDED = {
@ -90,6 +70,13 @@ unifieddyes.HUES_EXTENDED = {
{ "crimson", 0xff, 0x00, 0x40 } { "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 = { unifieddyes.HUES_WALLMOUNTED = {
"red", "red",
"orange", "orange",
@ -162,8 +149,6 @@ unifieddyes.player_last_right_clicked = {}
unifieddyes.palette_has_color = {} unifieddyes.palette_has_color = {}
unifieddyes.player_showall = {} 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, -- if a node with a palette is placed in the world,
-- but the itemstack used to place it has no palette_index (color byte), -- but the itemstack used to place it has no palette_index (color byte),
-- create something appropriate to make it officially white. -- create something appropriate to make it officially white.
@ -238,6 +223,7 @@ end
-- This helper function creates a colored itemstack -- This helper function creates a colored itemstack
function unifieddyes.make_colored_itemstack(item, palette, color) function unifieddyes.make_colored_itemstack(item, palette, color)
print(item, palette, color)
local paletteidx = unifieddyes.getpaletteidx(color, palette) local paletteidx = unifieddyes.getpaletteidx(color, palette)
local stack = ItemStack(item) local stack = ItemStack(item)
stack:get_meta():set_int("palette_index", paletteidx) stack:get_meta():set_int("palette_index", paletteidx)
@ -247,13 +233,15 @@ end
-- these helper functions register all of the recipes needed to create colored -- these helper functions register all of the recipes needed to create colored
-- nodes with any of the dyes supported by that node's palette. -- 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
print(craft.output, craft.output_prefix, craft.output_suffix, h, hue, sat, val)
local color = "" local color = ""
if val then if val then
if craft.palette ~= "extended" then if craft.palette == "wallmounted" then
color = val..hue..sat color = val..hue..sat
else else
color = val..hue[1]..sat color = val..hue..sat
end end
else else
color = hue -- if val is nil, then it's grey. color = hue -- if val is nil, then it's grey.
@ -294,7 +282,7 @@ local function register_c(craft, hue, sat, val)
end end
function unifieddyes.register_color_craft(craft) function unifieddyes.register_color_craft(craft)
local hues_table = unifieddyes.HUES local hues_table = unifieddyes.HUES_EXTENDED
local sats_table = unifieddyes.SATS local sats_table = unifieddyes.SATS
local vals_table = unifieddyes.VALS local vals_table = unifieddyes.VALS
local greys_table = unifieddyes.GREYS local greys_table = unifieddyes.GREYS
@ -306,7 +294,6 @@ function unifieddyes.register_color_craft(craft)
sats_table = {""} sats_table = {""}
vals_table = unifieddyes.VALS vals_table = unifieddyes.VALS
elseif craft.palette == "extended" then elseif craft.palette == "extended" then
hues_table = unifieddyes.HUES_EXTENDED
vals_table = unifieddyes.VALS_EXTENDED vals_table = unifieddyes.VALS_EXTENDED
greys_table = unifieddyes.GREYS_EXTENDED greys_table = unifieddyes.GREYS_EXTENDED
end end
@ -391,10 +378,10 @@ end
function unifieddyes.get_hsv(name) -- expects a node/item name function unifieddyes.get_hsv(name) -- expects a node/item name
local hue = "" local hue = ""
local a,b local a,b
for _, i in ipairs(unifieddyes.HUES) do for _, i in ipairs(unifieddyes.HUES_EXTENDED) do
a,b = string.find(name, "_"..i) a,b = string.find(name, "_"..i[1])
if a and not ( string.find(name, "_redviolet") and i == "red" ) then if a then
hue = i hue = i[1]
break break
end end
end end
@ -424,9 +411,10 @@ end
-- in the function below, color is just a color string, while -- in the function below, color is just a color string, while
-- palette_type can be: -- palette_type can be:
-- --
-- "split" = 89 color palette split into pieces for colorfacedir
-- "wallmounted" = 32-color abridged palette
-- "extended" = 256 color 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) function unifieddyes.getpaletteidx(color, palette_type)
@ -475,24 +463,6 @@ function unifieddyes.getpaletteidx(color, palette_type)
["black"] = 4, ["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 = { local hues_extended = {
["red"] = 0, ["red"] = 0,
["vermilion"] = 1, ["vermilion"] = 1,
@ -627,19 +597,8 @@ function unifieddyes.getpaletteidx(color, palette_type)
shade = "light" shade = "light"
end end
if palette_type == "split" then -- it's colorfacedir if palette_type == "split" then -- it's colorfacedir
if hues_extended[color] and shades[shade] then
-- If using this palette, translate new color names back to old. return (shades[shade] * 32), hues_extended[color]+1
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]
end end
elseif palette_type == "extended" then elseif palette_type == "extended" then
if hues_extended[color] and shades_extended[shade] then if hues_extended[color] and shades_extended[shade] then
@ -730,7 +689,7 @@ function unifieddyes.on_airbrush(itemstack, player, pointed_thing)
newcolor = string.sub(painting_with, 5) newcolor = string.sub(painting_with, 5)
else else
if hue ~= 0 then if hue ~= 0 then
newcolor = unifieddyes.HUES[hue] newcolor = unifieddyes.HUES_EXTENDED[hue][1]
else else
newcolor = "grey" newcolor = "grey"
end end
@ -743,10 +702,6 @@ function unifieddyes.on_airbrush(itemstack, player, pointed_thing)
end end
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) name = modname..":"..string.gsub(nodename2, oldcolor, newcolor)
if not minetest.registered_items[name] then if not minetest.registered_items[name] then
@ -813,7 +768,7 @@ function unifieddyes.color_to_name(param2, def)
local h = color - v * 8 local h = color - v * 8
return unifieddyes.VALS[v]..unifieddyes.HUES_WALLMOUNTED[h+1] 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" -- palette names in this mode are always "unifieddyes_palette_COLORs.png"
local s = string.sub(def.palette, 21) local s = string.sub(def.palette, 21)
@ -1206,14 +1161,6 @@ for _, h in ipairs(unifieddyes.HUES_EXTENDED) do
end end
end end
minetest.register_alias("unifieddyes:"..val..hue, "dye:"..val..hue) 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 if v > 3 then -- also register the low-sat version
@ -1234,13 +1181,6 @@ for _, h in ipairs(unifieddyes.HUES_EXTENDED) do
groups = { dye=1, not_in_creative_inventory=1 }, groups = { dye=1, not_in_creative_inventory=1 },
}) })
minetest.register_alias("unifieddyes:"..val..hue.."_s50", "dye:"..val..hue.."_s50") 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 end
end end

Binary file not shown.

After

Width:  |  Height:  |  Size: 93 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 91 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 99 B

After

Width:  |  Height:  |  Size: 91 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 93 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 91 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 91 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 101 B

After

Width:  |  Height:  |  Size: 91 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 93 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 91 B

After

Width:  |  Height:  |  Size: 91 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 91 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 91 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 99 B

After

Width:  |  Height:  |  Size: 93 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 101 B

After

Width:  |  Height:  |  Size: 91 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 91 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 93 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 99 B

After

Width:  |  Height:  |  Size: 91 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 99 B

After

Width:  |  Height:  |  Size: 91 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 99 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 91 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 91 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 99 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 91 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 93 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 91 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 99 B

After

Width:  |  Height:  |  Size: 91 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 101 B

After

Width:  |  Height:  |  Size: 91 B