From 59f1bb45f266ed4eddd6ff3ffc96750fa7e14469 Mon Sep 17 00:00:00 2001 From: cheapie Date: Sat, 11 Apr 2026 10:00:58 -0500 Subject: Add a second chime option --- digistuff.lua | 2 + docs/file_sources | 4 + locale/celevator.es.tr | 169 ++++++++++++++++++++------------------- locale/template.txt | 169 ++++++++++++++++++++------------------- pilantern.lua | 107 +++++++++++++------------ sounds/celevator_chime2_down.ogg | Bin 0 -> 40001 bytes sounds/celevator_chime2_up.ogg | Bin 0 -> 26042 bytes 7 files changed, 231 insertions(+), 220 deletions(-) create mode 100644 sounds/celevator_chime2_down.ogg create mode 100644 sounds/celevator_chime2_up.ogg diff --git a/digistuff.lua b/digistuff.lua index 687b7e4..c1382e8 100644 --- a/digistuff.lua +++ b/digistuff.lua @@ -20,6 +20,8 @@ local nbsounds = { "celevator_motor_fast", "celevator_motor_slow", "celevator_pi_beep", + "celevator_chime2_up", + "celevator_chime2_down", } for _,i in ipairs(nbsounds) do digistuff.register_nb_sound(i,i) end diff --git a/docs/file_sources b/docs/file_sources index 3f90baa..ef9bcdb 100644 --- a/docs/file_sources +++ b/docs/file_sources @@ -31,6 +31,10 @@ Originally from "elevator bell dings closeup nice.flac" by kyles on Freesound, o https://freesound.org/people/kyles/sounds/453980/ Edited by cheapie. +* celevator_chime2_up.ogg and celevator_chime2_down.ogg +Synthesized in Faust Music Creator by cheapie. +Edited by cheapie. + * celevator_door_close.ogg, celevator_door_open.ogg, and celevator_door_reverse.ogg Originally from "elevator doors open close.wav" by omsomaque on Freesound, originally licensed under CC0. https://freesound.org/people/omsomaque/sounds/584911/ diff --git a/locale/celevator.es.tr b/locale/celevator.es.tr index e44f294..f28a28f 100644 --- a/locale/celevator.es.tr +++ b/locale/celevator.es.tr @@ -15,10 +15,10 @@ Car-top Inspection Box, Off State (you hacker you!)=Controles de inspección en Car-top Inspection Box, On State (you hacker you!)=Controles de inspección en el techo de la cabina (estado activado) Glass-Back Elevator Car=Cabina del ascensor con parte trasera en vidrio Metal Elevator Car=Cabina del ascensor en metal -Metal Glass-Back Elevator Car=Cabina del ascensor en metal con parte trasera en vidrio -Basic Elevator Car=Cabina del ascensor básica Can't place car here - position @1m to the right, @2m up, and @3m back is blocked!=No se puede colocar la cabina aquí - hay una posición bloqueada @1 m a la derecha, @2 m hacia arriba, y @3 m hacia atrás Can't place car here - position @1m to the right, @2m up, and @3m back is protected!=No se puede colocar la cabina aquí - hay una posición protegida @1 m a la derecha, @2 m hacia arriba, y @3 m hacia atrás +Metal Glass-Back Elevator Car=Cabina del ascensor en metal con parte trasera en vidrio +Basic Elevator Car=Cabina del ascensor básica Places a car call at the specified landing on the specified elevator=Realiza una llamada de ascensor en la planta y ascensor especificados = Invalid car ID=Número de ascensor no válido @@ -112,12 +112,60 @@ FIRE SVC=INCENDIO IND SVC=INDEPENDIENTE CAR LIGHT=LUZ CAR FAN=VENTILADOR +Press Next to begin.=Haz clic en «siguiente» para comenzar. +License Info=Información de la licencia +Next >=Siguiente > +< Back=< Atrás +Done=Listo +EDIT FLOOR TABLE=EDICIÓN DE LA TABLA DE PLANTAS +@1 - Height: @2 - PI: @3=@1 - Altura: @2 - Nombre: @3 +New Floor=Planta nueva +Edit Floor=Editar planta +Remove Floor=Eliminar planta +The Floor Height is the distance (in meters/nodes) from the floor level of this floor to the floor level of the next floor.=La altura de la planta es la distancia (en metros/nodos) desde el nivel del suelo de esta planta hasta el nivel del suelo de la planta siguiente. +(not used at the highest floor)=(No se utiliza en la planta más alta) +The Floor Name is how the floor will be displayed on the position indicators.=El nombre de la planta es la forma en que se mostrará la planta en los indicadores de posición. +Editing Floor @1=Editando la planta @1 +Floor Height=Altura de la planta +Floor Name=Nombre de la planta +Edit Floor Table=Tabla de plantas +Back=Atrás +Uninitialized=No inicializado +Position Sync - Floor=Sincronización de posición - planta +Position Sync - Terminal=Sincronización de posición - terminal +Machine Room Inspection=Modo de inspección (sala de máquinas) +Car Top Inspection=Modo de inspección (techo de la cabina) +Fire Service - Phase 1=Modo de incendio (fase 1) +Fire Service - Phase 2=Modo de incendio (fase 2) +Fire Service - Phase 2 Hold=Modo de incendio (fase 2, modo de retención) +Captured=Capturado +Test Mode=Modo de prueba +Cancel=Cancelar +CAR=CABINA +Follow Car=Seguimiento de cabina +Position: @1m Speed: @2m/s PI: @3=Posición: @1 m Velocidad: @2 m/s Planta: @3 +Fault(s) Active=Avería(s) activa(s) +No Current Faults=Ninguna avería +OK=OK +Move Up=Subir +Move Down=Bajar +Normal Operation=Funcionamiento normal +Fault=Avería +Emergency Stop=Parada de emergencia +Independent Service=Modo de servicio independiente +Swing Operation=Modo separado +Doors Opening=Puertas abriéndose +Doors Open=Puertas abiertas +Doors Closing=Puertas cerrándose +Doors Closed=Puertas cerradas +Save=Guardar Please select a floor:=Por favor, seleccione una planta: Please use elevator=Por favor, use el ascensor ERROR=ERROR Could not find a suitable elevator=No se pudo encontrar un ascensor adecuado. Please try again later=Por favor, inténtelo de nuevo más tarde. Elevator Destination Entry Kiosk=Puesto de selección de destino del ascensor +Dispatcher ID=Número del despachador Elevator Elastomeric Buffer=Amortiguador elástico para ascensor Elevator Oil-Filled Buffer=Amortiguador hidráulico para ascensor Elevator Oil-Filled Buffer (top half - you hacker you!)=Amortiguador hidráulico para ascensor (mitad superior) @@ -136,6 +184,7 @@ Elevator Digilines Input/Output=Módulo de entrada/salida de Digilines para el a Channel=Canal Elevator Digilines Multi-Car Input/Output=Módulo de entrada/salida de Digilines para múltiples ascensores You need either the 'protection_bypass' or 'server' privilege to use this.=Necesitas el privilegio 'protection_bypass' o 'server' para poder usar esto. +ID: @1=Número: @1 Elevator Dispatcher=Despachador de ascensor Dispatcher (door open - you hacker you!)=Despachador de ascensor (con puerta abierta) Dispatcher (top section - you hacker you!)=Despachador de ascensor (mitad superior) @@ -167,36 +216,6 @@ GROUP DISPLAY=ESTADO DEL GRUPO Menu=Menú MAIN MENU=MENÚ PRINCIPAL Edit Connections=Editar conexiones -Press Next to begin.=Haz clic en «siguiente» para comenzar. -License Info=Información de la licencia -Next >=Siguiente > -< Back=< Atrás -Done=Listo -EDIT FLOOR TABLE=EDICIÓN DE LA TABLA DE PLANTAS -@1 - Height: @2 - PI: @3=@1 - Altura: @2 - Nombre: @3 -New Floor=Planta nueva -Edit Floor=Editar planta -Remove Floor=Eliminar planta -The Floor Height is the distance (in meters/nodes) from the floor level of this floor to the floor level of the next floor.=La altura de la planta es la distancia (en metros/nodos) desde el nivel del suelo de esta planta hasta el nivel del suelo de la planta siguiente. -(not used at the highest floor)=(No se utiliza en la planta más alta) -The Floor Name is how the floor will be displayed on the position indicators.=El nombre de la planta es la forma en que se mostrará la planta en los indicadores de posición. -Editing Floor @1=Editando la planta @1 -Floor Height=Altura de la planta -Floor Name=Nombre de la planta -Edit Floor Table=Tabla de plantas -Back=Atrás -No Connections=Nignuna conexión -New Connection=Conexión nueva -Edit Connection=Editar conexión -NEW CONNECTION=CONEXIÓN NUEVA -EDIT CONNECTION=EDITAR CONEXIÓN -ID: @1=Número: @1 -CAR @1=ASC. @1 - IN= OK -OUT= -- -OK=OK -Move Up=Subir -Move Down=Bajar Glass Hoistway Door (fast, bottom - you hacker you!)=Puerta de ascensor en vidrio (alta velocidad, parte inferior) Glass Hoistway Door (fast, middle - you hacker you!)=Puerta de ascensor en vidrio (alta velocidad, parte media) Glass Hoistway Door (fast, top - you hacker you!)=Puerta de ascensor en vidrio (alta velocidad, parte superior) @@ -254,6 +273,30 @@ Elevator Keyswitch (momentary, on state - you hacker you!)=Interruptor de llave (none)=(ninguno) ON=ENCENDIDO OFF=APAGADO +Can't connect to a dispatcher you don't have access to.=No se puede conectar a un despachador al que no se tiene acceso. +Can't connect to a controller you don't have access to.=No se puede conectar a un controlador al que no se tiene acceso. +Car Call at Landing:=Llamada de cabina a la planta: +Up Call (simplex car) at Landing:=Llamada para subir (único ascensor) de la planta: +Down Call (simplex car) at Landing:=Llamada para bajar (único ascensor) de la planta: +Up Call (swing) at Landing:=Llamada para subir (modo separado) de la planta: +Down Call (swing) at Landing:=Llamada para bajar (modo separado) de la planta: +Deactivate Fire Service Phase 1=Desactivar la fase 1 del modo de incendio +Activate Fire Service (main landing) Phase 1=Activar la fase 1 (planta primaria) del modo de incendio +Activate Fire Service (alternate landing) Phase 1=Activar la fase 1 (planta alternativa) del modo de incendio +Machine Room or Hoistway Smoke Detector=Detector de humo en la sala de máquinas o en el hueco +Lock Car Calls at Landing:=Bloquea las llamadas a la planta: +Require Auth for Car Calls at Landing:=Requiere autentificación para las llamadas a la planta: +Unlock Car Calls at Landing:=Desbloquea las llamadas a la planta: +Activate Swing Operation=Activar modo separado +Deactivate Swing Operation=Desactivar modo separado +Up Call at Landing:=Llamada para subir de la planta: +Down Call at Landing:=Llamada para bajar de la planta: +Activate Fire Service Phase 1=Activar la fase 1 del modo de incendio +Controller=Controlador +Dispatcher=Despachador +Not all signal options require a landing number.=No todas las opciones de señalización requieren@nun número de planta. +Dispatcher: @1=Despachador: @1 +Car: @1=Ascensor: @1 Elevator Governor=Limitador de velocidad del ascensor Governor Sheave (you hacker you!)=Polea de limitador de velocidad Remote interface for MTronic XT elevator controllers=Interfaz remota para controladores de ascensores MTronic XT @@ -274,22 +317,14 @@ Please check the ID number and try again.=Por favor, compruebe el número y int Controller or dispatcher is protected.=El controlador o el despachador está protegido. Connected to @1 (ID @2)=Conectado a @1 (Número @2) Disconnect=Desconectar -Uninitialized=No inicializado -Position Sync - Floor=Sincronización de posición - planta -Position Sync - Terminal=Sincronización de posición - terminal -Machine Room Inspection=Modo de inspección (sala de máquinas) -Car Top Inspection=Modo de inspección (techo de la cabina) -Fire Service - Phase 1=Modo de incendio (fase 1) -Fire Service - Phase 2=Modo de incendio (fase 2) -Fire Service - Phase 2 Hold=Modo de incendio (fase 2, modo de retención) -Captured=Capturado -Test Mode=Modo de prueba -Cancel=Cancelar -CAR=CABINA -Follow Car=Seguimiento de cabina -Position: @1m Speed: @2m/s PI: @3=Posición: @1 m Velocidad: @2 m/s Planta: @3 -Fault(s) Active=Avería(s) activa(s) -No Current Faults=Ninguna avería +No Connections=Nignuna conexión +New Connection=Conexión nueva +Edit Connection=Editar conexión +NEW CONNECTION=CONEXIÓN NUEVA +EDIT CONNECTION=EDITAR CONEXIÓN +CAR @1=ASC. @1 + IN= OK +OUT= -- Inspection (Any)=Modo de inspección (cualquier) Fire Service=Modo de incendio Fire Service Phase 1=Modo de incendio - fase 1 @@ -310,40 +345,6 @@ Elevator Mesecons Output=Salida Mesecons para ascensor Elevator Mesecons Output (on state - you hacker you!)=Salida Mesecons para ascensor (estado activado) Elevator Mesecons Input=Entrada Mesecons para ascensor Elevator Mesecons Input (on state - you hacker you!)=Entrada Mesecons para ascensor (estado activado) -Car Call at Landing:=Llamada de cabina a la planta: -Up Call (simplex car) at Landing:=Llamada para subir (único ascensor) de la planta: -Down Call (simplex car) at Landing:=Llamada para bajar (único ascensor) de la planta: -Up Call (swing) at Landing:=Llamada para subir (modo separado) de la planta: -Down Call (swing) at Landing:=Llamada para bajar (modo separado) de la planta: -Deactivate Fire Service Phase 1=Desactivar la fase 1 del modo de incendio -Activate Fire Service (main landing) Phase 1=Activar la fase 1 (planta primaria) del modo de incendio -Activate Fire Service (alternate landing) Phase 1=Activar la fase 1 (planta alternativa) del modo de incendio -Machine Room or Hoistway Smoke Detector=Detector de humo en la sala de máquinas o en el hueco -Lock Car Calls at Landing:=Bloquea las llamadas a la planta: -Require Auth for Car Calls at Landing:=Requiere autentificación para las llamadas a la planta: -Unlock Car Calls at Landing:=Desbloquea las llamadas a la planta: -Activate Swing Operation=Activar modo separado -Deactivate Swing Operation=Desactivar modo separado -Up Call at Landing:=Llamada para subir de la planta: -Down Call at Landing:=Llamada para bajar de la planta: -Activate Fire Service Phase 1=Activar la fase 1 del modo de incendio -Controller=Controlador -Dispatcher=Despachador -Not all signal options require a landing number.=No todas las opciones de señalización requieren@nun número de planta. -Dispatcher: @1=Despachador: @1 -Car: @1=Ascensor: @1 -Dispatcher ID=Número del despachador -Can't connect to a dispatcher you don't have access to.=No se puede conectar a un despachador al que no se tiene acceso. -Can't connect to a controller you don't have access to.=No se puede conectar a un controlador al que no se tiene acceso. -Normal Operation=Funcionamiento normal -Fault=Avería -Emergency Stop=Parada de emergencia -Independent Service=Modo de servicio independiente -Swing Operation=Modo separado -Doors Opening=Puertas abriéndose -Doors Open=Puertas abiertas -Doors Closing=Puertas cerrándose -Doors Closed=Puertas cerradas Elevator Position Indicator=Indicador de posición del ascensor Elevator Up Lantern=Luz indicadora de llegada del ascensor (subiendo) Elevator Up Lantern (vertical)=Luz vertical indicadora de llegada del ascensor (subiendo) @@ -354,6 +355,6 @@ Elevator Down Position Indicator / Lantern Combo=Luz indicadora de llegada del a Elevator Up and Down Lantern=Luz indicadora de llegada del ascensor (subiendo y bajando) Elevator Up and Down Lantern (vertical)=Luz vertical indicadora de llegada del ascensor (subiendo y bajando) Elevator Up and Down Position Indicator / Lantern Combo=Luz indicadora de llegada del ascensor (subiendo y bajando) e indicador de su posición -Car ID=Número del ascensor -Save=Guardar +Sound=Sonida Landing Number=Número de planta +Car ID=Número del ascensor diff --git a/locale/template.txt b/locale/template.txt index 023ea26..88a1692 100644 --- a/locale/template.txt +++ b/locale/template.txt @@ -15,10 +15,10 @@ Car-top Inspection Box, Off State (you hacker you!)= Car-top Inspection Box, On State (you hacker you!)= Glass-Back Elevator Car= Metal Elevator Car= -Metal Glass-Back Elevator Car= -Basic Elevator Car= Can't place car here - position @1m to the right, @2m up, and @3m back is blocked!= Can't place car here - position @1m to the right, @2m up, and @3m back is protected!= +Metal Glass-Back Elevator Car= +Basic Elevator Car= Places a car call at the specified landing on the specified elevator= = Invalid car ID= @@ -112,12 +112,60 @@ FIRE SVC= IND SVC= CAR LIGHT= CAR FAN= +Press Next to begin.= +License Info= +Next >= +< Back= +Done= +EDIT FLOOR TABLE= +@1 - Height: @2 - PI: @3= +New Floor= +Edit Floor= +Remove Floor= +The Floor Height is the distance (in meters/nodes) from the floor level of this floor to the floor level of the next floor.= +(not used at the highest floor)= +The Floor Name is how the floor will be displayed on the position indicators.= +Editing Floor @1= +Floor Height= +Floor Name= +Edit Floor Table= +Back= +Uninitialized= +Position Sync - Floor= +Position Sync - Terminal= +Machine Room Inspection= +Car Top Inspection= +Fire Service - Phase 1= +Fire Service - Phase 2= +Fire Service - Phase 2 Hold= +Captured= +Test Mode= +Cancel= +CAR= +Follow Car= +Position: @1m Speed: @2m/s PI: @3= +Fault(s) Active= +No Current Faults= +OK= +Move Up= +Move Down= +Normal Operation= +Fault= +Emergency Stop= +Independent Service= +Swing Operation= +Doors Opening= +Doors Open= +Doors Closing= +Doors Closed= +Save= Please select a floor:= Please use elevator= ERROR= Could not find a suitable elevator= Please try again later= Elevator Destination Entry Kiosk= +Dispatcher ID= Elevator Elastomeric Buffer= Elevator Oil-Filled Buffer= Elevator Oil-Filled Buffer (top half - you hacker you!)= @@ -136,6 +184,7 @@ Elevator Digilines Input/Output= Channel= Elevator Digilines Multi-Car Input/Output= You need either the 'protection_bypass' or 'server' privilege to use this.= +ID: @1= Elevator Dispatcher= Dispatcher (door open - you hacker you!)= Dispatcher (top section - you hacker you!)= @@ -167,36 +216,6 @@ GROUP DISPLAY= Menu= MAIN MENU= Edit Connections= -Press Next to begin.= -License Info= -Next >= -< Back= -Done= -EDIT FLOOR TABLE= -@1 - Height: @2 - PI: @3= -New Floor= -Edit Floor= -Remove Floor= -The Floor Height is the distance (in meters/nodes) from the floor level of this floor to the floor level of the next floor.= -(not used at the highest floor)= -The Floor Name is how the floor will be displayed on the position indicators.= -Editing Floor @1= -Floor Height= -Floor Name= -Edit Floor Table= -Back= -No Connections= -New Connection= -Edit Connection= -NEW CONNECTION= -EDIT CONNECTION= -ID: @1= -CAR @1= - IN= -OUT= -OK= -Move Up= -Move Down= Glass Hoistway Door (fast, bottom - you hacker you!)= Glass Hoistway Door (fast, middle - you hacker you!)= Glass Hoistway Door (fast, top - you hacker you!)= @@ -254,6 +273,30 @@ Elevator Keyswitch (momentary, on state - you hacker you!)= (none)= ON= OFF= +Can't connect to a dispatcher you don't have access to.= +Can't connect to a controller you don't have access to.= +Car Call at Landing:= +Up Call (simplex car) at Landing:= +Down Call (simplex car) at Landing:= +Up Call (swing) at Landing:= +Down Call (swing) at Landing:= +Deactivate Fire Service Phase 1= +Activate Fire Service (main landing) Phase 1= +Activate Fire Service (alternate landing) Phase 1= +Machine Room or Hoistway Smoke Detector= +Lock Car Calls at Landing:= +Require Auth for Car Calls at Landing:= +Unlock Car Calls at Landing:= +Activate Swing Operation= +Deactivate Swing Operation= +Up Call at Landing:= +Down Call at Landing:= +Activate Fire Service Phase 1= +Controller= +Dispatcher= +Not all signal options require a landing number.= +Dispatcher: @1= +Car: @1= Elevator Governor= Governor Sheave (you hacker you!)= Remote interface for MTronic XT elevator controllers= @@ -274,22 +317,14 @@ Please check the ID number and try again.= Controller or dispatcher is protected.= Connected to @1 (ID @2)= Disconnect= -Uninitialized= -Position Sync - Floor= -Position Sync - Terminal= -Machine Room Inspection= -Car Top Inspection= -Fire Service - Phase 1= -Fire Service - Phase 2= -Fire Service - Phase 2 Hold= -Captured= -Test Mode= -Cancel= -CAR= -Follow Car= -Position: @1m Speed: @2m/s PI: @3= -Fault(s) Active= -No Current Faults= +No Connections= +New Connection= +Edit Connection= +NEW CONNECTION= +EDIT CONNECTION= +CAR @1= + IN= +OUT= Inspection (Any)= Fire Service= Fire Service Phase 1= @@ -310,40 +345,6 @@ Elevator Mesecons Output= Elevator Mesecons Output (on state - you hacker you!)= Elevator Mesecons Input= Elevator Mesecons Input (on state - you hacker you!)= -Car Call at Landing:= -Up Call (simplex car) at Landing:= -Down Call (simplex car) at Landing:= -Up Call (swing) at Landing:= -Down Call (swing) at Landing:= -Deactivate Fire Service Phase 1= -Activate Fire Service (main landing) Phase 1= -Activate Fire Service (alternate landing) Phase 1= -Machine Room or Hoistway Smoke Detector= -Lock Car Calls at Landing:= -Require Auth for Car Calls at Landing:= -Unlock Car Calls at Landing:= -Activate Swing Operation= -Deactivate Swing Operation= -Up Call at Landing:= -Down Call at Landing:= -Activate Fire Service Phase 1= -Controller= -Dispatcher= -Not all signal options require a landing number.= -Dispatcher: @1= -Car: @1= -Dispatcher ID= -Can't connect to a dispatcher you don't have access to.= -Can't connect to a controller you don't have access to.= -Normal Operation= -Fault= -Emergency Stop= -Independent Service= -Swing Operation= -Doors Opening= -Doors Open= -Doors Closing= -Doors Closed= Elevator Position Indicator= Elevator Up Lantern= Elevator Up Lantern (vertical)= @@ -354,6 +355,6 @@ Elevator Down Position Indicator / Lantern Combo= Elevator Up and Down Lantern= Elevator Up and Down Lantern (vertical)= Elevator Up and Down Position Indicator / Lantern Combo= -Car ID= -Save= +Sound= Landing Number= +Car ID= diff --git a/pilantern.lua b/pilantern.lua index c778fed..7b36253 100644 --- a/pilantern.lua +++ b/pilantern.lua @@ -1,6 +1,17 @@ celevator.pi = {} celevator.lantern = {} +celevator.lantern.chimesounds = { + { + up = "celevator_chime_up", + down = "celevator_chime_down", + }, + { + up = {name="celevator_chime2_up",gain=0.7}, + down = {name="celevator_chime2_down",gain=0.7}, + }, +} + local S = core.get_translator("celevator") local boringside = "[combine:64x64".. @@ -211,6 +222,9 @@ core.register_node("celevator:pi",{ }) function celevator.lantern.setlight(pos,dir,newstate) + local soundset = core.get_meta(pos):get_int("sound") or 1 + local sounds = celevator.lantern.chimesounds[soundset] + if not sounds then sounds = celevator.lantern.chimesounds[1] end local node = celevator.get_node(pos) if core.get_item_group(node.name,"_celevator_lantern") ~= 1 then return end if dir == "up" then @@ -227,7 +241,7 @@ function celevator.lantern.setlight(pos,dir,newstate) end if newstate then newname = newname.."_upon" - core.sound_play("celevator_chime_up",{pos = pos},true) + core.sound_play(sounds.up,{pos = pos},true) end if core.get_item_group(node.name,"_celevator_lantern_down_lit") == 1 then newname = newname.."_downon" @@ -251,7 +265,7 @@ function celevator.lantern.setlight(pos,dir,newstate) end if newstate then newname = newname.."_downon" - core.sound_play("celevator_chime_down",{pos = pos},true) + core.sound_play(sounds.down,{pos = pos},true) end node.name = newname core.swap_node(pos,node) @@ -351,6 +365,38 @@ local validstates = { {"both",true,true,bothname,bothvname,bothcname}, } +function celevator.lantern.makeformspec(pos) + local meta = core.get_meta(pos) + local fs = "formspec_version[7]size[8,5]" + fs = fs.."field[0.5,0.5;7,1;carid;"..S("Car ID")..";]" + fs = fs.."field[0.5,2;3.25,1;landing;"..S("Landing Number")..";]" + fs = fs.."label[4.25,1.85;"..S("Sound").."]" + fs = fs.."dropdown[4.25,2;3.25,1;sound;" + for i=1,#celevator.lantern.chimesounds do + fs = fs..tostring(i).."," + end + fs = string.sub(fs,1,-2) + fs = fs..";1;true]" + fs = fs.."button[3,3.5;2,1;save;"..S("Save").."]" + meta:set_string("formspec",fs) +end + +function celevator.lantern.handlefields(pos,_,fields) + if not fields.save then return end + if tonumber(fields.carid) and tonumber(fields.landing) then + local carid = tonumber(fields.carid) + local landing = tonumber(fields.landing) + local carinfo = core.deserialize(celevator.storage:get_string(string.format("car%d",carid))) + if not (carinfo and carinfo.lanterns) then return end + table.insert(carinfo.lanterns,{pos=pos,landing=landing}) + celevator.storage:set_string(string.format("car%d",carid),core.serialize(carinfo)) + local meta = core.get_meta(pos) + meta:set_int("carid",carid) + meta:set_string("formspec","") + meta:set_int("sound",tonumber(fields.sound) or 1) + end +end + for _,state in ipairs(validstates) do local nname = "celevator:pilantern_"..state[1] local dropname = nname @@ -397,15 +443,9 @@ for _,state in ipairs(validstates) do {-0.25,-0.5,0.475,0.25,0.125,0.5}, }, }, - after_place_node = function(pos) - local meta = core.get_meta(pos) - local fs = "formspec_version[7]size[8,5]" - fs = fs.."field[0.5,0.5;7,1;carid;"..S("Car ID")..";]" - fs = fs.."field[0.5,2;7,1;landing;"..S("Landing Number")..";]" - fs = fs.."button[3,3.5;2,1;save;"..S("Save").."]" - meta:set_string("formspec",fs) - end, + after_place_node = celevator.lantern.makeformspec, on_receive_fields = function(pos,_,fields) + if not fields.save then return end if tonumber(fields.carid) and tonumber(fields.landing) then local carid = tonumber(fields.carid) local landing = tonumber(fields.landing) @@ -418,6 +458,7 @@ for _,state in ipairs(validstates) do meta:set_int("carid",carid) meta:set_string("formspec","") celevator.pi.settext(pos,carinfo.pitext) + meta:set_int("sound",tonumber(fields.sound) or 1) end end, on_destruct = function(pos) @@ -473,27 +514,8 @@ for _,state in ipairs(validstates) do boringside, makelanterntex(state[1],state[2],state[3]) }, - after_place_node = function(pos) - local meta = core.get_meta(pos) - local fs = "formspec_version[7]size[8,5]" - fs = fs.."field[0.5,0.5;7,1;carid;"..S("Car ID")..";]" - fs = fs.."field[0.5,2;7,1;landing;"..S("Landing Number")..";]" - fs = fs.."button[3,3.5;2,1;save;"..S("Save").."]" - meta:set_string("formspec",fs) - end, - on_receive_fields = function(pos,_,fields) - if tonumber(fields.carid) and tonumber(fields.landing) then - local carid = tonumber(fields.carid) - local landing = tonumber(fields.landing) - local carinfo = core.deserialize(celevator.storage:get_string(string.format("car%d",carid))) - if not (carinfo and carinfo.lanterns) then return end - table.insert(carinfo.lanterns,{pos=pos,landing=landing}) - celevator.storage:set_string(string.format("car%d",carid),core.serialize(carinfo)) - local meta = core.get_meta(pos) - meta:set_int("carid",carid) - meta:set_string("formspec","") - end - end, + after_place_node = celevator.lantern.makeformspec, + on_receive_fields = celevator.lantern.handlefields, on_destruct = function(pos) local meta = core.get_meta(pos) local carid = meta:get_int("carid") @@ -545,27 +567,8 @@ for _,state in ipairs(validstates) do boringside, makeverticallanterntex(state[1],state[2],state[3]) }, - after_place_node = function(pos) - local meta = core.get_meta(pos) - local fs = "formspec_version[7]size[8,5]" - fs = fs.."field[0.5,0.5;7,1;carid;"..S("Car ID")..";]" - fs = fs.."field[0.5,2;7,1;landing;"..S("Landing Number")..";]" - fs = fs.."button[3,3.5;2,1;save;"..S("Save").."]" - meta:set_string("formspec",fs) - end, - on_receive_fields = function(pos,_,fields) - if tonumber(fields.carid) and tonumber(fields.landing) then - local carid = tonumber(fields.carid) - local landing = tonumber(fields.landing) - local carinfo = core.deserialize(celevator.storage:get_string(string.format("car%d",carid))) - if not (carinfo and carinfo.lanterns) then return end - table.insert(carinfo.lanterns,{pos=pos,landing=landing}) - celevator.storage:set_string(string.format("car%d",carid),core.serialize(carinfo)) - local meta = core.get_meta(pos) - meta:set_int("carid",carid) - meta:set_string("formspec","") - end - end, + after_place_node = celevator.lantern.makeformspec, + on_receive_fields = celevator.lantern.handlefields, on_destruct = function(pos) local meta = core.get_meta(pos) local carid = meta:get_int("carid") diff --git a/sounds/celevator_chime2_down.ogg b/sounds/celevator_chime2_down.ogg new file mode 100644 index 0000000..479e213 Binary files /dev/null and b/sounds/celevator_chime2_down.ogg differ diff --git a/sounds/celevator_chime2_up.ogg b/sounds/celevator_chime2_up.ogg new file mode 100644 index 0000000..4723252 Binary files /dev/null and b/sounds/celevator_chime2_up.ogg differ -- cgit v1.2.3