techpack/tubelib/states.lua
Michal Cieslakiewicz 54abd7bf55 Added new button image for BLOCKED state.
Warning image (black exclamation mark on yellow field) added and
used for BLOCKED state. Player can now see the difference between
BLOCKED and FAULT states while accessing machine panel (formspec).

Signed-off-by: Michal Cieslakiewicz <michal.cieslakiewicz@wp.pl>
2019-02-07 10:51:45 +01:00

90 lines
2.2 KiB
Lua

--[[
Tube Library
============
Copyright (C) 2017 Joachim Stolberg
LGPLv2.1+
See LICENSE.txt for more information
states.lua:
A state model for tubelib nodes.
]]--
--
-- Tubelib machine states
--
tubelib.STOPPED = 1 -- not operational/turned off
tubelib.RUNNING = 2 -- in normal operation/turned on
tubelib.STANDBY = 3 -- nothing to do (e.g. no input items), or blocked anyhow (output jammed),
-- or node (world) not loaded
tubelib.FAULT = 4 -- any fault state (e.g. no fuel), which can be fixed by the player
tubelib.BLOCKED = 5 -- a pushing node is blocked due to a full destination inventory
tubelib.DEFECT = 6 -- a defect (broken), which has to be repaired by the player
tubelib.StatesImg = {
"tubelib_inv_button_off.png",
"tubelib_inv_button_on.png",
"tubelib_inv_button_standby.png",
"tubelib_inv_button_error.png",
"tubelib_inv_button_warning.png",
"tubelib_inv_button_off.png",
}
-- Return state button image for the node inventory
function tubelib.state_button(state)
if state and state < 7 and state > 0 then
return tubelib.StatesImg[state]
end
return "tubelib_inv_button_off.png"
end
-- State string based on button states
tubelib.StateStrings = {"stopped", "running", "standby", "fault", "blocked", "defect"}
--
-- 'running' variable States (deprecated)
--
tubelib.STATE_RUNNING = 1 -- in normal operation
tubelib.STATE_STOPPED = 0 -- not operational
tubelib.STATE_STANDBY = -1 -- nothing to do
tubelib.STATE_BLOCKED = -2 -- pushing node is blocked due to a full inventory
tubelib.STATE_FAULT = -3 -- any fault state, which has to be fixed by the player
-- Return machine state based on the running counter
function tubelib.state(running)
if running > 0 then
return tubelib.RUNNING
elseif running == 0 then
return tubelib.STOPPED
elseif running == -1 then
return tubelib.STANDBY
elseif running == -2 then
return tubelib.BLOCKED
else
return tubelib.FAULT
end
end
-- Return state string based on the running counter
function tubelib.statestring(running)
if running > 0 then
return "running"
elseif running == 0 then
return "stopped"
elseif running == -1 then
return "standby"
elseif running == -2 then
return "blocked"
else
return "fault"
end
end