networks, liquids, reactor, barrels, tanks, and pumps introduced

This commit is contained in:
Joachim Stolberg 2019-11-03 16:21:42 +01:00
parent bc9a885bb5
commit b1ea6a2d6a
28 changed files with 47 additions and 17 deletions

View File

@ -61,6 +61,7 @@ Node mem data:
local S = function(pos) if pos then return minetest.pos_to_string(pos) end end local S = function(pos) if pos then return minetest.pos_to_string(pos) end end
local P = minetest.string_to_pos local P = minetest.string_to_pos
local M = minetest.get_meta local M = minetest.get_meta
local N = techage.get_node_lvm
-- --
-- TechAge machine states -- TechAge machine states
@ -82,6 +83,10 @@ techage.StatesImg = {
"techage_inv_button_off.png", "techage_inv_button_off.png",
} }
local function error(pos, msg)
minetest.log("error", "[TA states] "..msg.." at "..S(pos).." "..N(pos).name)
end
-- Return state button image for the node inventory -- Return state button image for the node inventory
function techage.state_button(state) function techage.state_button(state)
if state and state < 7 and state > 0 then if state and state < 7 and state > 0 then
@ -197,6 +202,8 @@ local function start_timer_delayed(pos, cycle_time)
t:stop() t:stop()
if cycle_time > 0.9 then if cycle_time > 0.9 then
minetest.after(0.1, t.start, t, cycle_time) minetest.after(0.1, t.start, t, cycle_time)
else
error(pos, "invalid cycle_time")
end end
end end

View File

@ -16,6 +16,7 @@ local M = minetest.get_meta
local N = function(pos) return minetest.get_node(pos).name end local N = function(pos) return minetest.get_node(pos).name end
local LQD = function(pos) return (minetest.registered_nodes[techage.get_node_lvm(pos).name] or {}).liquid end local LQD = function(pos) return (minetest.registered_nodes[techage.get_node_lvm(pos).name] or {}).liquid end
local Pipe = techage.LiquidPipe local Pipe = techage.LiquidPipe
local S = techage.S
local net_def = techage.networks.net_def local net_def = techage.networks.net_def
local networks = techage.networks local networks = techage.networks
@ -74,6 +75,8 @@ end
local function get_network_table(pos, outdir, ntype) local function get_network_table(pos, outdir, ntype)
-- jump to the next node because pumps have to network
-- interfaces and therefore can't have a netID
local pos2 = Pipe:get_connected_node_pos(pos, outdir) local pos2 = Pipe:get_connected_node_pos(pos, outdir)
local mem = tubelib2.get_mem(pos2) local mem = tubelib2.get_mem(pos2)
if not mem.pipe or not mem.pipe.netID then if not mem.pipe or not mem.pipe.netID then
@ -115,7 +118,7 @@ function techage.liquid.put(pos, outdir, name, amount)
-- wrong items? -- wrong items?
local peek = liquid.peek(item.pos, item.indir) local peek = liquid.peek(item.pos, item.indir)
if peek and peek ~= name then return amount end if peek and peek ~= name then return amount end
techage.mark_position("singleplayer", item.pos, "put", "", 1) ------------------- debug --techage.mark_position("singleplayer", item.pos, "put", "", 1) ------------------- debug
amount = liquid.put(item.pos, item.indir, name, amount) amount = liquid.put(item.pos, item.indir, name, amount)
if amount == 0 then break end if amount == 0 then break end
end end
@ -131,7 +134,7 @@ function techage.liquid.take(pos, outdir, name, amount)
for _,item in ipairs(get_network_table(pos, outdir, "tank")) do for _,item in ipairs(get_network_table(pos, outdir, "tank")) do
local liquid = LQD(item.pos) local liquid = LQD(item.pos)
if liquid and liquid.take then if liquid and liquid.take then
techage.mark_position("singleplayer", item.pos, "take", "", 1) ------------------- debug --techage.mark_position("singleplayer", item.pos, "take", "", 1) ------------------- debug
local val, name = liquid.take(item.pos, item.indir, name, amount - taken) local val, name = liquid.take(item.pos, item.indir, name, amount - taken)
if val and name then if val and name then
taken = taken + val taken = taken + val
@ -226,8 +229,21 @@ function techage.liquid.update_network(pos, outdir)
delete_netID(pos, outdir) delete_netID(pos, outdir)
end end
minetest.register_craftitem("techage:water", {
description = S("Water"),
inventory_image = "techage_water_inv.png",
groups = {not_in_creative_inventory=1},
})
techage.register_liquid("bucket:bucket_water", "bucket:bucket_empty", 1, "default:water_source") minetest.register_craftitem("techage:river_water", {
techage.register_liquid("bucket:bucket_river_water", "bucket:bucket_empty", 1, "default:river_water_source") description = S("Water"),
inventory_image = "techage_water_inv.png",
groups = {not_in_creative_inventory=1},
})
techage.register_liquid("bucket:bucket_water", "bucket:bucket_empty", 1, "techage:water")
techage.register_liquid("bucket:bucket_river_water", "bucket:bucket_empty", 1, "techage:river_water")
techage.register_liquid("bucket:bucket_lava", "bucket:bucket_empty", 1, "default:lava_source") techage.register_liquid("bucket:bucket_lava", "bucket:bucket_empty", 1, "default:lava_source")

View File

@ -54,25 +54,32 @@ local function formspec_oil(x, y, mem)
if mem.running then if mem.running then
fuel_percent = ((mem.burn_cycles or 1) * 100) / (mem.burn_cycles_total or 1) fuel_percent = ((mem.burn_cycles or 1) * 100) / (mem.burn_cycles_total or 1)
end end
-- return "container["..x..","..y.."]"..
-- "background[0,0;2,2.05;techage_form_grey.png]"..
-- "image[0,0;1,1;techage_form_input_arrow.png]"..
-- "image[1,0;1,1;default_furnace_fire_bg.png^[lowpart:"..
-- fuel_percent..":default_furnace_fire_fg.png]"..
-- techage.item_image(1, 1, itemname)..
-- "list[context;fuel;0,1;1,1;]"..
-- "container_end[]"
return "container["..x..","..y.."]".. return "container["..x..","..y.."]"..
"background[0,0;2,2.05;techage_form_grey.png]".. "background[0,0;3,1.05;techage_form_grey.png]"..
"image[0,0;1,1;techage_form_input_arrow.png]".. "list[context;fuel;0,0;1,1;]"..
"image[1,0;1,1;default_furnace_fire_bg.png^[lowpart:".. techage.item_image(1, 0, itemname)..
"image[2,0;1,1;default_furnace_fire_bg.png^[lowpart:"..
fuel_percent..":default_furnace_fire_fg.png]".. fuel_percent..":default_furnace_fire_fg.png]"..
techage.item_image(1, 1, itemname)..
"list[context;fuel;0,1;1,1;]"..
"container_end[]" "container_end[]"
end end
function techage.oilburner.formspec(mem) function techage.oilburner.formspec(mem)
local update = ((mem.countdown or 0) > 0 and mem.countdown) or S("Update") local update = ((mem.countdown or 0) > 0 and mem.countdown) or S("Update")
return "size[8,6]".. return "size[8,5]"..
default.gui_bg.. default.gui_bg..
default.gui_bg_img.. default.gui_bg_img..
default.gui_slots.. default.gui_slots..
formspec_oil(2, 0, mem).. formspec_oil(1, 0, mem)..
"button[5.5,0.5;2,1;update;"..update.."]".. "button[5,0;2,1;update;"..update.."]"..
"list[current_player;main;0,2.3;8,4;]" "list[current_player;main;0,1.3;8,4;]"
end end
local function fill_container(pos, inv, mem) local function fill_container(pos, inv, mem)

View File

@ -77,13 +77,13 @@ end
local function node_timer3(pos, elapsed) local function node_timer3(pos, elapsed)
local mem = tubelib2.get_mem(pos) local mem = tubelib2.get_mem(pos)
pumping(pos, mem, State3, CAPA) pumping(pos, mem, State3, CAPA)
return true return State3:is_active(mem)
end end
local function node_timer4(pos, elapsed) local function node_timer4(pos, elapsed)
local mem = tubelib2.get_mem(pos) local mem = tubelib2.get_mem(pos)
pumping(pos, mem, State4, CAPA * 2) pumping(pos, mem, State4, CAPA * 2)
return true return State4:is_active(mem)
end end
local function on_rightclick(pos, node, clicker) local function on_rightclick(pos, node, clicker)
@ -196,7 +196,7 @@ minetest.register_node("techage:t3_pump", {
after_place_node = after_place_node3, after_place_node = after_place_node3,
on_rightclick = on_rightclick, on_rightclick = on_rightclick,
tubelib2_on_update2 = tubelib2_on_update2, tubelib2_on_update2 = tubelib2_on_update2,
--on_timer = node_timer3, on_timer = node_timer3,
after_dig_node = after_dig_node, after_dig_node = after_dig_node,
on_rotate = screwdriver.disallow, on_rotate = screwdriver.disallow,
networks = nworks, networks = nworks,
@ -231,7 +231,7 @@ minetest.register_node("techage:t4_pump", {
after_place_node = after_place_node4, after_place_node = after_place_node4,
on_rightclick = on_rightclick, on_rightclick = on_rightclick,
tubelib2_on_update2 = tubelib2_on_update2, tubelib2_on_update2 = tubelib2_on_update2,
--on_timer = node_timer4, on_timer = node_timer4,
after_dig_node = after_dig_node, after_dig_node = after_dig_node,
on_rotate = screwdriver.disallow, on_rotate = screwdriver.disallow,
networks = nworks, networks = nworks,

Binary file not shown.

Before

Width:  |  Height:  |  Size: 266 B

After

Width:  |  Height:  |  Size: 226 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 205 B

After

Width:  |  Height:  |  Size: 175 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 539 B

After

Width:  |  Height:  |  Size: 250 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 208 B

After

Width:  |  Height:  |  Size: 179 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 347 B

After

Width:  |  Height:  |  Size: 215 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 263 B

After

Width:  |  Height:  |  Size: 226 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 592 B

After

Width:  |  Height:  |  Size: 386 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 532 B

After

Width:  |  Height:  |  Size: 385 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 419 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 422 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 223 B

After

Width:  |  Height:  |  Size: 201 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 185 B

After

Width:  |  Height:  |  Size: 175 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 221 B

After

Width:  |  Height:  |  Size: 191 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 272 B

After

Width:  |  Height:  |  Size: 219 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 220 B

After

Width:  |  Height:  |  Size: 191 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 934 B

After

Width:  |  Height:  |  Size: 487 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 432 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 487 B

After

Width:  |  Height:  |  Size: 351 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 734 B

After

Width:  |  Height:  |  Size: 324 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 848 B

After

Width:  |  Height:  |  Size: 428 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 742 B

After

Width:  |  Height:  |  Size: 392 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 645 B

After

Width:  |  Height:  |  Size: 329 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 351 B