mirror of
https://github.com/yogstation13/Yogstation.git
synced 2025-02-26 09:04:50 +00:00
* first * printer, tools, prefab, assemblies, power.dm(looks like so) * integrated circuit * input memory epv2 exonet node * input,manipulation,output,poweract * fixes * reagents fix * time * minor fixes * all errors fixed * bugfixes * prefab, tickers, camera, led, assembling bugs, * All except exonet node UI and led's * cameras, led and some exonet * 11 * 111 * lesser fixes. * botanic shit * icon * nobludgeon for debugger * gui, typos * gui, typos * dopil * smaller diff, rm template and node * mergefix * list fix * weakrefs * fixes * Clamp, crowbar, minor shit * fukken refs * exonet node refactor, put defines into defines. * dme upload * defines,helpers,exonet node, botanic * TRUE/FALSE and minors * datumfix * moved init to ss * quickfix * cryo runtime fix * datums quickfix * admins * minor fixes * fixes * refs,tools * printer * fixes * fixes * check interactivity redo. * usercheck, fixes * weakrefs * T/F * WEAKREF * unfuckup * fixes and shit * Update assemblies.dm * crypto * fuck * SS, final fixes * looks like final fixes. * release,crypto, ranged scnner * defines * Resets some files * find/replace * Associative addresses * Update exonet_node.dm * push * there we go * fix * FINISH! * WEAKREFUCK * FixeS * Woops * Woops * woops * fix * fixes * loops * fix or break? * fix,dammit! * fix,dammit![2] * fix,dammit![3] * disconnect * fix * input * lag * pin * map * sdegsds * >>>lights * fixes le map * makes circuits actually speak * halffix * resets maps to tgstation master * typeless loops in init * Changes subsystem to not initialize new types and use initial instead. * fix * trying to get rid of obj list. * get rid of . * Better code makes better mind * fixed * pin fixes * fix * compiled tgui * circuits config * spelling
137 lines
4.7 KiB
Plaintext
137 lines
4.7 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()
|
|
for(var/i in 1 to io_list_copy.len)
|
|
var/io_entry = io_list_copy[i]
|
|
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)
|
|
// world << "io_type_override is now [io_type_override] on [src]."
|
|
io_list.Add(new io_type_override(src, io_entry, default_data))
|
|
else
|
|
io_list.Add(new io_type(src, io_entry, default_data))
|
|
|
|
|
|
/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(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
|
|
return inputs[pin_number]
|
|
if(IC_OUTPUT)
|
|
if(pin_number > outputs.len)
|
|
return
|
|
return outputs[pin_number]
|
|
if(IC_ACTIVATOR)
|
|
if(pin_number > activators.len)
|
|
return
|
|
return activators[pin_number]
|
|
return
|
|
|
|
/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 TRUE
|
|
|
|
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 TRUE
|
|
return FALSE
|
|
|
|
|
|
/obj/item/integrated_circuit/proc/asc2b64(var/S)
|
|
var/static/list/b64 = list(
|
|
"A"=0,"B"=1,"C"=2,"D"=3,
|
|
"E"=4,"F"=5,"G"=6,"H"=7,
|
|
"I"=8,"J"=9,"K"=10,"L"=11,
|
|
"M"=12,"N"=13,"O"=14,"P"=15,
|
|
"Q"=16,"R"=17,"S"=18,"T"=19,
|
|
"U"=20,"V"=21,"W"=22,"X"=23,
|
|
"Y"=24,"Z"=25,"a"=26,"b"=27,
|
|
"c"=28,"d"=29,"e"=30,"f"=31,
|
|
"g"=32,"h"=33,"i"=34,"j"=35,
|
|
"k"=36,"l"=37,"m"=38,"n"=39,
|
|
"o"=40,"p"=41,"q"=42,"r"=43,
|
|
"s"=44,"t"=45,"u"=46,"v"=47,
|
|
"w"=48,"x"=49,"y"=50,"z"=51,
|
|
"0"=52,"1"=53,"2"=54,"3"=55,
|
|
"4"=56,"5"=57,"6"=58,"7"=59,
|
|
"8"=60,"9"=61,","=62,"."=63
|
|
)
|
|
var/ls = lentext(S)
|
|
var/c
|
|
var/i=1
|
|
while(i <= ls)
|
|
var/sb1=text2ascii(S,i)
|
|
var/sb2=text2ascii(S,i+1)
|
|
var/sb3=text2ascii(S,i+2)
|
|
var/cb1 = (sb1 & 252)>>2
|
|
var/cb2 = ((sb1 & 3)<<6 | (sb2 & 240)>>2)>>2
|
|
var/cb3 = (sb2 & 15)<<2 | (sb3 & 192)>>6
|
|
var/cb4 = (sb3 & 63)
|
|
c=c+b64[cb1+1]+b64[cb2+1]+b64[cb3+1]+b64[cb4+1]
|
|
i=i+3
|
|
return c
|
|
|
|
/obj/item/integrated_circuit/proc/b642asc(var/S)
|
|
var/static/list/b64 = list("A"=1,"B"=2,"C"=3,"D"=4,"E"=5,"F"=6,"G"=7,"H"=8,"I"=9,"J"=10,"K"=11,"L"=12,"M"=13,"N"=14,"O"=15,"P"=16,"Q"=17,"R"=18,
|
|
"S"=19,"T"=20,"U"=21,"V"=22,"W"=23,"X"=24,"Y"=25,"Z"=26,"a"=27,"b"=28,"c"=29,"d"=30,"e"=31,"f"=32,"g"=33,"h"=34,"i"=35,"j"=36,"k"=37,"l"=38,"m"=39,"n"=40,"o"=41,
|
|
"p"=42,"q"=43,"r"=44,"s"=45,"t"=46,"u"=47,"v"=48,"w"=49,"x"=50,"y"=51,"z"=52,"0"=53,"1"=54,"2"=55,"3"=56,"4"=57,"5"=58,"6"=59,"7"=60,"8"=61,"9"=62,","=63,"."=64)
|
|
var/ls = lentext(S)
|
|
var/c
|
|
var/i=1
|
|
while(i<=ls)
|
|
var/cb1=b64[copytext(S,i,i+1)]-1
|
|
var/cb2=b64[copytext(S,i+1,i+2)]-1
|
|
var/cb3=b64[copytext(S,i+2,i+3)]-1
|
|
var/cb4=b64[copytext(S,i+3,i+4)]-1
|
|
var/sb1=cb1<<2 | (cb2 & 48)>>4
|
|
var/sb2=(cb2 & 15) <<4 | (cb3 & 60)>>2
|
|
var/sb3=(cb3 & 3)<<6 | cb4
|
|
c=c+ascii2text(sb1)+ascii2text(sb2)+ascii2text(sb3)
|
|
i=i+4
|
|
return c
|
|
|
|
/proc/XorEncrypt(string,key)
|
|
if(!string || !key ||!istext(string)||!istext(key))
|
|
return
|
|
var/r
|
|
for(var/i = 1 to length(string))
|
|
r += ascii2text(text2ascii(string,i) ^ text2ascii(key,(i-1)%length(string)+1))
|
|
return r
|
|
|