mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-07-10 23:47:08 +01:00
44bb1d5c82
Replaces the top floor of WITCH HAND with a small bar, several other minor fixes/cleanup in the area. <img width="1237" height="1217" alt="Screenshot 2026-04-21 130646" src="https://github.com/user-attachments/assets/fd89d713-9686-4b2f-9df8-aac5a44bda7c" /> Also, a minimap and portable map readers distributed at the spaceport and ghost role spawns. <img width="553" height="289" alt="image" src="https://github.com/user-attachments/assets/3b15998f-e0be-4db2-bc82-3e50dc457549" />
89 lines
2.6 KiB
Plaintext
89 lines
2.6 KiB
Plaintext
|
|
/obj/item/portable_map_reader
|
|
name = "portable map reader"
|
|
desc = "Displays a map of the local space, as well as any marked points of interest."
|
|
icon = 'icons/obj/item/gps.dmi'
|
|
icon_state = "gps"
|
|
item_state = "radio"
|
|
contained_sprite = TRUE
|
|
/// The map reader only shows that z-level (and any z-levels that z-level is connected to).
|
|
/// It will not show other z-levels, like if the user were to transport it elsewhere on a shuttle.
|
|
var/list/connected_z_levels = null
|
|
|
|
/// If zero/null, show the z-level of the user, otherwise show `z_override` z-level.
|
|
/// Set by GUI to, for example, show bottom deck of a multi-z ship while the user is on the top deck.
|
|
var/z_override = 0
|
|
/// If FALSE, do not display the Show/Hide Legend button
|
|
var/legend_enabled = FALSE
|
|
|
|
/obj/item/portable_map_reader/Initialize()
|
|
..()
|
|
return INITIALIZE_HINT_LATELOAD
|
|
|
|
/obj/item/portable_map_reader/LateInitialize()
|
|
set_connected_z_levels()
|
|
|
|
/// Set the connected z-levels from the z-level the reader spawned on.
|
|
/obj/item/portable_map_reader/proc/set_connected_z_levels()
|
|
connected_z_levels = GetConnectedZlevels(GET_Z(src))
|
|
|
|
/obj/item/portable_map_reader/attack_self(mob/user)
|
|
interact(user)
|
|
|
|
/obj/item/portable_map_reader/interact(mob/user)
|
|
ui_interact(user)
|
|
|
|
/obj/item/portable_map_reader/ui_interact(mob/user, datum/tgui/ui)
|
|
ui = SStgui.try_update_ui(user, src, ui)
|
|
if(!ui)
|
|
ui = new(user, src, "Map", "Map", 600, 400)
|
|
ui.open()
|
|
|
|
/obj/item/portable_map_reader/ui_data(mob/user)
|
|
var/list/data = list()
|
|
|
|
if(!connected_z_levels || !connected_z_levels.len)
|
|
set_connected_z_levels()
|
|
|
|
var/z_level = z_override ? z_override : user.z
|
|
if(z_level in connected_z_levels)
|
|
data["map_image"] = SSholomap.minimaps_area_colored_base64[z_level]
|
|
|
|
if(user.z in connected_z_levels)
|
|
data["user_x"] = user.x
|
|
data["user_y"] = user.y
|
|
else
|
|
data["user_x"] = 255/2
|
|
data["user_y"] = 255/2
|
|
data["user_z"] = user.z
|
|
|
|
data["station_levels"] = connected_z_levels
|
|
data["z_override"] = z_override
|
|
data["legend_enabled"] = legend_enabled
|
|
|
|
data["pois"] = list()
|
|
for(var/obj/effect/landmark/minimap_poi/poi as anything in SSholomap.pois)
|
|
data["pois"] += list(list(
|
|
"name" = poi.name,
|
|
"desc" = poi.desc,
|
|
"x" = poi.x,
|
|
"y" = poi.y,
|
|
"z" = poi.z,
|
|
))
|
|
|
|
return data
|
|
|
|
/obj/item/portable_map_reader/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state)
|
|
. = ..()
|
|
if(.)
|
|
return
|
|
if(action == "z_override")
|
|
z_override = text2num(params["z_override"])
|
|
|
|
// ------------------ odyssey scenario subtype
|
|
|
|
/obj/item/portable_map_reader/odyssey/set_connected_z_levels()
|
|
connected_z_levels = SSodyssey.scenario_zlevels
|
|
if(length(connected_z_levels))
|
|
z_override = connected_z_levels[1]
|