improve digiline

This commit is contained in:
Serhii Mozhaiskyi 2019-12-13 13:11:59 +02:00
parent 0c93918418
commit 652183d253
2 changed files with 22 additions and 11 deletions

@ -18,6 +18,7 @@ Craft recipes depend of the mods installed.
Craft a transmitter and place it in the world. Right click on transmitter to open configuration dialog, then set frequency and RDS message. Craft a transmitter and place it in the world. Right click on transmitter to open configuration dialog, then set frequency and RDS message.
- Empty frequency turns transmitter off. - Empty frequency turns transmitter off.
- Transmitter information is displayed as info text when player points at it. - Transmitter information is displayed as info text when player points at it.
- RDS message can be multiline. However, it is transmitted line by line.
- RDS message and frequency can be set via digiline. Also, you can read transmitter configuration via digiline too. - RDS message and frequency can be set via digiline. Also, you can read transmitter configuration via digiline too.
## Beacon ## Beacon
@ -39,22 +40,25 @@ If RDS reception is toggled on, the RDS messages from all transmitters on this f
## Stationary Receiver ## Stationary Receiver
Right click on receiver opens configuration window to set frequency. Receiver displays RDS messages as infotext in the same way as handheld receiver. It does not have signal power meter. Right click on receiver opens configuration window to set frequency. Receiver displays RDS messages as infotext in the same way as handheld receiver. It does not have signal power meter.
- You can operate the receiver in the same way as the transmitter.
## Digiline ## Digiline
```lua ```lua
-- this channel accepts plain text -- channel "ham_radio_rds" accepts plain text
digiline.send('ham_radio_rds', 'new RDS message') digiline.send('ham_radio_rds', 'new RDS message')
-- get transmitter info -- get transmitter info
digiline.send('ham_radio', { command = 'get' }) digiline.send('ham_radio', { command = 'get' })
-- returns { frequency = 12345, rds_message = 'text' } -- returns { frequency = 12345, rds_message = 'text' }
-- set frequency -- set frequency
digiline.send('ham_radio', { command = 'frequency', value = '12345' }) digiline.send('ham_radio', { command = 'set_frequency', value = '12345' })
-- returns { update = 'frequency', success = true/false, message = errorMessage }
-- set RDS message -- set RDS message
digiline.send('ham_radio', { command = 'rds_message', value = 'new RDS message' }) digiline.send('ham_radio', { command = 'set_rds_message', value = 'new RDS message' })
-- returns { update = 'rds_message', success = true }
``` ```
## What's next? ## What's next?
@ -74,5 +78,3 @@ Source code: MIT
Textures: CC BY-SA 3.0 Textures: CC BY-SA 3.0
Sounds: cut from "G32-20-Tuning Radio" by craigsmith, CC 0 Sounds: cut from "G32-20-Tuning Radio" by craigsmith, CC 0

@ -25,23 +25,32 @@ ham_radio.digiline_effector = function(pos, _, channel, msg)
end end
if msg.command == "get" then if msg.command == "get" then
digilines.receptor_send(pos, digilines.rules.default, digiline_channel, { digilines.receptor_send(pos, digilines.rules.default, command_channel, {
frequency = meta:get_string("frequency"), frequency = meta:get_string("frequency"),
rds_message = meta:get_string("rds_message"), rds_message = meta:get_string("rds_message"),
}) })
elseif msg.command == "frequency" then elseif msg.command == "frequency" or msg.command == "set_frequency" then
local new_frequency = msg.value local new_frequency = msg.value
if ham_radio.validate_frequency(new_frequency).result then local validate = ham_radio.validate_frequency(new_frequency)
if validate.result then
meta:set_string("frequency", new_frequency) meta:set_string("frequency", new_frequency)
ham_radio.transmitter_update_infotext(meta) ham_radio.transmitter_update_infotext(meta)
ham_radio.save_transmitter(pos, meta) ham_radio.save_transmitter(pos, meta)
end end
digilines.receptor_send(pos, digilines.rules.default, command_channel, {
update = 'frequency',
success = validate.result,
message = validate.message
})
elseif msg.command == "rds" or msg.command == "message" or msg.command == "rds_message" then elseif msg.command == "rds" or msg.command == "message" or msg.command == "rds_message" or msg.command == "set_rds_message" then
meta:set_string("rds_message", msg.value) meta:set_string("rds_message", msg.value)
ham_radio.transmitter_update_infotext(meta) ham_radio.transmitter_update_infotext(meta)
ham_radio.save_transmitter(pos, meta) ham_radio.save_transmitter(pos, meta)
digilines.receptor_send(pos, digilines.rules.default, command_channel, {
update = 'rds_message',
success = true
})
end end
end end