Evaporator
This commit is contained in:
parent
b12daa099a
commit
a5c62ce180
@ -718,3 +718,13 @@ minetest.register_craft({
|
||||
{"elepower_dynamics:invar_gear", "elepower_dynamics:steel_plate", "elepower_dynamics:invar_gear"},
|
||||
}
|
||||
})
|
||||
|
||||
-- Evaporizer
|
||||
minetest.register_craft({
|
||||
output = "elepower_machines:evaporator",
|
||||
recipe = {
|
||||
{"elepower_dynamics:steel_plate", "default:steelblock", "elepower_dynamics:steel_plate"},
|
||||
{"elepower_dynamics:steel_plate", "elepower_machines:machine_block", "elepower_dynamics:steel_plate"},
|
||||
{"elepower_dynamics:induction_coil", "elepower_dynamics:zinc_plate", "elepower_dynamics:induction_coil"},
|
||||
}
|
||||
})
|
||||
|
146
elepower_machines/machines/evaporator.lua
Normal file
146
elepower_machines/machines/evaporator.lua
Normal file
@ -0,0 +1,146 @@
|
||||
|
||||
local function get_formspec(power, input, output, state)
|
||||
return "size[8,8.5]"..
|
||||
default.gui_bg..
|
||||
default.gui_bg_img..
|
||||
default.gui_slots..
|
||||
ele.formspec.power_meter(power)..
|
||||
ele.formspec.state_switcher(3.5, 1, state)..
|
||||
ele.formspec.fluid_bar(1, 0, input)..
|
||||
ele.formspec.fluid_bar(7, 0, output)..
|
||||
"image[3.5,2;1,1;gui_furnace_arrow_bg.png^[transformR270]"..
|
||||
"list[current_player;main;0,4.25;8,1;]"..
|
||||
"list[current_player;main;0,5.5;8,3;8]"..
|
||||
"listring[current_player;main]"..
|
||||
"listring[context;src]"..
|
||||
"listring[current_player;main]"..
|
||||
"listring[context;dst]"..
|
||||
"listring[current_player;main]"..
|
||||
default.get_hotbar_bg(0, 4.25)
|
||||
end
|
||||
|
||||
local function on_timer(pos, elapsed)
|
||||
local refresh = false
|
||||
local meta = minetest.get_meta(pos)
|
||||
|
||||
local input = fluid_lib.get_buffer_data(pos, "input")
|
||||
local output = fluid_lib.get_buffer_data(pos, "output")
|
||||
local state = meta:get_int("state")
|
||||
|
||||
local is_enabled = ele.helpers.state_enabled(meta, pos, state)
|
||||
|
||||
local capacity = ele.helpers.get_node_property(meta, pos, "capacity")
|
||||
local usage = ele.helpers.get_node_property(meta, pos, "usage")
|
||||
local storage = ele.helpers.get_node_property(meta, pos, "storage")
|
||||
local pow_buffer = {capacity = capacity, storage = storage, usage = 0}
|
||||
|
||||
local efficiency = 0.8
|
||||
local status = "Idle"
|
||||
|
||||
while true do
|
||||
if not is_enabled then
|
||||
status = "Off"
|
||||
break
|
||||
end
|
||||
|
||||
if pow_buffer.storage < usage then
|
||||
status = "Out of Power!"
|
||||
break
|
||||
end
|
||||
|
||||
if input.fluid == "" or input.amount == 0 then
|
||||
break
|
||||
end
|
||||
|
||||
local fdef = minetest.registered_nodes[input.fluid]
|
||||
if not fdef["gas_form"] then
|
||||
break
|
||||
end
|
||||
|
||||
local inp = input.amount
|
||||
if inp > 100 then inp = 100 end
|
||||
local outp = math.floor(inp * efficiency)
|
||||
|
||||
if (output.amount + outp > output.capacity) or (output.fluid ~= "" and output.fluid ~= fdef["gas_form"]) then
|
||||
break
|
||||
end
|
||||
|
||||
status = "Active"
|
||||
pow_buffer.usage = usage
|
||||
pow_buffer.storage = pow_buffer.storage - usage
|
||||
output.amount = output.amount + outp
|
||||
output.fluid = fdef["gas_form"]
|
||||
input.amount = input.amount - inp
|
||||
refresh = true
|
||||
|
||||
if input.amount == 0 then
|
||||
input.fluid = ""
|
||||
end
|
||||
|
||||
break
|
||||
end
|
||||
|
||||
if refresh then
|
||||
ele.helpers.swap_node(pos, "elepower_machines:evaporator_active")
|
||||
else
|
||||
ele.helpers.swap_node(pos, "elepower_machines:evaporator")
|
||||
end
|
||||
|
||||
meta:set_int("input_fluid_storage", input.amount)
|
||||
meta:set_string("input_fluid", input.fluid)
|
||||
|
||||
meta:set_int("output_fluid_storage", output.amount)
|
||||
meta:set_string("output_fluid", output.fluid)
|
||||
|
||||
meta:set_int("storage", pow_buffer.storage)
|
||||
|
||||
meta:set_string("infotext", ("Evaporator %s\n%s"):format(status, ele.capacity_text(pow_buffer.capacity, pow_buffer.storage)))
|
||||
meta:set_string("formspec", get_formspec(pow_buffer, input, output, state))
|
||||
|
||||
return refresh
|
||||
end
|
||||
|
||||
local animated = {
|
||||
name = "elepower_machine_vaporidenser_animated.png",
|
||||
animation = {
|
||||
type = "vertical_frames",
|
||||
aspect_w = 16,
|
||||
aspect_h = 16,
|
||||
length = 2.0,
|
||||
}
|
||||
}
|
||||
|
||||
ele.register_machine("elepower_machines:evaporator", {
|
||||
description = "Evaporator",
|
||||
groups = {oddly_breakable_by_hand = 1, cracky = 1, fluid_container = 1, ele_user = 1},
|
||||
fluid_buffers = {
|
||||
input = {
|
||||
capacity = 8000,
|
||||
accepts = {"group:liquid"},
|
||||
drainable = false,
|
||||
},
|
||||
output = {
|
||||
capacity = 8000,
|
||||
accepts = false,
|
||||
drainable = true,
|
||||
},
|
||||
},
|
||||
on_timer = on_timer,
|
||||
on_construct = function (pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
meta:set_string("formspec", get_formspec())
|
||||
end,
|
||||
tiles = {
|
||||
"elepower_machine_top.png^elepower_power_port.png", "elepower_machine_base.png^elepower_power_port.png",
|
||||
"elepower_machine_vaporidenser.png",
|
||||
},
|
||||
ele_active_node = true,
|
||||
ele_no_automatic_ports = true,
|
||||
ele_active_nodedef = {
|
||||
tiles = {
|
||||
"elepower_machine_top.png^elepower_power_port.png", "elepower_machine_base.png^elepower_power_port.png", animated,
|
||||
},
|
||||
},
|
||||
ele_usage = 128,
|
||||
on_receive_fields = get_fields,
|
||||
})
|
@ -27,6 +27,7 @@ dofile(mp .. "solderer.lua")
|
||||
dofile(mp .. "compressor.lua")
|
||||
dofile(mp .. "canning_machine.lua")
|
||||
dofile(mp .. "electrolyzer.lua")
|
||||
dofile(mp .. "evaporator.lua")
|
||||
|
||||
-- Other
|
||||
dofile(mp .. "accumulator.lua")
|
||||
|
BIN
elepower_machines/textures/elepower_machine_vaporidenser.png
Normal file
BIN
elepower_machines/textures/elepower_machine_vaporidenser.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 344 B |
Binary file not shown.
After Width: | Height: | Size: 363 B |
Loading…
Reference in New Issue
Block a user