summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcheapie <no-email-for-you@example.com>2026-04-11 10:00:58 -0500
committercheapie <no-email-for-you@example.com>2026-04-11 10:00:58 -0500
commit59f1bb45f266ed4eddd6ff3ffc96750fa7e14469 (patch)
treee615affb52eacc38bc24643ff40653c4952df3c5
parentb1bf8b74fad97b2783a8b3bf33ed4a7830fc3004 (diff)
downloadcelevator-59f1bb45f266ed4eddd6ff3ffc96750fa7e14469.tar
celevator-59f1bb45f266ed4eddd6ff3ffc96750fa7e14469.tar.gz
celevator-59f1bb45f266ed4eddd6ff3ffc96750fa7e14469.tar.bz2
celevator-59f1bb45f266ed4eddd6ff3ffc96750fa7e14469.tar.xz
celevator-59f1bb45f266ed4eddd6ff3ffc96750fa7e14469.zip
Add a second chime optionHEADmain
-rw-r--r--digistuff.lua2
-rw-r--r--docs/file_sources4
-rw-r--r--locale/celevator.es.tr169
-rw-r--r--locale/template.txt169
-rw-r--r--pilantern.lua107
-rw-r--r--sounds/celevator_chime2_down.oggbin0 -> 40001 bytes
-rw-r--r--sounds/celevator_chime2_up.oggbin0 -> 26042 bytes
7 files changed, 231 insertions, 220 deletions
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
<car ID> <landing number>=<número del ascensor> <número de planta>
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=
<car ID> <landing number>=
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
--- /dev/null
+++ b/sounds/celevator_chime2_down.ogg
Binary files differ
diff --git a/sounds/celevator_chime2_up.ogg b/sounds/celevator_chime2_up.ogg
new file mode 100644
index 0000000..4723252
--- /dev/null
+++ b/sounds/celevator_chime2_up.ogg
Binary files differ