images for the combination dials

This commit is contained in:
FaceDeer 2022-08-26 19:45:10 -06:00
parent 29161d898b
commit fe663458b5
13 changed files with 61 additions and 34 deletions

View File

@ -2,7 +2,7 @@ local S = minetest.get_translator(minetest.get_current_modname())
local dimple_grow_time = df_farming.config.plant_growth_time * df_farming.config.dimple_cup_delay_multiplier / 4
local dimple_cup_groups = {snappy = 3, flammable = 2, plant = 1, not_in_creative_inventory = 1, attached_node = 1, color_blue = 1, basecolor_blue = 1, excolor_blue = 1, light_sensitive_fungus = 11, flower = 1, flora = 1, fire_encouragement=60,fire_flammability=100, compostability=70, handy=1,shearsy=1,hoey=1}
local dimple_cup_groups = {snappy = 3, flammable = 2, plant = 1, not_in_creative_inventory = 1, attached_node = 1, light_sensitive_fungus = 11, flower = 1, flora = 1, fire_encouragement=60,fire_flammability=100, compostability=70, handy=1,shearsy=1,hoey=1}
local register_dimple_cup = function(number)
local name = "df_farming:dimple_cup_"..tostring(number)
@ -60,6 +60,14 @@ for i = 1,4 do
register_dimple_cup(i)
end
local dimple_cup_groups_harvested = {}
for group, val in pairs(dimple_cup_groups) do
dimple_cup_groups_harvested[group] = val
end
dimple_cup_groups_harvested.color_blue = 1
dimple_cup_groups_harvested.basecolor_blue = 1
dimple_cup_groups_harvested.excolor_blue = 1
local name = "df_farming:dimple_cup_harvested"
local def = {
description = S("Dimple Cup"),
@ -73,7 +81,7 @@ local def = {
floodable = true,
is_ground_content = false,
buildable_to = true,
groups = dimple_cup_groups,
groups = dimple_cup_groups_harvested,
sounds = df_dependencies.sound_leaves(),
selection_box = {
type = "fixed",

View File

@ -8,6 +8,13 @@ local initialize = function(pos, meta)
if not meta:contains("key") then
local inv = meta:get_inventory()
inv:set_size("main", 8)
for i = 1, math.random(1,8) do
local item = ItemStack(df_underworld_items.colour_items[math.random(1,#df_underworld_items.colour_items)])
--item:set_count(math.random(1,4))
inv:add_item("main", item)
end
local next_seed = math.random() * 2^21
math.randomseed(pos.x + pos.y^8 + pos.z^16)
-- Key is consistent with location
@ -32,19 +39,16 @@ end
-- 3 4
local formspec_dial = function(identifier, state)
-- TODO replace label with image[]
-- TODO replace buttons with image buttons?
return "label[0.5,0;"..tostring(state).."]"
.. "button[0,0.25;0.5,0.5;"..identifier.."-;<]"
.. "button[1.5,0.25;0.5,0.5;"..identifier.."+;>]"
return "image[0.5,0;2,1;dfcaverns_chest_dial_"..tostring(state)..".png]"
.. "button[0,0.25;0.5,0.5;"..identifier.."+;<]"
.. "button[2.5,0.25;0.5,0.5;"..identifier.."-;>]"
end
local formspec_bar = function(horizontal, state, key)
-- TODO replace boxes with image[]
if horizontal then
return "box[0,0;".. tostring(key/14 * 2) ..",1;#222222ff]box[0,0.1;".. tostring(state/14 * 2)..",0.8;#ff00ffff]"
return "box[0,0;".. tostring(key/14 * 2 + 0.1) ..",1;#222222ff]box[0.1,0.1;".. tostring(state/14 * 2)..",0.85;#ff00ff44]"
end
return "box[0,0;1,".. tostring(key/14 * 2) ..";#222222ff]box[0.1,0;0.8,".. tostring(state/14 * 2)..";#ff00ffff]"
return "box[0,0;1,".. tostring(key/14 * 2 + 0.1) ..";#222222ff]box[0.1,0.1;0.85,".. tostring(state/14 * 2)..";#ff00ff44]"
end
local prefix = "df_underworld_items:puzzle_chest"
@ -61,22 +65,22 @@ local show_formspec = function(pos, node, clicker, itemstack, pointed_thing)
local playername = clicker:get_player_name()
local formname = prefix .. minetest.pos_to_string(pos)
local formspec = "formspec_version[6]"
.. "size[11,11.5]"
.. "container[3.5,1]"
.. "size[11,12]"
.. "container[1.5,0.5]"
.. "container[0,0]" .. formspec_dial("dial1", state[1]) .. "container_end[]"
.. "container[2,0]" .. formspec_dial("dial2", state[2]) .. "container_end[]"
.. "container[0,1]" .. formspec_dial("dial3", state[3]) .. "container_end[]"
.. "container[2,1]" .. formspec_dial("dial4", state[4]) .. "container_end[]"
.. "container[4.1,0]" .. formspec_bar(true, state_sum[1], key_sum[1]) .. "container_end[]"
.. "container[4.1,1]" .. formspec_bar(true, state_sum[2], key_sum[2]) .. "container_end[]"
.. "container[0.5,2.1]" .. formspec_bar(false, state_sum[3], key_sum[3]) .. "container_end[]"
.. "container[2.5,2.1]" .. formspec_bar(false, state_sum[4], key_sum[4]) .. "container_end[]"
.. "container[3,0]" .. formspec_dial("dial2", state[2]) .. "container_end[]"
.. "container[0,1.5]" .. formspec_dial("dial3", state[3]) .. "container_end[]"
.. "container[3,1.5]" .. formspec_dial("dial4", state[4]) .. "container_end[]"
.. "container[6.1,0]" .. formspec_bar(true, state_sum[1], key_sum[1]) .. "container_end[]"
.. "container[6.1,1.5]" .. formspec_bar(true, state_sum[2], key_sum[2]) .. "container_end[]"
.. "container[1,2.75]" .. formspec_bar(false, state_sum[3], key_sum[3]) .. "container_end[]"
.. "container[4,2.75]" .. formspec_bar(false, state_sum[4], key_sum[4]) .. "container_end[]"
.. "container_end[]"
.. "list[current_player;main;0.6,6.2;8,4;]"
.. "list[current_player;main;0.6,6.7;8,4;]"
if solved then
local nodemeta = "nodemeta:"..pos.x..","..pos.y..","..pos.z
formspec = formspec
.. "list["..nodemeta..";main;0.6,4.7;8,1;]"
.. "list["..nodemeta..";main;0.6,5.4;8,1;]"
if meta:get_string("solved") ~= "true" then
minetest.sound_play("dfcaverns_puzzle_chest_open", {pos = pos})
meta:set_string("solved", "true")
@ -112,6 +116,12 @@ minetest.register_on_player_receive_fields(function(player, formname, fields)
show_formspec(pos, nil, player)
end)
local puzzle_chest_can_dig = function(pos, player)
local meta = minetest.get_meta(pos)
initialize(pos, meta)
local inv = meta:get_inventory()
return inv:is_empty("main")
end
minetest.register_node("df_underworld_items:puzzle_chest_closed", {
description = S("Puzzle Chest"),
@ -133,12 +143,7 @@ minetest.register_node("df_underworld_items:puzzle_chest_closed", {
_mcl_hardness = 50,
on_rightclick = show_formspec,
can_dig = function(pos, player)
local meta = minetest.get_meta(pos)
initialize(pos, meta)
local inv = meta:get_inventory()
return inv:is_empty("main")
end,
can_dig = puzzle_chest_can_dig,
})
minetest.register_node("df_underworld_items:puzzle_chest_opened", {
@ -152,22 +157,18 @@ minetest.register_node("df_underworld_items:puzzle_chest_opened", {
{name = "dfcaverns_slade_block.png^dfcaverns_chest_mask_side.png", backface_culling = true},
{name = "dfcaverns_slade_block.png^dfcaverns_chest_mask_side.png^dfcaverns_chest_lock_plate.png^dfcaverns_chest_lock_colours.png", backface_culling = true},
{name = "([combine:16x32:0,0=dfcaverns_slade_block.png:0,16=dfcaverns_slade_block.png)^dfcaverns_chest_mask_interior.png", backface_culling = true},
},
},
is_ground_content = false,
mesh = "dfcaverns_chest_open.obj",
drawtype= "mesh",
visual = "mesh",
paramtype2="facedir",
groups = {stone=1, slade=1, pit_plasma_resistant=1, mese_radiation_shield=1, cracky = 3, building_block=1, material_stone=1, not_in_creative_inventory=1},
drop = "df_underworld_items:puzzle_chest_closed",
sounds = df_dependencies.sound_stone({ footstep = { name = "bedrock2_step", gain = 1 } }),
_mcl_blast_resistance = 1200,
_mcl_hardness = 50,
on_rightclick = show_formspec,
can_dig = function(pos, player)
local meta = minetest.get_meta(pos)
initialize(pos, meta)
local inv = meta:get_inventory()
return inv:is_empty("main")
end,
can_dig = puzzle_chest_can_dig,
})

View File

@ -58,6 +58,8 @@ local colour_groups = {
{"color_white", "basecolor_white", "excolor_white", "excolor_lightgrey", "color_grey"}, -- 7
}
df_underworld_items.colour_items = {}
local cull_colour_groups = function()
local culled_colour_groups = {}
for _, groups in ipairs(colour_groups) do
@ -74,6 +76,22 @@ local cull_colour_groups = function()
table.insert(culled_colour_groups, new_set)
end
colour_groups = culled_colour_groups
-- collect a list of all items with useful colour groups
-- to be used for treasure generation
local colour_item_set = {}
for itemname, def in pairs(minetest.registered_items) do
for _, groups in ipairs(colour_groups) do
for _, colour in ipairs(groups) do
if minetest.get_item_group(itemname, colour) ~= 0 then
colour_item_set[itemname] = true
end
end
end
end
for colour_item, _ in pairs(colour_item_set) do
table.insert(df_underworld_items.colour_items, colour_item)
end
end
minetest.after(0, cull_colour_groups)

Binary file not shown.

After

Width:  |  Height:  |  Size: 923 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 947 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 146 B

After

Width:  |  Height:  |  Size: 146 B

Binary file not shown.