mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-07-12 00:27:31 +01:00
3c5749f862
## About The Pull Request The overall behaviour of everything should stay the same but the memory & speed of these components has been slightly improved and when you scale that across large plumbing factories you get a substantial improvement. Here's a list of the most noticeable changes along with many others that aren't worth mentioning - Removed vars `use_overlays`, `turn_connects`, `recipient_reagents_holder` - `active` var is now replaced with a proc which simply returns is the machine wrenched or not - `turn_connects` has been removed because all machines have their pipes rotate when the machine is rotated. This also removed all the static icon states ending with `-s` from the `dmi` file thus reducing that file size as well - `extend_pipe_to_edge` var is directly integrated into `cut_overlays()` because it's use cases were limited such for showers & sinks - Simplified `Initialize()` a lot. Removed params `start`, `turn_connects`, `custom_receiver`, `extend_pipe_to_edge`. We now only pass `bolt_layer` making that proc faster & less convoluted - Replaced `set_recipient_reagents_holder()` proc with `recipient_reagents_holder()` which returns the reagent holder for holding reagents instead of storing it in the component. This removes the need to hook a qdel signal on the holder & we don't need to keep track of it - Merged a ton of procs to reduce overhead & reduce file size - Plumbing ducts creating the network at mapload is faster without using recursion and the timer subsystem - Deconstructing plumbing ducts is faster in reconstructing the network without using recursion and the timer subsystem This makes managing plumbing code less convoluted & overall better for the foreseeable future. See the lines of code removed vs added and still preserves behaviour ## Changelog 🆑 qol: added examines & screentips for ducts & stack of ducts qol: you can wrench a stack of ducts on the ground to create a pipe refactor: plumbing code has been improved overall. Report bugs on github sprite: removed unused static(does not rotate with machine) icon states for plumbing connections /🆑 --------- Co-authored-by: Time-Green <7501474+Time-Green@users.noreply.github.com>
61 lines
2.1 KiB
Plaintext
61 lines
2.1 KiB
Plaintext
///We pump liquids from activated(plungerated) geysers to a plumbing outlet. We need to be wired.
|
|
/obj/machinery/plumbing/liquid_pump
|
|
name = "liquid pump"
|
|
desc = "Pump up those sweet liquids from under the surface. Uses thermal energy from geysers to power itself." //better than placing 200 cables, because it wasn't fun
|
|
icon = 'icons/obj/pipes_n_cables/hydrochem/plumbers.dmi'
|
|
icon_state = "pump"
|
|
base_icon_state = "pump"
|
|
anchored = FALSE
|
|
density = TRUE
|
|
use_power = NO_POWER_USE
|
|
|
|
///units we pump per second
|
|
var/pump_power = 1
|
|
///set to true if the loop couldnt find a geyser in process, so it remembers and stops checking every loop until moved. more accurate name would be absolutely_no_geyser_under_me_so_dont_try
|
|
var/geyserless = FALSE
|
|
///The geyser object
|
|
var/obj/structure/geyser/geyser
|
|
///volume of our internal buffer
|
|
var/volume = 200
|
|
|
|
/obj/machinery/plumbing/liquid_pump/Initialize(mapload, layer)
|
|
. = ..()
|
|
AddComponent(/datum/component/plumbing/simple_supply, layer)
|
|
|
|
///please note that the component has a hook in the parent call, wich handles activating and deactivating
|
|
/obj/machinery/plumbing/liquid_pump/default_unfasten_wrench(mob/user, obj/item/I, time = 20)
|
|
. = ..()
|
|
if(. == SUCCESSFUL_UNFASTEN)
|
|
geyser = null
|
|
update_appearance()
|
|
geyserless = FALSE //we switched state, so lets just set this back aswell
|
|
|
|
/obj/machinery/plumbing/liquid_pump/process(seconds_per_tick)
|
|
if(!anchored || panel_open || geyserless)
|
|
return
|
|
|
|
if(!geyser)
|
|
for(var/obj/structure/geyser/G in loc.contents)
|
|
geyser = G
|
|
update_appearance()
|
|
if(!geyser) //we didnt find one, abort
|
|
geyserless = TRUE
|
|
visible_message(span_warning("\The [src] makes a sad beep!"))
|
|
playsound(src, 'sound/machines/buzz/buzz-sigh.ogg', 50)
|
|
return
|
|
|
|
pump(seconds_per_tick)
|
|
|
|
///pump up that sweet geyser nectar
|
|
/obj/machinery/plumbing/liquid_pump/proc/pump(seconds_per_tick)
|
|
if(!geyser || !geyser.reagents)
|
|
return
|
|
geyser.reagents.trans_to(src, pump_power * seconds_per_tick)
|
|
|
|
/obj/machinery/plumbing/liquid_pump/update_icon_state()
|
|
if(geyser)
|
|
icon_state = "[base_icon_state]-on"
|
|
return ..()
|
|
icon_state = "[base_icon_state][panel_open ? "-open" : null]"
|
|
return ..()
|