[MIRROR] Adds temperature and pressure sensors to circuits (#6726)

* Adds temperature and pressure sensors to circuits (#59993)

Co-authored-by: Watermelon914 <37270891+Watermelon914@ users.noreply.github.com>

* Adds temperature and pressure sensors to circuits

Co-authored-by: obsol <33932119+read-0nly@users.noreply.github.com>
Co-authored-by: Watermelon914 <37270891+Watermelon914@ users.noreply.github.com>
This commit is contained in:
SkyratBot
2021-07-05 15:56:17 +01:00
committed by GitHub
co-authored by Watermelon914 obsol
parent 6312029a23
commit 8330f5dabe
5 changed files with 94 additions and 0 deletions
@@ -213,6 +213,16 @@
id = "comp_select_query"
build_path = /obj/item/circuit_component/select
/datum/design/component/tempsensor
name = "Temperature Sensor"
id = "comp_tempsensor"
build_path = /obj/item/circuit_component/tempsensor
/datum/design/component/pressuresensor
name = "Pressure Sensor"
id = "comp_pressuresensor"
build_path = /obj/item/circuit_component/pressuresensor
/datum/design/compact_remote_shell
name = "Compact Remote Shell"
desc = "A handheld shell with one big button."
@@ -230,6 +230,7 @@
"comp_mmi",
"comp_multiplexer",
"comp_not",
"comp_pressuresensor",
"comp_radio",
"comp_ram",
"comp_random",
@@ -241,6 +242,7 @@
"comp_speech",
"comp_split",
"comp_string_contains",
"comp_tempsensor",
"comp_textcase",
"comp_tostring",
"comp_typecheck",
@@ -0,0 +1,40 @@
/**
* # Pressure Sensor
*
* Returns the pressure of the tile
*/
/obj/item/circuit_component/pressuresensor
display_name = "Pressure Sensor"
display_desc = "Outputs the current pressure of the tile"
circuit_flags = CIRCUIT_FLAG_INPUT_SIGNAL|CIRCUIT_FLAG_OUTPUT_SIGNAL
/// The result from the output
var/datum/port/output/result
/obj/item/circuit_component/pressuresensor/Initialize()
. = ..()
result = add_output_port("Result", PORT_TYPE_NUMBER)
/obj/item/circuit_component/tempsensor/Destroy()
result = null
return ..()
/obj/item/circuit_component/pressuresensor/input_received(datum/port/input/port)
. = ..()
if(.)
return
//Get current turf
var/turf/location = get_turf(src)
if(!location)
result.set_output(null)
return
//Get environment info
var/datum/gas_mixture/environment = location.return_air()
var/total_moles = environment.total_moles()
var/pressure = environment.return_pressure()
if(total_moles)
//If there's atmos, return pressure
result.set_output(round(pressure,1))
else
result.set_output(0)
@@ -0,0 +1,40 @@
/**
* # Temperature Sensor
*
* Returns the temperature of the tile
*/
/obj/item/circuit_component/tempsensor
display_name = "Temperature Sensor"
display_desc = "Outputs the current temperature of the tile"
circuit_flags = CIRCUIT_FLAG_INPUT_SIGNAL|CIRCUIT_FLAG_OUTPUT_SIGNAL
/// The result from the output
var/datum/port/output/result
/obj/item/circuit_component/tempsensor/Initialize()
. = ..()
result = add_output_port("Result", PORT_TYPE_NUMBER)
/obj/item/circuit_component/tempsensor/Destroy()
result = null
return ..()
/obj/item/circuit_component/tempsensor/input_received(datum/port/input/port)
. = ..()
if(.)
return
//Get current turf
var/turf/location = get_turf(src)
if(!location)
result.set_output(null)
return
//Get environment info
var/datum/gas_mixture/environment = location.return_air()
var/total_moles = environment.total_moles()
if(total_moles)
//If there's atmos, return temperature
result.set_output(round(environment.temperature,1))
else
result.set_output(0)