/obj/machinery/computer/launchpad
name = "\improper launchpad control console"
desc = "Used to teleport objects to and from a launchpad."
icon_screen = "teleport"
icon_keyboard = "teleport_key"
circuit = /obj/item/circuitboard/computer/launchpad_console
var/sending = TRUE
var/current_pad //current pad viewed on the screen
var/list/obj/machinery/launchpad/launchpads
var/maximum_pads = 4
/obj/machinery/computer/launchpad/Initialize()
launchpads = list()
. = ..()
/obj/machinery/computer/launchpad/attack_paw(mob/user)
to_chat(user, "You are too primitive to use this computer!")
return
/obj/machinery/computer/launchpad/attackby(obj/item/W, mob/user, params)
if(istype(W, /obj/item/multitool))
var/obj/item/multitool/M = W
if(M.buffer && istype(M.buffer, /obj/machinery/launchpad))
if(LAZYLEN(launchpads) < maximum_pads)
launchpads |= M.buffer
M.buffer = null
to_chat(user, "You upload the data from the [W.name]'s buffer.")
else
to_chat(user, "[src] cannot handle any more connections!")
else
return ..()
/obj/machinery/computer/launchpad/proc/pad_exists(number)
var/obj/machinery/launchpad/pad = launchpads[number]
if(QDELETED(pad))
return FALSE
return TRUE
/obj/machinery/computer/launchpad/proc/get_pad(number)
var/obj/machinery/launchpad/pad = launchpads[number]
return pad
/obj/machinery/computer/launchpad/ui_interact(mob/user)
. = ..()
var/list/t = list()
if(!LAZYLEN(launchpads))
obj_flags &= ~IN_USE //Yeah so if you deconstruct teleporter while its in the process of shooting it wont disable the console
t += "
No launchpad located.
"
else
for(var/i in 1 to LAZYLEN(launchpads))
if(pad_exists(i))
var/obj/machinery/launchpad/pad = get_pad(i)
if(pad.stat & NOPOWER)
t+= "[pad.display_name]"
else
t+= "[pad.display_name]"
else
launchpads -= get_pad(i)
t += "
"
if(current_pad)
var/obj/machinery/launchpad/pad = get_pad(current_pad)
t += "[pad.display_name]
"
t += "Rename"
t += "Remove
"
t += "O" //up-left
t += "^" //up
t += "O
" //up-right
t += "<"//left
t += "R"//reset to 0
t += ">
"//right
t += "O"//down-left
t += "v"//down
t += "O
"//down-right
t += "
"
t += "Current offset:
"
t += "[abs(pad.y_offset)] [pad.y_offset > 0 ? "N":"S"]
"
t += "[abs(pad.x_offset)] [pad.x_offset > 0 ? "E":"W"]
"
t += "
Launch"
t += " Pull"
var/datum/browser/popup = new(user, "launchpad", name, 300, 500)
popup.set_content(t.Join())
popup.open()
/obj/machinery/computer/launchpad/proc/teleport(mob/user, obj/machinery/launchpad/pad)
if(QDELETED(pad))
to_chat(user, "ERROR: Launchpad not responding. Check launchpad integrity.")
return
if(!pad.isAvailable())
to_chat(user, "ERROR: Launchpad not operative. Make sure the launchpad is ready and powered.")
return
pad.doteleport(user, sending)
/obj/machinery/computer/launchpad/Topic(href, href_list)
var/obj/machinery/launchpad/pad
if(href_list["pad"])
pad = get_pad(text2num(href_list["pad"]))
if(..())
return
if(!LAZYLEN(launchpads))
updateDialog()
return
if(href_list["choose_pad"])
current_pad = text2num(href_list["pad"])
if(href_list["raisex"])
if(pad.x_offset < pad.range)
pad.x_offset++
if(href_list["lowerx"])
if(pad.x_offset > (pad.range * -1))
pad.x_offset--
if(href_list["raisey"])
if(pad.y_offset < pad.range)
pad.y_offset++
if(href_list["lowery"])
if(pad.y_offset > (pad.range * -1))
pad.y_offset--
if(href_list["reset"])
pad.y_offset = 0
pad.x_offset = 0
if(href_list["change_name"])
var/new_name = stripped_input(usr, "What do you wish to name the launchpad?", "Launchpad", pad.display_name, 15)
if(!new_name)
return
pad.display_name = new_name
if(href_list["remove"])
if(usr && alert(usr, "Are you sure?", "Remove Launchpad", "I'm Sure", "Abort") != "Abort")
launchpads -= pad
if(href_list["launch"])
sending = TRUE
teleport(usr, pad)
if(href_list["pull"])
sending = FALSE
teleport(usr, pad)
updateDialog()