power distribution changed
This commit is contained in:
parent
4ca1ff8f5a
commit
7264439bef
@ -88,8 +88,11 @@ local Akku = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
local function migrate(pos, mem)
|
local function migrate(pos, mem)
|
||||||
if mem.master_pos then
|
if mem.master_pos or mem.is_master ~= nil then
|
||||||
mem.pwr_master_pos = table.copy(mem.master_pos); mem.master_pos = nil
|
if mem.master_pos then
|
||||||
|
mem.pwr_master_pos = table.copy(mem.master_pos)
|
||||||
|
mem.master_pos = nil
|
||||||
|
end
|
||||||
mem.pwr_is_master = mem.is_master; mem.is_master = nil
|
mem.pwr_is_master = mem.is_master; mem.is_master = nil
|
||||||
mem.available1 = nil
|
mem.available1 = nil
|
||||||
mem.available2 = nil
|
mem.available2 = nil
|
||||||
@ -116,7 +119,7 @@ local function migrate(pos, mem)
|
|||||||
if mem.techage_state then
|
if mem.techage_state then
|
||||||
if mem.techage_state == techage.STOPPED then
|
if mem.techage_state == techage.STOPPED then
|
||||||
mem.pwr_state = STOPPED
|
mem.pwr_state = STOPPED
|
||||||
else
|
elseif mem.techage_state == techage.NOPOWER or mem.techage_state == techage.RUNNING then
|
||||||
local crd = CRD(pos)
|
local crd = CRD(pos)
|
||||||
techage.power.consumer_start(pos, mem, crd.cycle_time, crd.power_consumption)
|
techage.power.consumer_start(pos, mem, crd.cycle_time, crd.power_consumption)
|
||||||
end
|
end
|
||||||
@ -127,6 +130,15 @@ local function migrate(pos, mem)
|
|||||||
else
|
else
|
||||||
mem.pwr_state = STOPPED
|
mem.pwr_state = STOPPED
|
||||||
end
|
end
|
||||||
|
if techage.in_list({"techage:ta2_electronic_fab_pas", "techage:ta2_electronic_fab_act", "techage:ta3_electronic_fab_pas", "techage:ta3_electronic_fab_act"}, name) then
|
||||||
|
mem.pwr_cycle_time = 6
|
||||||
|
elseif techage.in_list({"techage:ta3_drillbox_pas", "techage:ta3_drillbox_act"}, name) then
|
||||||
|
mem.pwr_cycle_time = 16
|
||||||
|
elseif techage.in_list({"techage:ta3_pumpjack_pas", "techage:ta3_pumpjack_act"}, name) then
|
||||||
|
mem.pwr_cycle_time = 8
|
||||||
|
else
|
||||||
|
mem.pwr_cycle_time = 4
|
||||||
|
end
|
||||||
elseif Generator[name] then
|
elseif Generator[name] then
|
||||||
if mem.generating then
|
if mem.generating then
|
||||||
techage.power.generator_start(pos, mem, Generator[name])
|
techage.power.generator_start(pos, mem, Generator[name])
|
||||||
@ -140,6 +152,36 @@ local function migrate(pos, mem)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
local Nodenames={}
|
||||||
|
local n=0
|
||||||
|
|
||||||
|
for k,v in pairs(Consumer) do
|
||||||
|
n=n+1
|
||||||
|
Nodenames[n]=k
|
||||||
|
end
|
||||||
|
for k,v in pairs(Generator) do
|
||||||
|
n=n+1
|
||||||
|
Nodenames[n]=k
|
||||||
|
end
|
||||||
|
for k,v in pairs(Akku) do
|
||||||
|
n=n+1
|
||||||
|
Nodenames[n]=k
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
minetest.register_lbm({
|
||||||
|
label = "[techage] Power Conversion",
|
||||||
|
name = "techage:power",
|
||||||
|
nodenames = Nodenames,
|
||||||
|
run_at_every_load = true,
|
||||||
|
action = function(pos, node)
|
||||||
|
local mem = tubelib2.get_mem(pos)
|
||||||
|
print("migrate", S(pos), node.name)
|
||||||
|
migrate(pos, mem)
|
||||||
|
end
|
||||||
|
})
|
||||||
|
|
||||||
-------------------------------------------------- Migrate
|
-------------------------------------------------- Migrate
|
||||||
|
|
||||||
local function pos_already_reached(pos)
|
local function pos_already_reached(pos)
|
||||||
@ -239,7 +281,7 @@ end
|
|||||||
|
|
||||||
local function handle_generator(mst_mem, mem, pos, power_available)
|
local function handle_generator(mst_mem, mem, pos, power_available)
|
||||||
-- for next cycle
|
-- for next cycle
|
||||||
mst_mem.mst_available1 = mst_mem.mst_available1 + power_available
|
mst_mem.mst_available1 = (mst_mem.mst_available1 or 0) + power_available
|
||||||
-- current cycle
|
-- current cycle
|
||||||
mst_mem.mst_supply1 = mst_mem.mst_supply1 or 0
|
mst_mem.mst_supply1 = mst_mem.mst_supply1 or 0
|
||||||
if mst_mem.mst_supply1 < power_available then
|
if mst_mem.mst_supply1 < power_available then
|
||||||
@ -256,7 +298,7 @@ local function handle_consumer(mst_mem, mem, pos, power_needed)
|
|||||||
if mem.pwr_state == NOPOWER then
|
if mem.pwr_state == NOPOWER then
|
||||||
mydbg("pwr", "power_needed", power_needed,"mst_mem.demand1", mst_mem.mst_demand1)
|
mydbg("pwr", "power_needed", power_needed,"mst_mem.demand1", mst_mem.mst_demand1)
|
||||||
-- for next cycle
|
-- for next cycle
|
||||||
mst_mem.mst_needed1 = mst_mem.mst_needed1 + power_needed
|
mst_mem.mst_needed1 = (mst_mem.mst_needed1 or 0) + power_needed
|
||||||
-- current cycle
|
-- current cycle
|
||||||
if (mst_mem.mst_demand1 or 0) >= power_needed then
|
if (mst_mem.mst_demand1 or 0) >= power_needed then
|
||||||
mst_mem.mst_demand1 = (mst_mem.mst_demand1 or 0) - power_needed
|
mst_mem.mst_demand1 = (mst_mem.mst_demand1 or 0) - power_needed
|
||||||
@ -403,7 +445,6 @@ function techage.power.generator_stop(pos, mem)
|
|||||||
end
|
end
|
||||||
|
|
||||||
function techage.power.generator_alive(pos, mem)
|
function techage.power.generator_alive(pos, mem)
|
||||||
migrate(pos, mem) -------------------------------- REMOVE
|
|
||||||
mem.pwr_node_alive_cnt = 2
|
mem.pwr_node_alive_cnt = 2
|
||||||
if mem.pwr_is_master then
|
if mem.pwr_is_master then
|
||||||
power_distribution(pos, mem, 1)
|
power_distribution(pos, mem, 1)
|
||||||
@ -430,7 +471,6 @@ function techage.power.consumer_stop(pos, mem)
|
|||||||
end
|
end
|
||||||
|
|
||||||
function techage.power.consumer_alive(pos, mem)
|
function techage.power.consumer_alive(pos, mem)
|
||||||
migrate(pos, mem) -------------------------------- REMOVE
|
|
||||||
mydbg("pwr", "consumer_alive", mem.pwr_power_provided_cnt, mem.pwr_cycle_time)
|
mydbg("pwr", "consumer_alive", mem.pwr_power_provided_cnt, mem.pwr_cycle_time)
|
||||||
mem.pwr_node_alive_cnt = (mem.pwr_cycle_time or 2)/2 + 1
|
mem.pwr_node_alive_cnt = (mem.pwr_cycle_time or 2)/2 + 1
|
||||||
mem.pwr_power_provided_cnt = (mem.pwr_power_provided_cnt or 0) - (mem.pwr_cycle_time or 2)/2
|
mem.pwr_power_provided_cnt = (mem.pwr_power_provided_cnt or 0) - (mem.pwr_cycle_time or 2)/2
|
||||||
@ -441,7 +481,6 @@ end
|
|||||||
|
|
||||||
-- Lamp related function to speed up the turn on
|
-- Lamp related function to speed up the turn on
|
||||||
function techage.power.power_available(pos, mem, needed)
|
function techage.power.power_available(pos, mem, needed)
|
||||||
migrate(pos, mem) -------------------------------- REMOVE
|
|
||||||
if mem.pwr_master_pos and (mem.pwr_power_provided_cnt or 0) > 0 then
|
if mem.pwr_master_pos and (mem.pwr_power_provided_cnt or 0) > 0 then
|
||||||
mem = tubelib2.get_mem(mem.pwr_master_pos)
|
mem = tubelib2.get_mem(mem.pwr_master_pos)
|
||||||
if (mem.mst_reserve or 0) >= needed then
|
if (mem.mst_reserve or 0) >= needed then
|
||||||
@ -493,7 +532,6 @@ function techage.power.secondary_stop(pos, mem)
|
|||||||
end
|
end
|
||||||
|
|
||||||
function techage.power.secondary_alive(pos, mem, capa_curr, capa_max)
|
function techage.power.secondary_alive(pos, mem, capa_curr, capa_max)
|
||||||
migrate(pos, mem) -------------------------------- REMOVE
|
|
||||||
mydbg("pwr", "secondary_alive")
|
mydbg("pwr", "secondary_alive")
|
||||||
if capa_curr >= capa_max then
|
if capa_curr >= capa_max then
|
||||||
mem.pwr_available2, mem.pwr_needed2 = mem.pwr_could_provide, 0 -- can provide only
|
mem.pwr_available2, mem.pwr_needed2 = mem.pwr_could_provide, 0 -- can provide only
|
||||||
|
Loading…
Reference in New Issue
Block a user