diff --git a/basis/power.lua b/basis/power.lua index 788a3e9..26235dc 100644 --- a/basis/power.lua +++ b/basis/power.lua @@ -193,7 +193,8 @@ end -- --- Distributor functions for nodes with 6 power sides (view from the outside) +-- Distributor functions for nodes with 6 power sides (per defautl) or +-- optionally two or more sides via valid_power_dir (view from the outside) -- techage.distributor = {} @@ -205,6 +206,12 @@ end function techage.distributor.after_tube_update(node, pos, out_dir, peer_pos, peer_in_dir) local mem = tubelib2.get_mem(pos) + -- Check direction + local trd = TRD(pos) + if trd.valid_power_dir then + local pwr_dir = get_power_dir(pos) + if not trd.valid_power_dir(pos, pwr_dir, tubelib2.Turn180Deg[out_dir]) then return end + end mem.connections = mem.connections or {} if not peer_in_dir then mem.connections[out_dir] = nil -- del connection @@ -217,7 +224,12 @@ end -- Needed if the junction consumes power in addition function techage.distributor.read_power_consumption(pos, in_dir) - return power_consumption(pos, in_dir) - TRD(pos).power_consumption or 0 + -- Check direction + local trd = TRD(pos) + if trd.valid_power_dir then + if not trd(pos).valid_power_dir(pos, get_power_dir(pos), in_dir) then return 0 end + end + return power_consumption(pos, in_dir) - trd.power_consumption or 0 end function techage.distributor.after_dig_node(pos, oldnode) diff --git a/coal_power_station/boiler_base.lua b/coal_power_station/boiler_base.lua index e66fe9c..ad29c49 100644 --- a/coal_power_station/boiler_base.lua +++ b/coal_power_station/boiler_base.lua @@ -97,6 +97,7 @@ minetest.register_node("techage:coalboiler_base", { after_tube_update = consumer.after_tube_update, --on_timer = node_timer, + drop = "", paramtype2 = "facedir", on_rotate = screwdriver.disallow, groups = {cracky=2}, diff --git a/coal_power_station/boiler_top.lua b/coal_power_station/boiler_top.lua index 7b72c40..5f323f9 100644 --- a/coal_power_station/boiler_top.lua +++ b/coal_power_station/boiler_top.lua @@ -66,6 +66,10 @@ local function valid_power_dir(pos, power_dir, in_dir) return power_dir == in_dir end +local function can_start(pos, mem, state) + return mem.temperature and mem.temperature > 80 +end + local function start_node(pos, mem, state) generator.turn_power_on(pos, POWER_CAPACITY) end @@ -80,6 +84,7 @@ local State = techage.NodeStates:new({ standby_ticks = STANDBY_TICKS, has_item_meter = false, formspec_func = formspec, + can_start = can_start, start_node = start_node, stop_node = stop_node, }) @@ -244,6 +249,7 @@ minetest.register_node("techage:coalboiler_top", { trigger_boiler = function(pos) local mem = tubelib2.get_mem(pos) mem.fire_trigger = true + print("trigger_boiler") if not minetest.get_node_timer(pos):is_started() then minetest.get_node_timer(pos):start(CYCLE_TIME) end @@ -278,6 +284,7 @@ minetest.register_node("techage:coalboiler_top", { minetest.after(0.5, move_to_water, pos) end, + drop = "", paramtype2 = "facedir", groups = {cracky=1}, on_rotate = screwdriver.disallow, diff --git a/coal_power_station/cooler.lua b/coal_power_station/cooler.lua index 027c660..55ca137 100644 --- a/coal_power_station/cooler.lua +++ b/coal_power_station/cooler.lua @@ -8,7 +8,7 @@ LGPLv2.1+ See LICENSE.txt for more information - TA2 Gearbox + TA3 Cooler ]]-- @@ -23,7 +23,7 @@ local I,_ = dofile(MP.."/intllib.lua") local POWER_CONSUMPTION = 1 -local Axle = techage.Axle +local Power = techage.SteamPipe local distributor = techage.distributor local function swap_node(pos, name) @@ -37,21 +37,29 @@ end local function turn_on(pos, dir, sum) if sum > 0 then - swap_node(pos, "techage:gearbox_on") + swap_node(pos, "techage:cooler_on") else - swap_node(pos, "techage:gearbox") + swap_node(pos, "techage:cooler") end end -minetest.register_node("techage:gearbox", { - description = I("TA2 Gearbox"), - tiles = {"techage_filling_ta2.png^techage_axle_gearbox.png^techage_frame_ta2.png"}, +minetest.register_node("techage:cooler", { + description = I("TA3 Cooler"), + tiles = { + -- up, down, right, left, back, front + "techage_filling_ta3.png^techage_appl_cooler.png^techage_frame_ta3.png", + "techage_filling_ta3.png^techage_appl_cooler.png^techage_frame_ta3.png", + "techage_filling_ta3.png^techage_frame_ta3.png^techage_steam_hole.png", + "techage_filling_ta3.png^techage_frame_ta3.png^techage_steam_hole.png", + "techage_filling_ta3.png^techage_frame_ta3.png", + "techage_filling_ta3.png^techage_frame_ta3.png", + }, techage = { turn_on = turn_on, read_power_consumption = distributor.read_power_consumption, - power_network = Axle, + power_network = Power, power_consumption = POWER_CONSUMPTION, - animated_power_network = true, + --animated_power_network = true, }, after_place_node = distributor.after_place_node, @@ -66,26 +74,40 @@ minetest.register_node("techage:gearbox", { }) -minetest.register_node("techage:gearbox_on", { +minetest.register_node("techage:cooler_on", { tiles = { -- up, down, right, left, back, front { - image = "techage_filling4_ta2.png^techage_axle_gearbox4.png^techage_frame4_ta2.png", + image = "techage_filling4_ta3.png^techage_appl_cooler4.png^techage_frame4_ta3.png", backface_culling = false, animation = { type = "vertical_frames", aspect_w = 32, aspect_h = 32, - length = 0.6, + length = 0.4, }, }, + { + image = "techage_filling4_ta3.png^techage_appl_cooler4.png^techage_frame4_ta3.png", + backface_culling = false, + animation = { + type = "vertical_frames", + aspect_w = 32, + aspect_h = 32, + length = 0.4, + }, + }, + "techage_filling_ta3.png^techage_frame_ta3.png^techage_steam_hole.png", + "techage_filling_ta3.png^techage_frame_ta3.png^techage_steam_hole.png", + "techage_filling_ta3.png^techage_frame_ta3.png", + "techage_filling_ta3.png^techage_frame_ta3.png", }, techage = { turn_on = turn_on, read_power_consumption = distributor.read_power_consumption, - power_network = Axle, + power_network = Power, power_consumption = POWER_CONSUMPTION, - animated_power_network = true, + --animated_power_network = true, }, after_tube_update = distributor.after_tube_update, @@ -99,3 +121,4 @@ minetest.register_node("techage:gearbox_on", { sounds = default.node_sound_wood_defaults(), }) +Power:add_secondary_node_names({"techage:cooler", "techage:cooler_on"}) diff --git a/coal_power_station/firebox.lua b/coal_power_station/firebox.lua index ec0f530..2b5ddf3 100644 --- a/coal_power_station/firebox.lua +++ b/coal_power_station/firebox.lua @@ -66,7 +66,7 @@ end minetest.register_node("techage:coalfirebox", { description = I("TA3 Coal Power Station Firebox"), inventory_image = "techage_coal_boiler_inv.png", - tiles = {"techage_coal_boiler_mesh.png"}, + tiles = {"techage_coal_boiler_mesh_top.png"}, drawtype = "mesh", mesh = "techage_boiler_large.obj", selection_box = { diff --git a/coal_power_station/generator.lua b/coal_power_station/generator.lua index 16f6ed2..8ed5fbb 100644 --- a/coal_power_station/generator.lua +++ b/coal_power_station/generator.lua @@ -188,6 +188,7 @@ minetest.register_node("techage:generator", { on_rightclick = on_rightclick, on_timer = node_timer, + drop = "", paramtype2 = "facedir", groups = {cracky=2, crumbly=2, choppy=2}, on_rotate = screwdriver.disallow, @@ -199,37 +200,28 @@ minetest.register_node("techage:generator_on", { description = I("TA3 Generator"), tiles = { -- up, down, right, left, back, front - "techage_filling_ta2.png^techage_frame_ta2.png", - "techage_filling_ta2.png^techage_frame_ta2.png", + "techage_filling_ta3.png^techage_frame_ta3.png", + "techage_filling_ta3.png^techage_frame_ta3.png", + "techage_filling_ta3.png^techage_appl_hole_electric.png^techage_frame_ta3.png", + "techage_filling_ta3.png^techage_appl_open.png^techage_frame_ta3.png", { - image = "techage_filling4_ta2.png^techage_axle_clutch4.png^techage_frame4_ta2.png", + image = "techage_filling4_ta3.png^techage_appl_generator4.png^techage_frame4_ta3.png", backface_culling = false, animation = { type = "vertical_frames", aspect_w = 32, aspect_h = 32, - length = 0.6, - }, - }, - "techage_filling_ta2.png^techage_appl_open.png^techage_frame_ta2.png", - { - image = "techage_filling8_ta2.png^techage_frame8_ta2.png^techage_flywheel8.png", - backface_culling = false, - animation = { - type = "vertical_frames", - aspect_w = 32, - aspect_h = 32, - length = 1.2, + length = 0.3, }, }, { - image = "techage_filling8_ta2.png^techage_frame8_ta2.png^techage_flywheel8.png^[transformFX]", + image = "techage_filling4_ta3.png^techage_appl_generator4.png^techage_frame4_ta3.png", backface_culling = false, animation = { type = "vertical_frames", aspect_w = 32, aspect_h = 32, - length = 1.2, + length = 0.3, }, }, }, diff --git a/coal_power_station/turbine.lua b/coal_power_station/turbine.lua index e95b9fc..ed0daf4 100644 --- a/coal_power_station/turbine.lua +++ b/coal_power_station/turbine.lua @@ -47,8 +47,8 @@ local function turn_power_on_clbk(pos, in_dir, sum) mem.running = sum > 0 end --- called from flywheel -local function start_cylinder(pos, on) +-- called from generator +local function start_turbine(pos, on) local mem = tubelib2.get_mem(pos) if on and mem.running then consumer.turn_power_on(pos, POWER_CONSUMPTION) @@ -79,7 +79,7 @@ minetest.register_node("techage:turbine", { power_network = Pipe, power_side = "L", valid_power_dir = valid_power_dir, - start_cylinder = start_cylinder, + start_turbine = start_turbine, }, after_place_node = function(pos, placer) @@ -107,7 +107,7 @@ minetest.register_node("techage:turbine_on", { "techage_filling_ta3.png^techage_appl_open.png^techage_frame_ta3.png", "techage_filling_ta3.png^techage_frame_ta3.png^techage_steam_hole.png", { - image = "techage_filling4_ta2.png^techage_cylinder4.png^techage_frame4_ta2.png", + image = "techage_filling4_ta3.png^techage_appl_turbine4.png^techage_frame4_ta3.png", backface_culling = false, animation = { type = "vertical_frames", @@ -117,7 +117,7 @@ minetest.register_node("techage:turbine_on", { }, }, { - image = "techage_filling4_ta2.png^techage_cylinder4.png^techage_frame4_ta2.png", + image = "techage_filling4_ta3.png^techage_appl_turbine4.png^techage_frame4_ta3.png", backface_culling = false, animation = { type = "vertical_frames", @@ -133,7 +133,7 @@ minetest.register_node("techage:turbine_on", { power_network = Pipe, power_side = "L", valid_power_dir = valid_power_dir, - start_cylinder = start_cylinder, + start_turbine = start_turbine, }, after_tube_update = consumer.after_tube_update, @@ -161,3 +161,5 @@ I([[Part of the Coal Power Station. Has to be placed side by side with the TA3 Generator. (see TA3 Coal Power Station)]]), "techage:turbine") + +Pipe:add_secondary_node_names({"techage:turbine", "techage:turbine_on"}) \ No newline at end of file diff --git a/init.lua b/init.lua index 194e8f3..79171ae 100644 --- a/init.lua +++ b/init.lua @@ -87,12 +87,12 @@ else end -- Coal power station - --dofile(MP.."/coal_power_station/firebox.lua") - --dofile(MP.."/coal_power_station/boiler_base.lua") - --dofile(MP.."/coal_power_station/boiler_top.lua") - --dofile(MP.."/coal_power_station/generator.lua") - --dofile(MP.."/coal_power_station/turbine.lua") - --dofile(MP.."/coal_power_station/cooler.lua") + dofile(MP.."/coal_power_station/firebox.lua") + dofile(MP.."/coal_power_station/boiler_base.lua") + dofile(MP.."/coal_power_station/boiler_top.lua") + dofile(MP.."/coal_power_station/generator.lua") + dofile(MP.."/coal_power_station/turbine.lua") + dofile(MP.."/coal_power_station/cooler.lua") --dofile(MP.."/test/battery.lua") diff --git a/sounds/techage_turbine.ogg b/sounds/techage_turbine.ogg index 99c1214..2f2c70d 100644 Binary files a/sounds/techage_turbine.ogg and b/sounds/techage_turbine.ogg differ diff --git a/steam_engine/boiler.lua b/steam_engine/boiler.lua index 517e0b6..7501055 100644 --- a/steam_engine/boiler.lua +++ b/steam_engine/boiler.lua @@ -62,6 +62,10 @@ local function formspec(self, pos, mem) default.get_hotbar_bg(0, 3) end +local function can_start(pos, mem, state) + return mem.temperature and mem.temperature > 80 +end + local function start_node(pos, mem, state) generator.turn_power_on(pos, POWER_CAPACITY) end @@ -76,6 +80,7 @@ local State = techage.NodeStates:new({ standby_ticks = STANDBY_TICKS, has_item_meter = false, formspec_func = formspec, + can_start = can_start, start_node = start_node, stop_node = stop_node, }) diff --git a/textures/techage_appl_cooler.png b/textures/techage_appl_cooler.png new file mode 100644 index 0000000..6c12fde Binary files /dev/null and b/textures/techage_appl_cooler.png differ diff --git a/textures/techage_appl_cooler4.png b/textures/techage_appl_cooler4.png new file mode 100644 index 0000000..4258335 Binary files /dev/null and b/textures/techage_appl_cooler4.png differ diff --git a/textures/techage_appl_generator.png b/textures/techage_appl_generator.png index 39263fa..bb2341c 100644 Binary files a/textures/techage_appl_generator.png and b/textures/techage_appl_generator.png differ diff --git a/textures/techage_appl_generator4.png b/textures/techage_appl_generator4.png new file mode 100644 index 0000000..c88a758 Binary files /dev/null and b/textures/techage_appl_generator4.png differ