Merge pull request #7355 from unid15/autism_automation_console

Allows assemblies to be connected to AAC
This commit is contained in:
Rob Nelson
2015-12-29 12:44:34 -08:00
4 changed files with 129 additions and 0 deletions

View File

@@ -14,11 +14,22 @@
var/register_amount = 10//Determines the maximal registers you can have.
var/list/registers = list()//Stores the register values, registers can't be named so this is enough.
var/list/linked_assemblies = list() //Can have up to 5 assemblies connected. AAC scripts can pulse them
var/const/max_linked_assembly_amount = 5
/obj/machinery/computer/general_air_control/atmos_automation/New()
..()
for(var/i = 1, i <= register_amount, i++)//Fill the registers
registers.Add(list(0))
for(var/i = 1 to max_linked_assembly_amount)
linked_assemblies.Add(null)
/obj/machinery/computer/general_air_control/atmos_automation/Destroy()
linked_assemblies = null
..()
/obj/machinery/computer/general_air_control/atmos_automation/receive_signal(datum/signal/signal)
if(!signal || signal.encryption) return
@@ -82,6 +93,8 @@
else
out += "<a href=\"?src=\ref[src];on=1\" style=\"font-size:large;font-weight:bold;color:green;\">STOPPED</a>"
out += "<p><a href=\"?src=\ref[src];view_assemblies=1\">View connected assemblies</a></p>"
out += {"
<h2>Automations</h2>
<p>\[
@@ -223,6 +236,42 @@
updateUsrDialog()
return 1
//Assembly stuff
if(href_list["connect_assembly"])
var/id = text2num(href_list["connect_assembly"])
var/obj/item/device/assembly/A = linked_assemblies[id]
if(isnull(A)) //Nothing connected in the specified socket - take assembly from hand and connect it
var/obj/item/device/assembly/to_connect = usr.get_active_hand()
if(istype(to_connect)) //User's active hand holds an assembly
if(usr.drop_item(to_connect, src)) //Stick it in and connect it
linked_assemblies[id] = to_connect
else
to_chat(usr, "<span class='info'>Hold the assembly in your hand and press this button to connect it.</span>")
else //Something connected - eject it
linked_assemblies[id] = null
A.forceMove(get_turf(src))
to_chat(usr, "<span class='info'>You eject \the [A] from socket #[id].</span>")
href_list["view_assemblies"] = 1 //Update the window!
if(href_list["view_assemblies"]) //Open a separate window that lists connected assemblies
var/dat = "<h2>Connected assemblies</h2>"
for(var/i = 1 to max_linked_assembly_amount)
dat += "<p>[i]) <a href=\"?src=\ref[src];connect_assembly=[i]\">[isnull(linked_assemblies[i]) ? "-click to insert-" : linked_assemblies[i]]</a></p>"
var/datum/browser/popup = new(usr, "AAC_assemblies", "[src]", 500, 300, src)
popup.set_content(dat)
popup.open()
onclose(usr, "AAC_assemblies")
/obj/machinery/computer/general_air_control/atmos_automation/proc/MakeCompare(var/datum/automation/a, var/datum/automation/b, var/comparetype)
var/datum/automation/compare/compare=new(src)
compare.comparator = comparetype

View File

@@ -0,0 +1,44 @@
/datum/automation/pulse_assembly
name = "Assembly: Pulse"
var/assembly_num = 1 //1 to parent.max_linked_assembly_amount (5)
/datum/automation/pulse_assembly/Export()
var/list/json = ..()
json["assembly_num"] = assembly_num
return json
/datum/automation/pulse_assembly/Import(var/list/json)
..(json)
assembly_num = text2num(json["assembly_num"])
/datum/automation/pulse_assembly/process()
var/obj/item/device/assembly/A = parent.linked_assemblies[assembly_num]
if(A)
A.activate()
return 0
/datum/automation/pulse_assembly/GetText()
var/T = null
if(assembly_num in (1 to parent.max_linked_assembly_amount))
var/obj/item/device/assembly/A = parent.linked_assemblies[assembly_num]
if(istype(A))
T = A
return "Pulse assembly #<a href=\"?src=\ref[src];set_ass_num=1\">[assembly_num]</a>[T ? "- [T]" : ""]." //Pulse assembly #3 - remote signaling device
/datum/automation/pulse_assembly/Topic(href,href_list)
. = ..()
if(.)
return
if(href_list["set_ass_num"])
assembly_num = input("Select an assembly port to send a pulse to (max: [parent.max_linked_assembly_amount]).", "Assembly", assembly_num) as null|num
assembly_num = Clamp(assembly_num, 1, parent.max_linked_assembly_amount)
parent.updateUsrDialog()
return 1