diff options
| author | Vanessa Ezekowitz <vanessaezekowitz@gmail.com> | 2017-01-26 06:18:37 -0500 | 
|---|---|---|
| committer | Vanessa Ezekowitz <vanessaezekowitz@gmail.com> | 2017-01-26 06:18:37 -0500 | 
| commit | 1773af6868878f240a70b624be1fa27e7024c644 (patch) | |
| tree | 2b29f473f7a78ea873660e47cf80e4a669ffc299 /init.lua | |
| parent | 1c7f403f2978bd880b094bbe51a76aeb3c76f592 (diff) | |
| download | unifieddyes-1773af6868878f240a70b624be1fa27e7024c644.tar unifieddyes-1773af6868878f240a70b624be1fa27e7024c644.tar.gz unifieddyes-1773af6868878f240a70b624be1fa27e7024c644.tar.bz2 unifieddyes-1773af6868878f240a70b624be1fa27e7024c644.tar.xz unifieddyes-1773af6868878f240a70b624be1fa27e7024c644.zip | |
rework how split palettes are handled
Diffstat (limited to 'init.lua')
| -rw-r--r-- | init.lua | 113 | 
1 files changed, 60 insertions, 53 deletions
| @@ -39,24 +39,37 @@ else  	S = function(s) return s end  end -unifieddyes.hue_to_idx = { -	red = 2, -	orange = 3, -	yellow = 4, -	lime = 5, -	green = 6, -	aqua = 7, -	cyan = 8, -	skyblue = 9, -	blue = 10, -	violet = 11, -	magenta = 12, -	redviolet = 13, - -	grey = 1 +-- helper functions for other mods that use this one + +local HUES = { +	"red", +	"orange", +	"yellow", +	"lime", +	"green", +	"aqua", +	"cyan", +	"skyblue", +	"blue", +	"violet", +	"magenta", +	"redviolet"  } --- helper functions for other mods that use this one +local HUES2 = { +	"Red", +	"Orange", +	"Yellow", +	"Lime", +	"Green", +	"Aqua", +	"Cyan", +	"Sky-blue", +	"Blue", +	"Violet", +	"Magenta", +	"Red-violet" +}  -- code borrowed from homedecor @@ -86,7 +99,8 @@ end  -- code borrowed from cheapie's plasticbox mod -function unifieddyes.getpaletteidx(color) +function unifieddyes.getpaletteidx(color, colorfdir) +	local origcolor = color  	local aliases = {  		["pink"] = "light_red",  		["brown"] = "dark_orange", @@ -134,9 +148,14 @@ function unifieddyes.getpaletteidx(color)  	end  	color = aliases[color] or color +	local idx  	if grayscale[color] then -		return(grayscale[color]) +		if colorfdir then +			return (grayscale[color] * 32), 0 +		else +			return grayscale[color], 0 +		end  	end  	local shade = "" @@ -156,7 +175,11 @@ function unifieddyes.getpaletteidx(color)  	end  	if hues[color] and shades[shade] then -		return(hues[color] * 8 + shades[shade]) +		if not colorfdir then +			return (hues[color] * 8 + shades[shade]), hues[color] +		else +			return (shades[shade] * 32), hues[color] +		end  	end  end @@ -169,14 +192,16 @@ function unifieddyes.on_destruct(pos)  end  function unifieddyes.on_rightclick(pos, node, player, stack, pointed_thing, newnode) +	local colorfdir = (minetest.registered_nodes[minetest.get_node(pos).name].paramtype2 == "colorfacedir")  	local name = player:get_player_name()  	if minetest.is_protected(pos,name) and not minetest.check_player_privs(name,{protection_bypass=true}) then  		minetest.record_protection_violation(pos,name)  		return stack  	end  	local name = stack:get_name() +	local pos2 = unifieddyes.select_node(pointed_thing) +	local paletteidx, hue = unifieddyes.getpaletteidx(name, colorfdir) -	local paletteidx = unifieddyes.getpaletteidx(name)  	if paletteidx then  		local meta = minetest.get_meta(pos) @@ -192,18 +217,30 @@ function unifieddyes.on_rightclick(pos, node, player, stack, pointed_thing, newn  		meta:set_string("dye",name)  		stack:take_item()  		node.param2 = paletteidx + +		local oldpaletteidx, oldhue = unifieddyes.getpaletteidx(prevdye, colorfdir) +  		if newnode then  			node.name = newnode +			if colorfdir then  -- we probably need to change the color of the node too +				if oldhue ~=0 then -- it's colored, not grey +					node.name = string.gsub(node.name, "_"..HUES[oldhue], "_"..HUES[hue]) +				else +					node.name = string.gsub(node.name, "_grey", "_"..HUES[hue]) +				end +			end  			minetest.swap_node(pos, node)  		else +			if colorfdir then  -- we probably need to change the color of the node too +				node.name = string.gsub(node.name, HUES[oldhue], HUES[hue]) +			end  			minetest.swap_node(pos, node)  		end  	else -		local pos2 = unifieddyes.select_node(pointed_thing)  		if unifieddyes.is_buildable_to(player:get_player_name(), pos2) and  		  minetest.registered_nodes[name] then -			local oldnode = minetest.registered_nodes[stack:get_name()] -			minetest.set_node(pos2, oldnode) +			local placeable_node = minetest.registered_nodes[stack:get_name()] +			minetest.set_node(pos2, placeable_node)  			stack:take_item()  			return stack  		end @@ -352,36 +389,6 @@ minetest.register_craft( {  -- Brightness levels in the textures are 33% ("dark"), 66% ("medium"),  -- 100% ("full", but not so-named), and 150% ("light"). -local HUES = { -	"red", -	"orange", -	"yellow", -	"lime", -	"green", -	"aqua", -	"cyan", -	"skyblue", -	"blue", -	"violet", -	"magenta", -	"redviolet" -} - -local HUES2 = { -	"Red", -	"Orange", -	"Yellow", -	"Lime", -	"Green", -	"Aqua", -	"Cyan", -	"Sky-blue", -	"Blue", -	"Violet", -	"Magenta", -	"Red-violet" -} -  for i = 1, 12 do | 
