From 6c7449761c62a83222eea530e0e418f2d6917b47 Mon Sep 17 00:00:00 2001 From: techniX Date: Sun, 8 Dec 2019 18:42:40 +0200 Subject: [PATCH] enable/disable RDS messages --- broadcast.lua | 16 ++++++++++++++-- config.lua | 2 +- digiline.lua | 2 +- hud.lua | 40 ++++++++++++++++++++++++++++++++-------- receiver.lua | 12 ++++++++++++ transmitter.lua | 2 +- 6 files changed, 61 insertions(+), 13 deletions(-) diff --git a/broadcast.lua b/broadcast.lua index 2d16c42..6e239fc 100644 --- a/broadcast.lua +++ b/broadcast.lua @@ -5,7 +5,7 @@ function ham_radio.get_broadcast_messages(frequency) if transmitter.broadcast_message ~= "" then -- construct message local message = table.concat({ - '[ Radio Broadcast: ', + '[ Radio | ', transmitter.operated_by, ' ] ', transmitter.broadcast_message, @@ -25,7 +25,19 @@ function ham_radio:update_broadcast(player) return end - local frequency = item:get_meta():get_string("frequency") + local meta = item:get_meta() + local frequency = meta:get_string("frequency") + local broadcast_disabled = meta:get_string("broadcast_disabled") + + if frequency == "" then + return + end + + if broadcast_disabled == "true" then + -- disabled receiving broadcast messages + ham_radio.player_broadcasts[name] = nil + return + end if ham_radio.player_broadcasts[name] == nil then ham_radio.player_broadcasts[name] = ham_radio.get_broadcast_messages(frequency) diff --git a/config.lua b/config.lua index eaa50ae..e2c5bfa 100644 --- a/config.lua +++ b/config.lua @@ -22,5 +22,5 @@ ham_radio.settings = { }, -- digiline config digiline_channel = "ham_radio", - digiline_broadcast_channel = "ham_radio_broadcast", + digiline_broadcast_channel = "ham_radio_rds", } diff --git a/digiline.lua b/digiline.lua index 1dca7f8..7144624 100644 --- a/digiline.lua +++ b/digiline.lua @@ -38,7 +38,7 @@ ham_radio.digiline_effector = function(pos, _, channel, msg) ham_radio.save_transmitter(pos, meta) end - elseif msg.command == "broadcast" or msg.command == "message" or msg.command == "broadcast_message" then + elseif msg.command == "rds" or msg.command == "message" or msg.command == "rds_message" then meta:set_string("broadcast_message", msg.value) ham_radio.transmitter_update_infotext(meta) ham_radio.save_transmitter(pos, meta) diff --git a/hud.lua b/hud.lua index a81f262..a3faaa5 100644 --- a/hud.lua +++ b/hud.lua @@ -39,12 +39,21 @@ function ham_radio.toggle_hud(player) hud_elem_type = "text", text = "", position = hud_pos, - offset = { x = 0, y = 5 }, - alignment = 0, - number = 0xFFFFFF, + offset = { x = -220, y = 5 }, + alignment = { x = 1, y = 0}, + number = 0x999999, scale= { x = 100, y = 20 }, }), - signal_meter = player:hud_add({ + broadcast = player:hud_add({ + hud_elem_type = "text", + text = "", + position = hud_pos, + offset = { x = 220, y = 5 }, + alignment = { x = -1, y = 0}, + number = 0x999999, + scale= { x = 100, y = 20 }, + }), + signal_meter = player:hud_add({ hud_elem_type = "image", position = hud_pos, offset = { x = -220, y = 35 }, @@ -52,8 +61,8 @@ function ham_radio.toggle_hud(player) scale = { x = 2, y = 1 }, alignment = { x = 1, y = 0 }, }), - signal_level = player:hud_add({ - hud_elem_type = "image", + signal_level = player:hud_add({ + hud_elem_type = "image", position = hud_pos, offset = { x = -220, y = 35 }, text = "ham_radio_hud_indicator_full.png", @@ -86,8 +95,23 @@ function ham_radio:update_hud_display(player) end end end - local text = "FQ "..tostring(meta:get_string("frequency")) - player:hud_change(self.playerhuds[name].frequency, "text", text) + + if frequency == "" then + player:hud_change(self.playerhuds[name].frequency, "text", "FQ ---") + player:hud_change(self.playerhuds[name].frequency, "number", "0x999999") + else + player:hud_change(self.playerhuds[name].frequency, "text", "FQ "..frequency) + player:hud_change(self.playerhuds[name].frequency, "number", "0xFCAD00") + end + + if meta:get_string("broadcast_disabled") == "" then + player:hud_change(self.playerhuds[name].broadcast, "text", "RDS ON") + player:hud_change(self.playerhuds[name].broadcast, "number", "0xFCAD00") + else + player:hud_change(self.playerhuds[name].broadcast, "text", "RDS off") + player:hud_change(self.playerhuds[name].broadcast, "number", "0x999999") + end + player:hud_change( self.playerhuds[name].signal_level, "scale", diff --git a/receiver.lua b/receiver.lua index aa0b4b3..337195b 100644 --- a/receiver.lua +++ b/receiver.lua @@ -3,6 +3,7 @@ minetest.register_tool("ham_radio:handheld_receiver", { wield_image = "ham_radio_receiver_handheld.png", inventory_image = "ham_radio_receiver_handheld.png", groups = { disable_repair = 1 }, + -- left click - change frequency on_use = function(itemstack, user, pointed_thing) local meta = itemstack:get_meta() local frequency = meta:get_string("frequency") @@ -19,6 +20,17 @@ minetest.register_tool("ham_radio:handheld_receiver", { ) return itemstack end, + -- right click - RDS on/off + on_secondary_use = function(itemstack, user, pointed_thing) + local meta = itemstack:get_meta() + local is_broadcast_disabled = meta:get_string("broadcast_disabled") + if is_broadcast_disabled == "" then + meta:set_string("broadcast_disabled", "true") + else + meta:set_string("broadcast_disabled", "") + end + return itemstack + end }) minetest.register_on_player_receive_fields(function(player, formname, fields) diff --git a/transmitter.lua b/transmitter.lua index c953930..5902de7 100644 --- a/transmitter.lua +++ b/transmitter.lua @@ -43,7 +43,7 @@ minetest.register_node("ham_radio:transmitter", { "tooltip[frequency;Integer number ", ham_radio.settings.frequency.min,"-", ham_radio.settings.frequency.max, "]", - "field[0.25,3.5;7,1;broadcast_message;Broadcast message;${broadcast_message}]", + "field[0.25,3.5;7,1;broadcast_message;RDS message;${broadcast_message}]", "button_exit[2,4.5;3,1;;Done]" },'') )