mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-10 10:12:45 +00:00
* Circuit updates, adds new components, improves printer, new assemblies. * Finishes powernet circuit. * Adds wearable assemblies. * Finialization before merging with GLOB port. * Finishes circuit update, hopefully. * Forgot to undo map. * Removes debug output.
75 lines
2.5 KiB
Plaintext
75 lines
2.5 KiB
Plaintext
/obj/item/integrated_circuit/proc/setup_io(var/list/io_list, var/io_type, var/list/io_default_list)
|
|
var/list/io_list_copy = io_list.Copy()
|
|
io_list.Cut()
|
|
var/i = 1
|
|
|
|
for(var/io_entry in io_list_copy)
|
|
var/default_data = null
|
|
var/io_type_override = null
|
|
// Override the default data.
|
|
if(io_default_list && io_default_list.len) // List containing special pin types that need to be added.
|
|
default_data = io_default_list["[i]"] // This is deliberately text because the index is a number in text form.
|
|
// Override the pin type.
|
|
if(io_list_copy[io_entry])
|
|
io_type_override = io_list_copy[io_entry]
|
|
|
|
if(io_type_override)
|
|
io_list.Add(new io_type_override(src, io_entry, default_data))
|
|
else
|
|
io_list.Add(new io_type(src, io_entry, default_data))
|
|
i++
|
|
|
|
/obj/item/integrated_circuit/proc/set_pin_data(var/pin_type, var/pin_number, datum/new_data)
|
|
if (istype(new_data) && !isweakref(new_data))
|
|
new_data = weakref(new_data)
|
|
var/datum/integrated_io/pin = get_pin_ref(pin_type, pin_number)
|
|
return pin.write_data_to_pin(new_data)
|
|
|
|
/obj/item/integrated_circuit/proc/get_pin_data(var/pin_type, var/pin_number)
|
|
var/datum/integrated_io/pin = get_pin_ref(pin_type, pin_number)
|
|
return pin.get_data()
|
|
|
|
/obj/item/integrated_circuit/proc/get_pin_data_as_type(var/pin_type, var/pin_number, var/as_type)
|
|
var/datum/integrated_io/pin = get_pin_ref(pin_type, pin_number)
|
|
return pin.data_as_type(as_type)
|
|
|
|
/obj/item/integrated_circuit/proc/activate_pin(var/pin_number)
|
|
var/datum/integrated_io/activate/A = activators[pin_number]
|
|
A.push_data()
|
|
|
|
/datum/integrated_io/proc/get_data()
|
|
if(isnull(data))
|
|
return
|
|
if(isweakref(data))
|
|
return data.resolve()
|
|
return data
|
|
|
|
/obj/item/integrated_circuit/proc/get_pin_ref(var/pin_type, var/pin_number)
|
|
switch(pin_type)
|
|
if(IC_INPUT)
|
|
if(pin_number > inputs.len)
|
|
return null
|
|
return inputs[pin_number]
|
|
if(IC_OUTPUT)
|
|
if(pin_number > outputs.len)
|
|
return null
|
|
return outputs[pin_number]
|
|
if(IC_ACTIVATOR)
|
|
if(pin_number > activators.len)
|
|
return null
|
|
return activators[pin_number]
|
|
return null
|
|
|
|
/obj/item/integrated_circuit/proc/handle_wire(var/datum/integrated_io/pin, var/obj/item/device/integrated_electronics/tool)
|
|
if(istype(tool, /obj/item/device/integrated_electronics/wirer))
|
|
var/obj/item/device/integrated_electronics/wirer/wirer = tool
|
|
if(pin)
|
|
wirer.wire(pin, usr)
|
|
return 1
|
|
|
|
else if(istype(tool, /obj/item/device/integrated_electronics/debugger))
|
|
var/obj/item/device/integrated_electronics/debugger/debugger = tool
|
|
if(pin)
|
|
debugger.write_data(pin, usr)
|
|
return 1
|
|
return 0 |