From d733fab61e32a735641b6a58baa95bdd00015134 Mon Sep 17 00:00:00 2001 From: Joachim Stolberg Date: Mon, 6 May 2019 21:09:13 +0200 Subject: [PATCH] TA3 turbine and cooler added --- basis/power.lua | 16 +++++++-- coal_power_station/boiler_base.lua | 1 + coal_power_station/boiler_top.lua | 7 ++++ coal_power_station/cooler.lua | 51 +++++++++++++++++++-------- coal_power_station/firebox.lua | 2 +- coal_power_station/generator.lua | 26 +++++--------- coal_power_station/turbine.lua | 14 ++++---- init.lua | 12 +++---- sounds/techage_turbine.ogg | Bin 15804 -> 16295 bytes steam_engine/boiler.lua | 5 +++ textures/techage_appl_cooler.png | Bin 0 -> 383 bytes textures/techage_appl_cooler4.png | Bin 0 -> 688 bytes textures/techage_appl_generator.png | Bin 423 -> 385 bytes textures/techage_appl_generator4.png | Bin 0 -> 487 bytes 14 files changed, 88 insertions(+), 46 deletions(-) create mode 100644 textures/techage_appl_cooler.png create mode 100644 textures/techage_appl_cooler4.png create mode 100644 textures/techage_appl_generator4.png 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 99c1214d3a51172aea05a84a4168a2de4cf7a3e7..2f2c70d7834f0244b48ac7a67eadf1a69dbb06c7 100644 GIT binary patch delta 12814 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 delta 12319 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 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 0000000000000000000000000000000000000000..6c12fde5a43dd658027ffa89dc16ddd9213f2b0a GIT binary patch literal 383 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfvmUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIIC?nIRD+&iT2ysd*(pE(3#eQEFmIYKlU6W=V#EyQgnJie4%^P@J>CBeIx* zfm;}a85w5HkpK#+1o(uw0_l^-kAEvG+r4Yo)RlW1CoS1@@_}b?Y<^wu>VwzSv<)O> z)ZiRGgX;HHVJ7iDWd~ZcQA{(ggA$CINwp!(clR`cwo{a zGu1`Xrwm10Ry1-IP7mL)RIfq1J%XW-H^kBXgh~53kruAR4sU^XD>!C~9SwNJY0jF| zU=X3`vV>(tLt?dd4Cfh!mi*f?4o~pWQR%881_tRny1agG S=1c~9gTd3)&t;ucLK6TMuX{-V literal 0 HcmV?d00001 diff --git a/textures/techage_appl_cooler4.png b/textures/techage_appl_cooler4.png new file mode 100644 index 0000000000000000000000000000000000000000..42583353188a8036c4cb9ea7f7090f45207601b7 GIT binary patch literal 688 zcmV;h0#E&kP)Px#9cffpbVF}#ZDnqB0000007G(RVRU6=Aa`kWXdp*P zO;BVmWd{HN010qNS#tmY3ljhU3ljkVnw%H_001FSOjJbx007Cy$M$x1ySlos#@%y* zk%yS8n5@87VQn2DB{)AvdTaLr0005+Nkl7xV5XU`$NZ2CYpl^^jU^wEm z69Yz+iNU05Ck88YWB?j6WoWCm6GLgMK4tB=ik-lv6m{rH&d24i^Tqe`nVeOO9Bs>f z#qk=N=Z@!jYWQ+kieOYct8Yr7E=F;0De|v6M8{Ila*TZVp07Pgl8^>9nW^YHmyTAf zqi7yCy5#x!^K&8Jo4#i>UFm3mWh#)PC(zlLJb1Us7+Vyx_&Qg=5Uj+xQR@JmTxb-$ ztoZ&}>u*>5qN2!W@=YF2N#Xg$!W(ZhJie%VIGoOhw0Y&d4OuN8s=5=54|mN{d4>2A z<3j+AMzZ|VEy{;G0NRH*Mfu3d25ZG^J__f9xPxA1)uqY@&QQX&W6_*q zeC&8n-Cl4$95J!i?hqg43LNI+H}oZeu3 zD9No9OgA-rw5XudOPmk)BjLfeRF^UzF1v!+l9swunUCEST$8m3GPHlZO96Qr7Lt8F z2D2R1q3G50kN?VtTXhV^^?VSu@iS6;zF5rzJ6~QY%Ny?=A4O;fCZx@whw8v80000&n5Y??ubiDx_}6cohhtoTstyp_yBE&x?CvH?4-2glS9xhE zWr?t1*UbNy_n#ulkj+=0GSDOu>N=VcWvH$r@gdW&X$SF9K!0oq5DTz*2*UwsQ>y-x z8UmC6oFVY!#(jpnXRlG!GG${e!VY-#;28r00|SGIoCH=4bPE9n28MwNfp;%nGcYhP zF#P-fkAYW2fT|97_3#;KA@Jn-eX2S@MpKcn13ta^z`(%3z#t$lj8y~O(!l%YZ{P`% zYITKz6!Ar|Z7`JAe_HtX@Um^h7sd1l0TxmrcA(hFf=y9?cOWAv4q)^1_j@hcFzl?fz+ov?*2pNeKZ;0L~D2a^pV3-Lu!IYMHXJ7GVdxdhm>afq{WR zL{0*$2D*g+0|UdrguuHOuNfE^7#RNj|Hr^9B0yCKyn6VIv=Df5{XSJ4Afu^B*a4s3 zd|+T;U|g-0GD^&5Vi;gB>Hrpcr-M;23eW)n{Fz{n#C`Sh00000NkvXXu0mjf87`S# diff --git a/textures/techage_appl_generator4.png b/textures/techage_appl_generator4.png new file mode 100644 index 0000000000000000000000000000000000000000..c88a7587c0d77247fa7e498bb4351a5f37bd05cc GIT binary patch literal 487 zcmeAS@N?(olHy`uVBq!ia0vp^3P9Yz!3-p0cg)rRQY`6?zK#qG8~eHcB(ehejKx9j zP7LeL$-D$|I14-?iy0WWg+Z8+Vb&Z8prC7jPl&5eW}!`#m%5b!x1UEuLncr-pe&(n z-2~_4AiEf!hFvoqlFzi8%ar+QmF3MG=>!OS$zprmX$^)p#>^+1ojf*b5K+x)JrMmho>u>+Hho$Ny~5b+B(KsNGk! zaILk0{fumTkGjhNiUL99cki+9%DbOe@C*&%bWX2WKm; z{EP>Grm{s=sck8pzUYS|)8Do^+^o!R{w_T5XKLG&Pv(k;T~oQ(=H*Ge=fCx*o^jzK W>*MYpT0aAWjlt8^&t;ucLK6VaRKn;0 literal 0 HcmV?d00001