From 3a1b5cde9de643e8d4c0a25ae8aedb1b7031c289 Mon Sep 17 00:00:00 2001 From: techniX Date: Sun, 8 Dec 2019 03:10:27 +0200 Subject: [PATCH] add beacons (self-configurable transmitters) --- beacon.lua | 38 ++++++++++++++++++++++++++++ helpers.lua | 4 +-- init.lua | 10 ++++---- textures/ham_radio_beacon_front.png | Bin 1180 -> 3244 bytes 4 files changed, 45 insertions(+), 7 deletions(-) create mode 100644 beacon.lua diff --git a/beacon.lua b/beacon.lua new file mode 100644 index 0000000..4448658 --- /dev/null +++ b/beacon.lua @@ -0,0 +1,38 @@ +minetest.register_node("ham_radio:beacon", { + description = "Ham Radio Beacon", + tiles = { + "ham_radio_transmitter_top.png", + "ham_radio_transmitter_top.png", + "ham_radio_transmitter_side.png", + "ham_radio_transmitter_side.png", + "ham_radio_transmitter_side.png", + "ham_radio_beacon_front.png" + }, + groups = {cracky=2,oddly_breakable_by_hand=2}, + sounds = default.node_sound_metal_defaults(), + paramtype2 = "facedir", + drawtype = "nodebox", + paramtype = "light", + node_box = { + type = "fixed", + fixed = {-0.5, -0.5, -0.5, 0.5, 0, 0.5}, + }, + light_source = 5, + after_place_node = function(pos, placer) + local meta = minetest.get_meta(pos); + local name = placer:get_player_name() + meta:set_string('operated_by', name) + meta:set_string("frequency", ham_radio.find_free_frequency(ham_radio.settings.beacon_frequency)) + ham_radio.transmitter_update_infotext(meta) + ham_radio.save_transmitter(pos, meta) + end, + can_dig = function(pos,player) + local meta = minetest.get_meta(pos); + local inv = meta:get_inventory() + local name = player:get_player_name() + return inv:is_empty("main") and not minetest.is_protected(pos, name) + end, + after_dig_node = function(pos, oldnode, oldmetadata, player) + ham_radio.delete_transmitter(pos) + end, +}); diff --git a/helpers.lua b/helpers.lua index 0cb26bc..ea93137 100644 --- a/helpers.lua +++ b/helpers.lua @@ -18,10 +18,10 @@ function ham_radio.find_transmitters(frequency) return transmitter_list end -function ham_radio.find_free_frequency() +function ham_radio.find_free_frequency(range) local frequency = -1 while frequency == -1 do - frequency = tostring(math.floor(math.random(ham_radio.settings.frequency.min, ham_radio.settings.frequency.max))); + frequency = tostring(math.floor(math.random(range.min, range.max))); local are_there_transmitters = ham_radio.find_transmitters(frequency) if next(are_there_transmitters) then frequency = -1 diff --git a/init.lua b/init.lua index 6cdec91..876ccca 100644 --- a/init.lua +++ b/init.lua @@ -16,6 +16,10 @@ ham_radio = { min = 0, max = 9999999 }, + beacon_frequency = { -- sub-range of frequency range + min = 1000000, + max = 9999999 + }, digiline_channel = "ham_radio", } } @@ -48,6 +52,7 @@ dofile(modpath.."/craft.lua") dofile(modpath.."/digiline.lua") dofile(modpath.."/transmitter.lua") dofile(modpath.."/receiver.lua") +dofile(modpath.."/beacon.lua") dofile(modpath.."/broadcast.lua") dofile(modpath.."/hud.lua") @@ -82,8 +87,3 @@ minetest.register_globalstep(function(dtime) broadcasttimer = 0 end end) - --- TODO: craft transmitter --- TODO: configure transmitter --- TODO: craft pelengator --- TODO: set pelengator frequency diff --git a/textures/ham_radio_beacon_front.png b/textures/ham_radio_beacon_front.png index 7876b917ac2504f658059f89fe57281ec666cd8e..8b40ddd714f8bc9cfc0da412f9e3586fc43f2901 100644 GIT binary patch delta 3225 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 LNkvXXu0mjfk(v_I