Better the Thermal Evaporation Plant

This commit is contained in:
Evert Prants 2019-11-24 11:40:03 +02:00
parent 82d7a337c2
commit 3a0df044be
Signed by: evert
GPG Key ID: 1688DA83D222D0B5

View File

@ -5,12 +5,12 @@ local results = {
{ {
input = "default:water_source 1000", input = "default:water_source 1000",
output = "elepower_thermal:brine_source 100", output = "elepower_thermal:brine_source 100",
heat = 200 heat = 400
}, },
{ {
input = "elepower_thermal:brine_source 1000", input = "elepower_thermal:brine_source 1000",
output = "elepower_dynamics:lithium_source 100", output = "elepower_dynamics:lithium_source 100",
heat = 200 heat = 400
} }
} }
@ -142,9 +142,9 @@ local function get_recipe(i1, heat)
end end
local function controller_formspec (input, output, heat) local function controller_formspec (input, output, heat)
local bar = "image[1.5,3;6,1;elethermal_gradient_bg.png^[transformR270]" local bar = "image[1.5,3.5;6,1;elethermal_gradient_bg.png^[transformR270]"
if heat then if heat then
bar = "image[1.5,3;6,1;elethermal_gradient_bg.png^[lowpart:".. bar = "image[1.5,3.5;6,1;elethermal_gradient_bg.png^[lowpart:"..
(100 * heat / 1000)..":elethermal_gradient.png^[transformR270]" (100 * heat / 1000)..":elethermal_gradient.png^[transformR270]"
end end
return "size[8,4.5]".. return "size[8,4.5]"..
@ -152,7 +152,7 @@ local function controller_formspec (input, output, heat)
default.gui_bg_img.. default.gui_bg_img..
default.gui_slots.. default.gui_slots..
bar.. bar..
"tooltip[1.5,3;6,1;Heat: "..heat.."K]".. "tooltip[1.5,3.5;6,1;Heat: "..heat.."K]"..
ele.formspec.fluid_bar(0, 0, input).. ele.formspec.fluid_bar(0, 0, input)..
ele.formspec.fluid_bar(7, 0, output) ele.formspec.fluid_bar(7, 0, output)
end end
@ -184,18 +184,28 @@ local function controller_timer (pos, elapsed)
local heat = meta:get_int("heat") local heat = meta:get_int("heat")
while true do while true do
local recipe = get_recipe(in_buffer, heat) local baseline = math.floor(minetest.get_heat(pos) + 273.15)
-- TODO: check sunlight for solar panels -- TODO: check sunlight for solar panels
heat = math.floor(th.thermal + (th.height * 10) + (100 * (minetest.get_heat(pos) + 1))) heat = math.floor(th.thermal + (th.height * 10)) + baseline
if heat < 0 then if heat < 0 then
heat = 0 heat = 0
end end
if heat > 1000 then
heat = 1000
end
local recipe = get_recipe(in_buffer, heat - baseline)
if not recipe then if not recipe then
break break
end end
local heat_perc = heat / recipe.heat local heat_perc = heat / (recipe.heat + baseline)
if recipe.heat + baseline < heat then
heat_perc = 100
end
local take_perc = math.floor(heat_perc * recipe.input:get_count()) local take_perc = math.floor(heat_perc * recipe.input:get_count())
local outp_perc = math.floor(heat_perc * recipe.output:get_count()) local outp_perc = math.floor(heat_perc * recipe.output:get_count())
@ -287,6 +297,8 @@ minetest.register_node("elepower_thermal:evaporator_output", {
return false return false
end, end,
node_io_can_take_liquid = function (pos, node, side) node_io_can_take_liquid = function (pos, node, side)
local ctrl = get_port_controller(pos)
if not ctrl then return false end
return true return true
end, end,
node_io_accepts_millibuckets = function(pos, node, side) return true end, node_io_accepts_millibuckets = function(pos, node, side) return true end,