From 1f2c7cd9f605d12f95df8ece7d4ff52312a3f649 Mon Sep 17 00:00:00 2001 From: atermonera Date: Tue, 24 Jul 2018 20:09:04 -0700 Subject: [PATCH] Reorganize GPS to proper organization, important comments --- .../items/devices/communicator/cartridge.dm | 67 +++---------------- .../items/devices/communicator/helper.dm | 63 ++++++++++++++++- 2 files changed, 73 insertions(+), 57 deletions(-) diff --git a/code/game/objects/items/devices/communicator/cartridge.dm b/code/game/objects/items/devices/communicator/cartridge.dm index f9a1fbc8874..b570bc8c825 100644 --- a/code/game/objects/items/devices/communicator/cartridge.dm +++ b/code/game/objects/items/devices/communicator/cartridge.dm @@ -452,7 +452,7 @@ // *- Gas Scanner // *- Reagent Scanner // *- Halogen Counter -// -- GPS +// X- GPS - Balance // *- Signaler // Templates // -- Status Display Access @@ -464,9 +464,8 @@ // -- Supply Bot Access // *- Security Bot Access // *- Janitorial Locator Magicbox -// -- GPS Access +// X- GPS Access - Balance // *- Signaler Access -// X- Recipe lists - See service cartridge /obj/item/weapon/commcard/head/captain name = "\improper Value-PAK cartridge" desc = "Now with 200% more value!" @@ -494,9 +493,12 @@ // Explorer Cartridge // Devices -// -- GPS +// *- GPS // Templates -// -- GPS Access +// *- GPS Access + +// IMPORTANT: NOT MAPPED IN DUE TO BALANCE CONCERNS RE: FINDING THE VICTIMS OF ANTAGS. +// See suit sensors, specifically ease of turning them off, and variable level of settings which may or may not give location /obj/item/weapon/commcard/explorer name = "\improper Explorator cartridge" icon_state = "cart-tox" @@ -509,57 +511,10 @@ internal_devices |= new /obj/item/device/gps/explorer(src) /obj/item/weapon/commcard/explorer/get_data() - // GPS Access - var/intgps[0] // Gps devices within the commcard -- Allow tag edits, turning on/off, etc - var/extgps[0] // Gps devices not inside the commcard -- Print locations if a gps is on - var/stagps[0] // Gps status - var/obj/item/device/gps/cumulative = new(src) - cumulative.tracking = FALSE - cumulative.local_mode = TRUE // Won't detect long-range signals automatically - cumulative.long_range = FALSE - var/list/toggled_gps = list() // List of GPS units that are turned off before display_list() is called - - for(var/obj/item/device/gps/G in internal_devices) - var/gpsdata[0] - if(G.tracking && !G.emped) - cumulative.tracking = TRUE // Turn it on - if(G.long_range) - cumulative.long_range = TRUE // It can detect long-range - if(!G.local_mode) - cumulative.local_mode = FALSE // It is detecting long-range - - gpsdata["ref"] = "\ref[G]" - gpsdata["tag"] = G.gps_tag - gpsdata["power"] = G.tracking - gpsdata["local_mode"] = G.local_mode - gpsdata["long_range"] = G.long_range - gpsdata["hide_signal"] = G.hide_signal - gpsdata["can_hide"] = G.can_hide_signal - - intgps[++intgps.len] = gpsdata // Add it to the list - - if(G.tracking) - G.tracking = FALSE // Disable the internal gps units so they don't show up in the report - toggled_gps += G - - var/list/remote_gps = cumulative.display_list() - for(var/obj/item/device/gps/G in toggled_gps) - G.tracking = TRUE - - stagps["enabled"] = cumulative.tracking - stagps["long_range_en"] = (cumulative.long_range && !cumulative.local_mode) - - stagps["my_area_name"] = remote_gps["my_area_name"] - stagps["curr_x"] = remote_gps["curr_x"] - stagps["curr_y"] = remote_gps["curr_y"] - stagps["curr_z"] = remote_gps["curr_z"] - stagps["curr_z_name"] = remote_gps["curr_z_name"] - extgps = remote_gps["gps_list"] - - qdel(cumulative) + var/list/GPS = get_GPS_list() return list( - list("field" = "gps_access", "value" = intgps), - list("field" = "gps_signal", "value" = extgps), - list("field" = "gps_status", "value" = stagps) + list("field" = "gps_access", "value" = GPS[1]), + list("field" = "gps_signal", "value" = GPS[2]), + list("field" = "gps_status", "value" = GPS[3]) ) \ No newline at end of file diff --git a/code/game/objects/items/devices/communicator/helper.dm b/code/game/objects/items/devices/communicator/helper.dm index df1c9056a1f..cdc1ffbf78d 100644 --- a/code/game/objects/items/devices/communicator/helper.dm +++ b/code/game/objects/items/devices/communicator/helper.dm @@ -286,6 +286,7 @@ return powernet_target +// Compiles the locations of all janitorial paraphernalia, as used by janitorialLocator.tmpl /obj/item/weapon/commcard/proc/get_janitorial_locations() // Fetch janitorial locator var/janidata[0] @@ -325,4 +326,64 @@ janidata[++janidata.len] = list("field" = "[B.name]", "val" = textout) - return janidata \ No newline at end of file + return janidata + +// Compiles the three lists used by GPS_access.tmpl +// The contents of the three lists are inherently related, so separating them into different procs would be largely redundant +/obj/item/weapon/commcard/proc/get_GPS_lists() + // GPS Access + var/intgps[0] // Gps devices within the commcard -- Allow tag edits, turning on/off, etc + var/extgps[0] // Gps devices not inside the commcard -- Print locations if a gps is on + var/stagps[0] // Gps net status, location, whether it's on, if it's got long range + var/obj/item/device/gps/cumulative = new(src) + cumulative.tracking = FALSE + cumulative.local_mode = TRUE // Won't detect long-range signals automatically + cumulative.long_range = FALSE + var/list/toggled_gps = list() // List of GPS units that are turned off before display_list() is called + + for(var/obj/item/device/gps/G in internal_devices) + var/gpsdata[0] + if(G.tracking && !G.emped) + cumulative.tracking = TRUE // Turn it on + if(G.long_range) + cumulative.long_range = TRUE // It can detect long-range + if(!G.local_mode) + cumulative.local_mode = FALSE // It is detecting long-range + + gpsdata["ref"] = "\ref[G]" + gpsdata["tag"] = G.gps_tag + gpsdata["power"] = G.tracking + gpsdata["local_mode"] = G.local_mode + gpsdata["long_range"] = G.long_range + gpsdata["hide_signal"] = G.hide_signal + gpsdata["can_hide"] = G.can_hide_signal + + intgps[++intgps.len] = gpsdata // Add it to the list + + if(G.tracking) + G.tracking = FALSE // Disable the internal gps units so they don't show up in the report + toggled_gps += G + + var/list/remote_gps = cumulative.display_list() // Fetch information for all units except the ones inside of this device + + for(var/obj/item/device/gps/G in toggled_gps) // Reenable any internal GPS units + G.tracking = TRUE + + stagps["enabled"] = cumulative.tracking + stagps["long_range_en"] = (cumulative.long_range && !cumulative.local_mode) + + stagps["my_area_name"] = remote_gps["my_area_name"] + stagps["curr_x"] = remote_gps["curr_x"] + stagps["curr_y"] = remote_gps["curr_y"] + stagps["curr_z"] = remote_gps["curr_z"] + stagps["curr_z_name"] = remote_gps["curr_z_name"] + + extgps = remote_gps["gps_list"] // Compiled by the GPS + + qdel(cumulative) // Don't want spare GPS units building up in the contents + + return list( + intgps, + extgps, + stagps + ) \ No newline at end of file