diff options
author | FaceDeer <derksenmobile@gmail.com> | 2017-01-17 00:56:54 -0700 |
---|---|---|
committer | FaceDeer <derksenmobile@gmail.com> | 2017-01-17 00:56:54 -0700 |
commit | 960d4e4155c3156c029c5be14c0ac4dbf1e08b45 (patch) | |
tree | 10302799ef6f8d83f8977ec69edc0c24c37410b0 /crate.lua | |
parent | 9ddec013de650dbfc87c6c960a1e27df820f2977 (diff) |
Add visual markers for crated Digtron image
Diffstat (limited to 'crate.lua')
-rw-r--r-- | crate.lua | 21 |
1 files changed, 17 insertions, 4 deletions
@@ -50,8 +50,10 @@ local loaded_formspec = "size[4,1.5]" .. default.gui_bg_img .. default.gui_slots .. "field[0.3,0.5;4,0.5;title;Digtron Name;${title}]" .. - "button_exit[0.5,1.2;1,0.1;save;Save Title]" .. + "button_exit[0.5,1.2;1,0.1;save;Save\nTitle]" .. "tooltip[save;Saves the title of this Digtron]" .. + "button_exit[1.5,1.2;1,0.1;show;Show\nNodes]" .. + "tooltip[save;Shows what nodes the packed Digtron will occupy if unpacked]" .. "button_exit[2.5,1.2;1,0.1;unpack;Unpack]" .. "tooltip[unpack;Attempts to unpack the Digtron on this location]" @@ -71,18 +73,19 @@ minetest.register_node("digtron:loaded_crate", { on_receive_fields = function(pos, formname, fields, sender) local meta = minetest.get_meta(pos) - if fields.unpack or fields.save then + if fields.unpack or fields.save or fields.show then meta:set_string("title", fields.title) meta:set_string("infotext", fields.title) end - if not fields.unpack then + + if not (fields.unpack or fields.show) then return end local layout_string = meta:get_string("crated_layout") local layout = DigtronLayout.deserialize(layout_string) - + if layout == nil then meta:set_string("infotext", meta:get_string("title") .. "\nUnable to read layout from crate metadata, regrettably this Digtron may be corrupted or lost.") minetest.sound_play("buzzer", {gain=0.5, pos=pos}) @@ -90,6 +93,16 @@ minetest.register_node("digtron:loaded_crate", { return end + for _, node_image in pairs(layout.all) do + if not vector.equals(pos, node_image.pos) then + minetest.add_entity(node_image.pos, "digtron:marker_crate") + end + end + + if not fields.unpack then + return + end + local pos_diff = vector.subtract(pos, layout.controller) layout.controller = pos for _, node_image in pairs(layout.all) do |