mirror of
https://github.com/sirrobzeroone/elepower.git
synced 2024-12-02 19:43:43 +01:00
Better the Thermal Evaporation Plant
This commit is contained in:
parent
82d7a337c2
commit
3a0df044be
@ -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,
|
||||||
|
Loading…
Reference in New Issue
Block a user