mirror of
https://github.com/joe7575/techpack.git
synced 2024-11-25 16:43:50 +01:00
adapted to current API
This commit is contained in:
parent
8f7e99f76e
commit
a1a2a09cb8
@ -6,26 +6,6 @@ The SmartLine Controller provides the following API to register additional condi
|
|||||||
* smartline.register_condition(name, condition definition)
|
* smartline.register_condition(name, condition definition)
|
||||||
* smartline.register_action(name, action definition)
|
* smartline.register_action(name, action definition)
|
||||||
|
|
||||||
The controller executes up to 10 rules every second. Each rule consists of:
|
|
||||||
- two condition functions
|
|
||||||
- one logical operator (and/or)
|
|
||||||
- one action function
|
|
||||||
|
|
||||||
Depending on the operator, one or both condition functions have to return true, so that the action function is called.
|
|
||||||
If the action is called, the action related flag (a1..a10) is automatically set and can be used in
|
|
||||||
subsequent rules to trigger further actions without the need to evaluate both conditions again.
|
|
||||||
|
|
||||||
The controller executes all rules once per second. Independent how long the input condition stays 'true',
|
|
||||||
the corresponding action will be triggered only once. The condition has to become false and then true again, to
|
|
||||||
re-trigger/execute the action again.
|
|
||||||
|
|
||||||
The Controller supports the following variables:
|
|
||||||
- binary flags (f1..f8) to store states (true/false)
|
|
||||||
- timer variables (t1..t8), decremented each second. Used to execute actions time based
|
|
||||||
- input values (referenced via node number) to evaluate received commands (on/off) from other tubelib nodes
|
|
||||||
- action flags (a1..a10) )to store the action state from previous executed rules
|
|
||||||
|
|
||||||
All variables are stored non volatile (as long as the controller is running).
|
|
||||||
|
|
||||||
Each registered condition and action has the function `on_execute` which is called for each rule (every second).
|
Each registered condition and action has the function `on_execute` which is called for each rule (every second).
|
||||||
* The condition function has to return true or false, depending if the condition is true or not.
|
* The condition function has to return true or false, depending if the condition is true or not.
|
||||||
@ -40,15 +20,12 @@ See `commands.lua` as reference. All predefined SmartLine Controller commands ar
|
|||||||
## Prototypes
|
## Prototypes
|
||||||
|
|
||||||
```LUA
|
```LUA
|
||||||
smartline.register_condition("mymod;mycond", {
|
smartline.register_condition(name, {
|
||||||
title = "my condition",
|
title = "my condition",
|
||||||
formspec = {},
|
formspec = {},
|
||||||
on_execute = function(data, flags, timers, inputs, actions)
|
on_execute = function(data, environ)
|
||||||
-- data: table with the formspec data
|
-- data: table with the formspec data
|
||||||
-- flag: table with the flag values
|
-- environ: not relevant here
|
||||||
-- timers: table with the timer values
|
|
||||||
-- inputs: table with the input values
|
|
||||||
-- actions: table with the action values
|
|
||||||
end,
|
end,
|
||||||
button_label = function(data)
|
button_label = function(data)
|
||||||
return "button label"
|
return "button label"
|
||||||
@ -61,10 +38,9 @@ smartline.register_condition("mymod;mycond", {
|
|||||||
smartline.register_action(name, {
|
smartline.register_action(name, {
|
||||||
title = "my action",
|
title = "my action",
|
||||||
formspec = {},
|
formspec = {},
|
||||||
on_execute = function(data, flags, timers, inputs)
|
on_execute = function(data, environ, inputs)
|
||||||
-- data: table with the formspec data
|
-- data: table with the formspec data
|
||||||
-- flag: table with the flag values
|
-- environ: not relevant here
|
||||||
-- timers: table with the timer values
|
|
||||||
-- inputs: table with the input values
|
-- inputs: table with the input values
|
||||||
end,
|
end,
|
||||||
button_label = function(data)
|
button_label = function(data)
|
||||||
@ -73,6 +49,7 @@ smartline.register_action(name, {
|
|||||||
})
|
})
|
||||||
```
|
```
|
||||||
|
|
||||||
|
The 'name' parameter should be unique. External mods should use the mod name as prefix, like "mymod_mycond".
|
||||||
The 'title' is used in the main menu for the condition and action selection dialog.
|
The 'title' is used in the main menu for the condition and action selection dialog.
|
||||||
The 'formspec' table defines the condition/action related form for additional user parameters.
|
The 'formspec' table defines the condition/action related form for additional user parameters.
|
||||||
It supports the following subset of the minetest formspec elements:
|
It supports the following subset of the minetest formspec elements:
|
||||||
@ -102,7 +79,7 @@ formspec = {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
type = "label",
|
type = "label",
|
||||||
name = "lbl", -- not really used, but internally needed
|
name = "lbl", -- not really used, but internally needed
|
||||||
label = "Hint: Connect the input nodes with the controller",
|
label = "Hint: Connect the input nodes with the controller",
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user