Shuttle TGUI (#17432)

* Shuttle TGUI

* eqeqeq

* escapeescapeescape

* bawkses

* linter
This commit is contained in:
Geeves
2023-09-29 22:38:14 +00:00
committed by GitHub
parent c15a0a1469
commit 33094b36de
21 changed files with 776 additions and 575 deletions
@@ -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
+60 -59
View File
@@ -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)
+19 -15
View File
@@ -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 ..()
+23 -21
View File
@@ -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
+1 -1
View File
@@ -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