From 8c56210851caca723b84a4d1599fb3047f748529 Mon Sep 17 00:00:00 2001 From: techniX Date: Sun, 8 Dec 2019 01:05:39 +0200 Subject: [PATCH] abstract saving transmitter properties --- init.lua | 7 ++++++- transmitter.lua | 31 ++++++++++++++----------------- 2 files changed, 20 insertions(+), 18 deletions(-) diff --git a/init.lua b/init.lua index 2ffa677..a8a2c25 100644 --- a/init.lua +++ b/init.lua @@ -25,7 +25,12 @@ for key, transmitter_data in pairs(all_transmitters) do ham_radio.transmitters[key] = minetest.parse_json(transmitter_data) end -function ham_radio.save_transmitter(pos, transmitter_properties) +function ham_radio.save_transmitter(pos, meta) + local transmitter_properties = { + frequency = meta:get_string("frequency"), + broadcast_message = meta:get_string("broadcast_message"), + operated_by = meta:get_string("operated_by") + } local key = minetest.pos_to_string(pos, 0) ham_radio.transmitters[key] = transmitter_properties -- cache mod_storage:set_string(key, minetest.write_json(transmitter_properties)) -- storage diff --git a/transmitter.lua b/transmitter.lua index ba39b42..af62a65 100644 --- a/transmitter.lua +++ b/transmitter.lua @@ -1,4 +1,15 @@ +ham_radio.transmitter_update_infotext = function(meta) + local infotext = {'Frequency: ', meta:get_string("frequency")} + local broadcast_message = meta:get_string("broadcast_message") + if broadcast_message ~= "" then + table.insert(infotext, '\nBroadcast: "') + table.insert(infotext, broadcast_message) + table.insert(infotext, '"') + end + meta:set_string("infotext", table.concat(infotext, '')) +end + minetest.register_node("ham_radio:transmitter", { description = "Ham Radio Transmitter", tiles = { @@ -47,24 +58,10 @@ minetest.register_node("ham_radio:transmitter", { end local meta = minetest.get_meta(pos) - local broadcast_message = fields.broadcast_message - local infotext = {'Frequency: ',fields.frequency} - if broadcast_message ~= "" then - table.insert(infotext, '\nBroadcast: "') - table.insert(infotext, broadcast_message) - table.insert(infotext, '"') - end meta:set_string("frequency", fields.frequency) - meta:set_string("broadcast_message", broadcast_message) - meta:set_string("infotext", table.concat(infotext, '')) - ham_radio.save_transmitter( - pos, - { - frequency = fields.frequency, - broadcast_message = broadcast_message, - operated_by = meta:get_string('operated_by') - } - ) + meta:set_string("broadcast_message", fields.broadcast_message) + ham_radio.transmitter_update_infotext(meta) + ham_radio.save_transmitter(pos, meta) end, can_dig = function(pos,player) local meta = minetest.get_meta(pos);