summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--teleport_tube.lua42
1 files changed, 23 insertions, 19 deletions
diff --git a/teleport_tube.lua b/teleport_tube.lua
index 5c2a7de..1118f97 100644
--- a/teleport_tube.lua
+++ b/teleport_tube.lua
@@ -114,12 +114,18 @@ local teleport_end_textures={"pipeworks_teleport_tube_end.png","pipeworks_telepo
local teleport_short_texture="pipeworks_teleport_tube_short.png"
local teleport_inv_texture="pipeworks_teleport_tube_inv.png"
-local function set_teleport_tube_formspec(meta, can_receive)
- local cr = (can_receive ~= 0)
- meta:set_string("formspec","size[10.5,1;]"..
- "field[0,0.5;7,1;channel;Channel:;${channel}]"..
- "button[8,0;2.5,1;"..(cr and "cr0" or "cr1")..";"..
- (cr and "Send and Receive" or "Send only").."]")
+local function update_meta(meta, can_receive)
+ meta:set_int("can_receive", can_receive and 1 or 0)
+ local cr_state = can_receive and "on" or "off"
+ meta:set_string("formspec","size[8.6,2.2]"..
+ "field[0.6,0.6;7,1;channel;Channel:;${channel}]"..
+ "label[7.3,0;Receive]"..
+ "image_button[7.3,0.3;1,1;pipeworks_button_" .. cr_state .. ".png;cr" .. (can_receive and 0 or 1) .. ";;;false;pipeworks_button_interm.png]"..
+ "label[0.3,1.3;channels are public by default]" ..
+ "label[0.3,1.6;use <player>:<channel> for fully private channels]" ..
+ "label[0.3,1.9;use <player>\\;<channel> for private receivers]" ..
+ default.gui_bg..
+ default.gui_bg_img)
end
pipeworks.register_tube("pipeworks:teleport_tube","Teleporting Pneumatic Tube Segment",teleport_plain_textures,
@@ -146,8 +152,7 @@ pipeworks.register_tube("pipeworks:teleport_tube","Teleporting Pneumatic Tube Se
},
on_construct = function(pos)
local meta = minetest.get_meta(pos)
- meta:set_int("can_receive", 1)
- set_teleport_tube_formspec(meta, 1)
+ update_meta(meta, true)
end,
on_receive_fields = function(pos,formname,fields,sender)
if not fields.channel then
@@ -178,22 +183,22 @@ pipeworks.register_tube("pipeworks:teleport_tube","Teleporting Pneumatic Tube Se
local dirty = false
+ -- was the channel changed?
+ local channel = meta:get_string("channel")
+ if fields.channel ~= channel then
+ channel = fields.channel
+ meta:set_string("channel", channel)
+ dirty = true
+ end
+
-- test if a can_receive button was pressed
if fields.cr0 and can_receive ~= 0 then
can_receive = 0
- meta:set_int("can_receive", can_receive)
+ update_meta(meta, false)
dirty = true
elseif fields.cr1 and can_receive ~= 1 then
can_receive = 1
- meta:set_int("can_receive", can_receive)
- dirty = true
- end
-
- -- was the channel changed?
- local channel = meta:get_string("channel")
- if fields.channel ~= channel then
- channel = fields.channel
- meta:set_string("channel", channel)
+ update_meta(meta, true)
dirty = true
end
@@ -205,7 +210,6 @@ pipeworks.register_tube("pipeworks:teleport_tube","Teleporting Pneumatic Tube Se
-- remove empty channel tubes, to not have to search through them
remove_tube(pos)
end
- set_teleport_tube_formspec(meta, can_receive)
end
end,
on_destruct = function(pos)