mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-08-30 00:21:11 +01:00
Shuttle TGUI (#17432)
* Shuttle TGUI * eqeqeq * escapeescapeescape * bawkses * linter
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
//Shuttle controller computer for shuttles going between sectors
|
||||
/obj/machinery/computer/shuttle_control/explore
|
||||
name = "general shuttle control console"
|
||||
ui_template = "shuttle_control_console_exploration.tmpl"
|
||||
ui_template = "ShuttleControlConsoleMultiExplore"
|
||||
var/obj/effect/overmap/visitable/ship/connected //Ship we're connected to
|
||||
|
||||
/obj/machinery/computer/shuttle_control/explore/Initialize()
|
||||
@@ -21,8 +21,10 @@
|
||||
LAZYREMOVE(connected.consoles, src)
|
||||
. = ..()
|
||||
|
||||
/obj/machinery/computer/shuttle_control/explore/get_ui_data(var/datum/shuttle/autodock/overmap/shuttle)
|
||||
/obj/machinery/computer/shuttle_control/explore/ui_data(mob/user)
|
||||
. = ..()
|
||||
|
||||
var/datum/shuttle/autodock/overmap/shuttle = SSshuttle.shuttles[shuttle_tag]
|
||||
if(istype(shuttle))
|
||||
var/total_gas = 0
|
||||
for(var/obj/structure/fuel_port/FP in shuttle.fuel_ports) //loop through fuel ports
|
||||
@@ -42,18 +44,18 @@
|
||||
"fuel_span" = fuel_span
|
||||
)
|
||||
|
||||
/obj/machinery/computer/shuttle_control/explore/handle_topic_href(var/datum/shuttle/autodock/overmap/shuttle, var/list/href_list)
|
||||
/obj/machinery/computer/shuttle_control/explore/handle_topic_href(var/mob/user, var/datum/shuttle/autodock/overmap/shuttle, var/action, var/list/params)
|
||||
. = ..()
|
||||
if(. != null)
|
||||
return
|
||||
|
||||
if(href_list["pick"])
|
||||
if(action == "pick")
|
||||
var/list/possible_d = shuttle.get_possible_destinations()
|
||||
var/D
|
||||
if(length(possible_d))
|
||||
D = input("Choose shuttle destination", "Shuttle Destination") as null|anything in possible_d
|
||||
else
|
||||
to_chat(usr,"<span class='warning'>No valid landing sites in range.</span>")
|
||||
if(CanInteract(usr, physical_state) && (D in possible_d))
|
||||
to_chat(usr, SPAN_WARNING("No valid landing sites in range."))
|
||||
if(CanInteract(user, physical_state) && (D in possible_d))
|
||||
shuttle.set_destination(possible_d[D])
|
||||
return TOPIC_REFRESH
|
||||
return TRUE
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
var/shuttle_tag // Used to coordinate data in shuttle controller.
|
||||
var/hacked = FALSE // Has been emagged, no access restrictions.
|
||||
|
||||
var/ui_template = "shuttle_control_console.tmpl"
|
||||
var/ui_template = "ShuttleControlConsole"
|
||||
var/list/linked_helmets = list()
|
||||
var/can_rename_ship = FALSE
|
||||
|
||||
@@ -52,26 +52,6 @@
|
||||
if(check_rights(R_ADMIN, 0, user))
|
||||
ui_interact(user)
|
||||
|
||||
/obj/machinery/computer/shuttle_control/proc/get_ui_data(var/datum/shuttle/autodock/shuttle)
|
||||
var/shuttle_state
|
||||
switch(shuttle.moving_status)
|
||||
if(SHUTTLE_IDLE) shuttle_state = "idle"
|
||||
if(SHUTTLE_WARMUP) shuttle_state = "warmup"
|
||||
if(SHUTTLE_INTRANSIT) shuttle_state = "in_transit"
|
||||
|
||||
return list(
|
||||
"shuttle_status" = get_shuttle_status(shuttle),
|
||||
"shuttle_state" = shuttle_state,
|
||||
"has_docking" = shuttle.active_docking_controller? 1 : 0,
|
||||
"docking_status" = shuttle.active_docking_controller? shuttle.active_docking_controller.get_docking_status() : null,
|
||||
"docking_override" = shuttle.active_docking_controller? shuttle.active_docking_controller.override_enabled : null,
|
||||
"can_launch" = shuttle.can_launch(),
|
||||
"can_cancel" = shuttle.can_cancel(),
|
||||
"can_force" = shuttle.can_force(),
|
||||
"can_rename_ship" = can_rename_ship,
|
||||
"ship_name" = shuttle.name,
|
||||
)
|
||||
|
||||
/obj/machinery/computer/shuttle_control/proc/get_shuttle_status(var/datum/shuttle/autodock/shuttle)
|
||||
switch(shuttle.process_state)
|
||||
if(IDLE_STATE)
|
||||
@@ -101,50 +81,71 @@
|
||||
return FALSE
|
||||
return TRUE
|
||||
|
||||
/obj/machinery/computer/shuttle_control/proc/handle_topic_href(var/datum/shuttle/autodock/shuttle, var/list/href_list, var/user)
|
||||
if(!istype(shuttle))
|
||||
return TOPIC_NOACTION
|
||||
|
||||
if(href_list["move"])
|
||||
if(can_move(shuttle, user))
|
||||
shuttle.launch(src)
|
||||
return TOPIC_REFRESH
|
||||
return TOPIC_HANDLED
|
||||
|
||||
if(href_list["force"])
|
||||
if(can_move(shuttle, user))
|
||||
shuttle.force_launch(src)
|
||||
return TOPIC_REFRESH
|
||||
return TOPIC_HANDLED
|
||||
|
||||
if(href_list["cancel"])
|
||||
shuttle.cancel_launch(src)
|
||||
return TOPIC_REFRESH
|
||||
|
||||
if(href_list["rename"])
|
||||
var/new_name = input(usr, "Select new name for this ship.", "Rename this ship", shuttle.name)
|
||||
if(new_name)
|
||||
shuttle.name = new_name
|
||||
return TOPIC_REFRESH
|
||||
|
||||
/obj/machinery/computer/shuttle_control/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1)
|
||||
/obj/machinery/computer/shuttle_control/ui_interact(mob/user, datum/tgui/ui)
|
||||
var/datum/shuttle/autodock/shuttle = SSshuttle.shuttles[shuttle_tag]
|
||||
if (!istype(shuttle))
|
||||
to_chat(user,"<span class='warning'>Unable to establish link with the shuttle.</span>")
|
||||
if(!istype(shuttle))
|
||||
to_chat(user, SPAN_WARNING("Unable to establish link with the shuttle."))
|
||||
return
|
||||
|
||||
var/list/data = get_ui_data(shuttle)
|
||||
|
||||
ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open)
|
||||
ui = SStgui.try_update_ui(user, src, ui)
|
||||
if(!ui)
|
||||
ui = new(user, src, ui_key, ui_template, "[shuttle_tag] Shuttle Control", 470, 450)
|
||||
ui.set_initial_data(data)
|
||||
ui = new(user, src, ui_template, "[shuttle_tag] Shuttle Control", ui_x=470, ui_y=450)
|
||||
ui.open()
|
||||
ui.set_auto_update(1)
|
||||
|
||||
/obj/machinery/computer/shuttle_control/Topic(href, href_list)
|
||||
..()
|
||||
handle_topic_href(SSshuttle.shuttles[shuttle_tag], href_list, usr)
|
||||
/obj/machinery/computer/shuttle_control/ui_data(mob/user)
|
||||
var/datum/shuttle/autodock/shuttle = SSshuttle.shuttles[shuttle_tag]
|
||||
|
||||
var/shuttle_state
|
||||
switch(shuttle.moving_status)
|
||||
if(SHUTTLE_IDLE) shuttle_state = "idle"
|
||||
if(SHUTTLE_WARMUP) shuttle_state = "warmup"
|
||||
if(SHUTTLE_INTRANSIT) shuttle_state = "in_transit"
|
||||
|
||||
return list(
|
||||
"shuttle_status" = get_shuttle_status(shuttle),
|
||||
"shuttle_state" = shuttle_state,
|
||||
"has_docking" = shuttle.active_docking_controller? 1 : 0,
|
||||
"docking_status" = shuttle.active_docking_controller? shuttle.active_docking_controller.get_docking_status() : null,
|
||||
"docking_override" = shuttle.active_docking_controller? shuttle.active_docking_controller.override_enabled : null,
|
||||
"can_launch" = shuttle.can_launch(),
|
||||
"can_cancel" = shuttle.can_cancel(),
|
||||
"can_force" = shuttle.can_force(),
|
||||
"can_rename_ship" = can_rename_ship,
|
||||
"ship_name" = shuttle.name,
|
||||
)
|
||||
|
||||
/obj/machinery/computer/shuttle_control/ui_act(action, params)
|
||||
. = ..()
|
||||
if(.)
|
||||
return
|
||||
|
||||
return handle_topic_href(usr, SSshuttle.shuttles[shuttle_tag], action, params)
|
||||
|
||||
/obj/machinery/computer/shuttle_control/proc/handle_topic_href(var/mob/user, var/datum/shuttle/autodock/shuttle, var/action, var/list/params)
|
||||
if(!istype(shuttle))
|
||||
return FALSE
|
||||
|
||||
if(action == "move")
|
||||
if(can_move(shuttle, user))
|
||||
shuttle.launch(src)
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
if(action == "force")
|
||||
if(can_move(shuttle, user))
|
||||
shuttle.force_launch(src)
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
if(action == "cancel")
|
||||
shuttle.cancel_launch(src)
|
||||
return TRUE
|
||||
|
||||
if(action == "rename")
|
||||
var/new_name = input(user, "Select new name for this ship.", "Rename this ship", shuttle.name)
|
||||
if(new_name)
|
||||
shuttle.name = new_name
|
||||
return TRUE
|
||||
|
||||
/obj/machinery/computer/shuttle_control/proc/update_helmets(var/datum/shuttle/autodock/shuttle)
|
||||
var/shuttle_status = get_shuttle_status(shuttle)
|
||||
|
||||
@@ -1,39 +1,43 @@
|
||||
/obj/machinery/computer/shuttle_control/multi
|
||||
ui_template = "shuttle_control_console_multi.tmpl"
|
||||
ui_template = "ShuttleControlConsoleMulti"
|
||||
|
||||
/obj/machinery/computer/shuttle_control/multi/get_ui_data(var/datum/shuttle/autodock/multi/shuttle)
|
||||
/obj/machinery/computer/shuttle_control/multi/ui_data(mob/user)
|
||||
. = ..()
|
||||
|
||||
var/datum/shuttle/autodock/multi/shuttle = SSshuttle.shuttles[shuttle_tag]
|
||||
if(istype(shuttle))
|
||||
. += list(
|
||||
"destination_name" = shuttle.next_location? shuttle.next_location.name : "No destination set.",
|
||||
"can_pick" = shuttle.moving_status == SHUTTLE_IDLE,
|
||||
)
|
||||
|
||||
/obj/machinery/computer/shuttle_control/multi/handle_topic_href(var/datum/shuttle/autodock/multi/shuttle, var/list/href_list)
|
||||
..()
|
||||
|
||||
if(href_list["pick"])
|
||||
var/dest_key = input("Choose shuttle destination", "Shuttle Destination") as null|anything in shuttle.get_destinations()
|
||||
/obj/machinery/computer/shuttle_control/multi/handle_topic_href(var/mob/user, var/datum/shuttle/autodock/multi/shuttle, var/action, var/list/params)
|
||||
if(action == "pick")
|
||||
var/dest_key = input(user, "Choose shuttle destination", "Shuttle Destination") as null|anything in shuttle.get_destinations()
|
||||
if(dest_key && (!use_check(usr) || (isobserver(usr) && check_rights(R_ADMIN, FALSE))))
|
||||
shuttle.set_destination(dest_key, usr)
|
||||
return TOPIC_REFRESH
|
||||
return TRUE
|
||||
|
||||
return ..()
|
||||
|
||||
/obj/machinery/computer/shuttle_control/multi/antag
|
||||
ui_template = "shuttle_control_console_antag.tmpl"
|
||||
ui_template = "ShuttleControlConsoleMultiAntag"
|
||||
|
||||
/obj/machinery/computer/shuttle_control/multi/antag/get_ui_data(var/datum/shuttle/autodock/multi/antag/shuttle)
|
||||
/obj/machinery/computer/shuttle_control/multi/antag/ui_data(mob/user)
|
||||
. = ..()
|
||||
|
||||
var/datum/shuttle/autodock/multi/antag/shuttle = SSshuttle.shuttles[shuttle_tag]
|
||||
if(istype(shuttle))
|
||||
. += list(
|
||||
"cloaked" = shuttle.cloaked,
|
||||
)
|
||||
|
||||
/obj/machinery/computer/shuttle_control/multi/antag/handle_topic_href(var/datum/shuttle/autodock/multi/antag/shuttle, var/list/href_list)
|
||||
..()
|
||||
|
||||
if(href_list["toggle_cloaked"])
|
||||
/obj/machinery/computer/shuttle_control/multi/antag/handle_topic_href(var/mob/user, var/datum/shuttle/autodock/multi/antag/shuttle, var/action, var/list/params)
|
||||
if(action == "toggle_cloaked")
|
||||
shuttle.cloaked = !shuttle.cloaked
|
||||
return TOPIC_REFRESH
|
||||
return TRUE
|
||||
|
||||
return ..()
|
||||
|
||||
/obj/machinery/computer/shuttle_control/multi/can_move(var/datum/shuttle/autodock/shuttle, var/user)
|
||||
if(istype(shuttle, /datum/shuttle/autodock/multi/antag))
|
||||
|
||||
@@ -5,40 +5,40 @@
|
||||
icon_screen = null
|
||||
density = FALSE
|
||||
req_access = null
|
||||
ui_template = "shuttle_control_console_multi_lift.tmpl"
|
||||
ui_template = "ShuttleControlConsoleMultiLift"
|
||||
|
||||
/obj/machinery/computer/shuttle_control/multi/lift/wall
|
||||
icon_state = "lift_wall"
|
||||
|
||||
/obj/machinery/computer/shuttle_control/multi/lift/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1)
|
||||
/obj/machinery/computer/shuttle_control/multi/lift/ui_interact(mob/user, datum/tgui/ui)
|
||||
var/datum/shuttle/autodock/multi/lift/shuttle = SSshuttle.shuttles[shuttle_tag]
|
||||
if(!istype(shuttle))
|
||||
to_chat(user, SPAN_WARNING("Unable to establish link with the shuttle."))
|
||||
return
|
||||
|
||||
var/list/data = get_ui_data(shuttle)
|
||||
|
||||
ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open)
|
||||
ui = SStgui.try_update_ui(user, src, ui)
|
||||
if(!ui)
|
||||
ui = new(user, src, ui_key, ui_template, "[shuttle_tag] Control", 470, 300)
|
||||
ui.set_initial_data(data)
|
||||
ui = new(user, src, ui_template, "[shuttle_tag] Control", ui_x=470, ui_y=300)
|
||||
ui.open()
|
||||
ui.set_auto_update(TRUE)
|
||||
|
||||
/obj/machinery/computer/shuttle_control/multi/lift/get_ui_data(var/datum/shuttle/autodock/multi/lift/shuttle)
|
||||
/obj/machinery/computer/shuttle_control/multi/lift/ui_data(mob/user)
|
||||
. = ..()
|
||||
|
||||
var/datum/shuttle/autodock/multi/lift/shuttle = SSshuttle.shuttles[shuttle_tag]
|
||||
if(istype(shuttle))
|
||||
var/list/destination_keys = list()
|
||||
for(var/key in shuttle.destinations_cache)
|
||||
for(var/key in shuttle.get_destinations())
|
||||
destination_keys.Add(key)
|
||||
. += list(
|
||||
"destinations" = destination_keys,
|
||||
)
|
||||
|
||||
/obj/machinery/computer/shuttle_control/multi/handle_topic_href(var/datum/shuttle/autodock/multi/lift/shuttle, var/list/href_list)
|
||||
if(href_list["pick"] && href_list["destination"])
|
||||
shuttle.set_destination(href_list["destination"], usr)
|
||||
return TOPIC_REFRESH
|
||||
if(href_list["cancel"])
|
||||
/obj/machinery/computer/shuttle_control/multi/lift/handle_topic_href(var/mob/user, var/datum/shuttle/autodock/multi/lift/shuttle, var/action, var/list/params)
|
||||
if(action == "pick")
|
||||
shuttle.set_destination(params["destination"], usr)
|
||||
return TRUE
|
||||
|
||||
if(action == "cancel")
|
||||
shuttle.final_location = null // no return so parent can handle it
|
||||
..()
|
||||
|
||||
return ..()
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
|
||||
/datum/shuttle/autodock/ferry/emergency/arrived()
|
||||
. = ..()
|
||||
|
||||
|
||||
if(!emergency_controller.has_evacuated())
|
||||
emergency_controller.finish_preparing_evac()
|
||||
|
||||
@@ -62,7 +62,7 @@
|
||||
|
||||
// If the emergency shuttle is waiting to leave the station and the world time exceeded the force time
|
||||
if(evacuation_controller.is_prepared() && (world.time > emergency_controller.force_time))
|
||||
return 0
|
||||
return 0
|
||||
|
||||
return ..()
|
||||
|
||||
@@ -176,8 +176,18 @@
|
||||
read_authorization(W)
|
||||
..()
|
||||
|
||||
/obj/machinery/computer/shuttle_control/emergency/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1)
|
||||
var/data[0]
|
||||
/obj/machinery/computer/shuttle_control/emergency/ui_interact(mob/user, datum/tgui/ui)
|
||||
var/datum/shuttle/autodock/ferry/emergency/shuttle = SSshuttle.shuttles[shuttle_tag]
|
||||
if(!istype(shuttle))
|
||||
to_chat(user, SPAN_WARNING("Unable to establish link with the shuttle."))
|
||||
return
|
||||
|
||||
ui = SStgui.try_update_ui(user, src, ui)
|
||||
if(!ui)
|
||||
ui = new(user, src, "EscapeShuttleControlConsole", "Escape Shuttle Control", ui_x=470, ui_y=420)
|
||||
ui.open()
|
||||
|
||||
/obj/machinery/computer/shuttle_control/emergency/ui_data(mob/user)
|
||||
var/datum/shuttle/autodock/ferry/emergency/shuttle = SSshuttle.shuttles[shuttle_tag]
|
||||
if (!istype(shuttle))
|
||||
return
|
||||
@@ -221,7 +231,7 @@
|
||||
|
||||
var/has_auth = has_authorization()
|
||||
|
||||
data = list(
|
||||
return list(
|
||||
"shuttle_status" = shuttle_status,
|
||||
"shuttle_state" = shuttle_state,
|
||||
"has_docking" = shuttle.active_docking_controller? 1 : 0,
|
||||
@@ -231,27 +241,19 @@
|
||||
"can_cancel" = shuttle.can_cancel(src),
|
||||
"can_force" = shuttle.can_force(src),
|
||||
"auth_list" = auth_list,
|
||||
"has_auth" = has_auth,
|
||||
"user" = debug? user : null
|
||||
"has_auth" = has_auth
|
||||
)
|
||||
|
||||
ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open)
|
||||
/obj/machinery/computer/shuttle_control/emergency/ui_act(action, params)
|
||||
. = ..()
|
||||
if(.)
|
||||
return
|
||||
|
||||
if (!ui)
|
||||
ui = new(user, src, ui_key, "escape_shuttle_control_console.tmpl", "Shuttle Control", 470, 420)
|
||||
ui.set_initial_data(data)
|
||||
ui.open()
|
||||
ui.set_auto_update(1)
|
||||
|
||||
/obj/machinery/computer/shuttle_control/emergency/Topic(href, href_list)
|
||||
if(..())
|
||||
return 1
|
||||
|
||||
if(href_list["removeid"])
|
||||
var/dna_hash = href_list["removeid"]
|
||||
if(action == "removeid")
|
||||
var/dna_hash = params["removeid"]
|
||||
authorized -= dna_hash
|
||||
|
||||
if(!emagged && href_list["scanid"])
|
||||
if(!emagged && action == "scanid")
|
||||
//They selected an empty entry. Try to scan their id.
|
||||
if (ishuman(usr))
|
||||
var/mob/living/carbon/human/H = usr
|
||||
|
||||
@@ -58,7 +58,7 @@
|
||||
|
||||
/obj/machinery/computer/shuttle_control/lift
|
||||
name = "lift controller"
|
||||
ui_template = "shuttle_control_console_lift.tmpl"
|
||||
ui_template = "ShuttleControlConsoleLift"
|
||||
icon = 'icons/obj/computer.dmi'
|
||||
icon_state = "lift"
|
||||
icon_screen = null
|
||||
|
||||
Reference in New Issue
Block a user