Extension additions and multitool menu tweaks.

Relocates obj extension code to the extension file.
Adds a support method, set_extension, to ensure that proper cleanup occurs in the case of multiple additions to the same extension type.
The default multitool menu title is now much shorter.
The cloning computer multitool menu now lists all connected cloning pods.
This commit is contained in:
PsiOmegaDelta
2015-12-05 22:51:41 +01:00
parent 4e8eb1f4dc
commit 39f0fcebaa
8 changed files with 41 additions and 20 deletions
+16 -3
View File
@@ -1,7 +1,5 @@
/datum/expansion
/datum/expansion
var/atom/holder = null // The holder
var/datum/holder = null // The holder
/datum/expansion/New(var/atom/holder)
if(!istype(holder))
@@ -22,3 +20,18 @@
if(CanUseTopic(usr) != STATUS_INTERACTIVE)
return 1
return 0
/obj
var/list/datum/expansion/expansions = list()
/obj/Destroy()
if(expansions)
for(var/expansion in expansions)
qdel(expansions[expansion])
expansions.Cut()
return ..()
/obj/proc/set_expansion(var/type, var/instance)
if(expansions[type])
qdel(expansions[type])
expansions[type] = instance
+5 -1
View File
@@ -1,5 +1,9 @@
/datum/expansion/multitool/cryo/get_interact_window(var/obj/item/device/multitool/M, var/mob/user)
return buffer(M)
. += buffer(M)
. += "<HR><b>Connected Cloning Pods:</b><br>"
var/obj/machinery/computer/cloning/C = holder
for(var/atom/cloning_pod in C.pods)
. += "[cloning_pod.name]<br>"
/datum/expansion/multitool/cryo/receive_buffer(var/obj/item/device/multitool/M, var/atom/buffer, var/mob/user)
var/obj/machinery/clonepod/P = buffer
@@ -17,9 +17,9 @@
var/html = get_interact_window(M, user)
if(html)
var/datum/browser/popup = new(usr, "multitool", holder.name, window_x, window_y)
var/datum/browser/popup = new(usr, "multitool", "Multitool Menu", window_x, window_y)
popup.set_content(html)
popup.set_title_image(user.browse_rsc_icon(holder.icon, holder.icon_state))
popup.set_title_image(user.browse_rsc_icon(M.icon, M.icon_state))
popup.open()
else
close_window(usr)
@@ -32,8 +32,9 @@
/datum/expansion/multitool/proc/buffer(var/obj/item/device/multitool/multitool)
. += "<b>Buffer Memory:</b><br>"
if(multitool.buffer_name)
. += "[multitool.buffer_name] <a href='?src=\ref[src];send=\ref[multitool.buffer_object]'>Send</a> <a href='?src=\ref[src];purge=1'>Purge</a><br>"
var/buffer_name = multitool.get_buffer_name()
if(buffer_name)
. += "[buffer_name] <a href='?src=\ref[src];send=\ref[multitool.buffer_object]'>Send</a> <a href='?src=\ref[src];purge=1'>Purge</a><br>"
else
. += "No connection stored in the buffer."
@@ -78,8 +79,10 @@
return MT_NOACTION
/datum/expansion/multitool/proc/send_buffer(var/obj/item/device/multitool/M, var/atom/buffer, var/mob/user)
if(M.get_buffer() == buffer)
if(M.get_buffer() == buffer && buffer)
receive_buffer(M, buffer, user)
else if(!buffer)
user << "<span class='warning'>Unable to acquire data from the buffered object. Purging from memory.</span>"
return MT_REFRESH
/datum/expansion/multitool/proc/receive_buffer(var/obj/item/device/multitool/M, var/atom/buffer, var/mob/user)