mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-07-14 09:27:45 +01:00
Docking Ports Management Program (#16802)
* stuff copied from the other branch * aurorastation.dme reorder * lint fixes * docks gui prettier --------- Co-authored-by: DreamySkrell <>
This commit is contained in:
@@ -94,6 +94,7 @@
|
||||
soundloop = new(src, enabled)
|
||||
initial_name = name
|
||||
listener = new("modular_computers", src)
|
||||
sync_linked()
|
||||
|
||||
/obj/item/modular_computer/Destroy()
|
||||
kill_program(TRUE)
|
||||
@@ -495,3 +496,26 @@
|
||||
/obj/item/modular_computer/on_slotmove(var/mob/living/user, slot)
|
||||
. = ..(user, slot)
|
||||
BITSET(user.hud_updateflag, ID_HUD) //Same reasoning as for IDs
|
||||
|
||||
// A late init operation called in SSshuttle for ship computers and holopads, used to attach the thing to the right ship.
|
||||
/obj/item/modular_computer/proc/attempt_hook_up(var/obj/effect/overmap/visitable/sector)
|
||||
SHOULD_CALL_PARENT(TRUE)
|
||||
if(!istype(sector))
|
||||
return FALSE
|
||||
if(sector.check_ownership(src))
|
||||
linked = sector
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
/obj/item/modular_computer/proc/sync_linked()
|
||||
var/obj/effect/overmap/visitable/sector = map_sectors["[z]"]
|
||||
if(!sector)
|
||||
return
|
||||
return attempt_hook_up_recursive(sector)
|
||||
|
||||
/obj/item/modular_computer/proc/attempt_hook_up_recursive(var/obj/effect/overmap/visitable/sector)
|
||||
if(attempt_hook_up(sector))
|
||||
return sector
|
||||
for(var/obj/effect/overmap/visitable/candidate in sector)
|
||||
if((. = .(candidate)))
|
||||
return
|
||||
|
||||
@@ -32,6 +32,7 @@
|
||||
var/doorcode = "smindicate"
|
||||
var/hidden = FALSE
|
||||
var/initial_name
|
||||
var/obj/effect/overmap/visitable/linked // overmap sector the computer is linked to
|
||||
|
||||
// Modular computers can run on various devices. Each DEVICE (Laptop, Console, Tablet,..)
|
||||
// must have it's own DMI file. Icon states must be called exactly the same in all files, but may look differently
|
||||
|
||||
@@ -199,6 +199,7 @@
|
||||
new /datum/computer_file/program/civilian/cargoorder(comp),
|
||||
new /datum/computer_file/program/card_mod(comp),
|
||||
new /datum/computer_file/program/comm(comp, TRUE),
|
||||
new /datum/computer_file/program/docks(comp),
|
||||
new /datum/computer_file/program/records/employment(comp)
|
||||
)
|
||||
return _prg_list
|
||||
@@ -260,6 +261,7 @@
|
||||
new /datum/computer_file/program/civilian/cargocontrol(comp),
|
||||
new /datum/computer_file/program/card_mod(comp),
|
||||
new /datum/computer_file/program/comm(comp, FALSE),
|
||||
new /datum/computer_file/program/docks(comp),
|
||||
new /datum/computer_file/program/records/employment(comp),
|
||||
new /datum/computer_file/program/records/security(comp)
|
||||
)
|
||||
@@ -280,6 +282,7 @@
|
||||
new /datum/computer_file/program/chat_client(comp),
|
||||
new /datum/computer_file/program/card_mod(comp),
|
||||
new /datum/computer_file/program/comm(comp, TRUE),
|
||||
new /datum/computer_file/program/docks(comp),
|
||||
new /datum/computer_file/program/camera_monitor(comp),
|
||||
new /datum/computer_file/program/digitalwarrant(comp),
|
||||
new /datum/computer_file/program/penal_mechs(comp),
|
||||
@@ -478,7 +481,7 @@
|
||||
description = "Contains the most common cargo programs as well as the OM's ones."
|
||||
available = FALSE
|
||||
|
||||
/datum/modular_computer_app_presets/supply/return_install_programs(obj/item/modular_computer/comp)
|
||||
/datum/modular_computer_app_presets/supply/om/return_install_programs(obj/item/modular_computer/comp)
|
||||
var/list/_prg_list = list(
|
||||
new /datum/computer_file/program/ntnetdownload(comp),
|
||||
new /datum/computer_file/program/filemanager(comp),
|
||||
@@ -488,7 +491,8 @@
|
||||
new /datum/computer_file/program/civilian/cargocontrol(comp),
|
||||
new /datum/computer_file/program/civilian/cargoorder(comp),
|
||||
new /datum/computer_file/program/civilian/cargodelivery(comp),
|
||||
new /datum/computer_file/program/comm(comp, FALSE)
|
||||
new /datum/computer_file/program/comm(comp, FALSE),
|
||||
new /datum/computer_file/program/docks(comp)
|
||||
)
|
||||
return _prg_list
|
||||
|
||||
|
||||
@@ -0,0 +1,53 @@
|
||||
/datum/computer_file/program/docks
|
||||
filename = "docks"
|
||||
filedesc = "Docking Ports Management Program"
|
||||
extended_desc = "Used to manage the docks, hangars, and any docked ships."
|
||||
program_icon_state = "docks"
|
||||
program_key_icon_state = "lightblue_key"
|
||||
color = LIGHT_COLOR_BLUE
|
||||
size = 8
|
||||
requires_ntnet = TRUE
|
||||
available_on_ntnet = TRUE
|
||||
required_access_run = access_heads
|
||||
required_access_download = access_heads
|
||||
usage_flags = PROGRAM_CONSOLE
|
||||
tgui_id = "Docks"
|
||||
|
||||
/datum/computer_file/program/docks/ui_data(mob/user)
|
||||
var/list/data = list()
|
||||
|
||||
// Gather data for computer header
|
||||
var/headerdata = get_header_data(data["_PC"])
|
||||
if(headerdata)
|
||||
data["_PC"] = headerdata
|
||||
. = data
|
||||
|
||||
var/obj/effect/overmap/visitable/connected = computer.linked
|
||||
|
||||
var/list/docks = list()
|
||||
if(connected)
|
||||
data["connected_name"] = connected.name
|
||||
for(var/landmark_tag in connected.tracked_dock_tags)
|
||||
var/obj/effect/shuttle_landmark/landmark = SSshuttle.registered_shuttle_landmarks[landmark_tag]
|
||||
if(landmark && istype(landmark))
|
||||
docks[++docks.len] = list(
|
||||
"name" = landmark.name
|
||||
)
|
||||
for(var/shuttle_key in SSshuttle.shuttles)
|
||||
var/datum/shuttle/shuttle = SSshuttle.shuttles[shuttle_key]
|
||||
if(shuttle && shuttle.current_location && shuttle.current_location.landmark_tag == landmark.landmark_tag)
|
||||
docks[docks.len]["shuttle"] = shuttle.name
|
||||
break
|
||||
else
|
||||
docks[++docks.len] = list(
|
||||
"name" = landmark_tag,
|
||||
"shuttle" = "???"
|
||||
)
|
||||
data["docks"] = docks
|
||||
|
||||
return data
|
||||
|
||||
/datum/computer_file/program/docks/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state)
|
||||
. = ..()
|
||||
if(.)
|
||||
return
|
||||
Reference in New Issue
Block a user