diff --git a/code/game/machinery/buttons.dm b/code/game/machinery/buttons.dm
index 19e4235007a..dc8fc08b77d 100644
--- a/code/game/machinery/buttons.dm
+++ b/code/game/machinery/buttons.dm
@@ -32,10 +32,10 @@
if(req_access.len || req_one_access.len)
board = new(src)
if(req_access.len)
- board.conf_access = req_access
+ board.accesses = req_access
else
- board.use_one_access = 1
- board.conf_access = req_one_access
+ board.one_access = 1
+ board.accesses = req_one_access
if(id && istype(device, /obj/item/device/assembly/control))
var/obj/item/device/assembly/control/A = device
@@ -85,10 +85,10 @@
return
W.loc = src
board = W
- if(board.use_one_access)
- req_one_access = board.conf_access
+ if(board.one_access)
+ req_one_access = board.accesses
else
- req_access = board.conf_access
+ req_access = board.accesses
user << "You add [W] to the button."
if(!device && !board && istype(W, /obj/item/weapon/wrench))
diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm
index 3eb9c4243e3..8dd4972fb0e 100644
--- a/code/game/machinery/doors/airlock.dm
+++ b/code/game/machinery/doors/airlock.dm
@@ -880,10 +880,10 @@ About the new airlock wires panel:
if(!electronics)
ae = new/obj/item/weapon/electronics/airlock( src.loc )
if(req_one_access)
- ae.use_one_access = 1
- ae.conf_access = src.req_one_access
+ ae.one_access = 1
+ ae.accesses = src.req_one_access
else
- ae.conf_access = src.req_access
+ ae.accesses = src.req_access
else
ae = electronics
electronics = null
diff --git a/code/game/machinery/doors/airlock_electronics.dm b/code/game/machinery/doors/airlock_electronics.dm
index 18def41a7a6..63bce544e72 100644
--- a/code/game/machinery/doors/airlock_electronics.dm
+++ b/code/game/machinery/doors/airlock_electronics.dm
@@ -1,106 +1,58 @@
-//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:31
-
/obj/item/weapon/electronics/airlock
name = "airlock electronics"
req_access = list(access_maint_tunnels)
- var/list/conf_access = null
- var/use_one_access = 0 //If the door should require ALL or only ONE of the listed accesses.
- var/last_configurator = null
- var/locked = 1
+ var/list/accesses = list()
+ var/one_access = 0
/obj/item/weapon/electronics/airlock/attack_self(mob/user)
- if (!ishuman(user) && !usr.has_unlimited_silicon_privilege)
- return ..(user)
+ if (!user) return
+ interact(user)
- var/mob/living/carbon/human/H = user
- if(H.getBrainLoss() >= 60)
- return
+/obj/item/weapon/electronics/airlock/interact(mob/user)
+ add_fingerprint(user)
+ ui_interact(user)
- var/t1 = text("")
+/obj/item/weapon/electronics/airlock/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, force_open = 0)
+ SSnano.try_update_ui(user, src, ui_key, ui, force_open = force_open)
+ if (!ui)
+ ui = new(user, src, ui_key, "airlock_electronics.tmpl", name, 975, 415, state = hands_state)
+ ui.open()
+/obj/item/weapon/electronics/airlock/get_ui_data()
+ var/list/data = list()
+ var/list/regions = list()
- if (last_configurator)
- t1 += "Operator: [last_configurator]
"
+ for(var/i in 1 to 7)
+ var/list/region = list()
+ var/list/accesses = list()
+ for(var/j in get_region_accesses(i))
+ var/list/access = list()
+ access["name"] = get_access_desc(j)
+ access["id"] = j
+ access["req"] = (j in src.accesses)
+ accesses[++accesses.len] = access
+ region["name"] = get_region_accesses_name(i)
+ region["accesses"] = accesses
+ regions[++regions.len] = region
+ data["regions"] = regions
+ data["oneAccess"] = one_access
- if (locked)
- t1 += "Swipe ID
"
- else
- t1 += "Lock Interface
"
-
- if(use_one_access)
- t1 += "Restriction Type: At least one access required
"
- else
- t1 += "Restriction Type: All accesses required
"
-
- t1 += "Remove All
"
-
- var/accesses = ""
- accesses += "Access
"
- accesses += ""
- t1 += "[accesses]"
-
- t1 += text("Close
\n", src)
-
- var/datum/browser/popup = new(user, "airlock_electronics", "Access Control", 900, 500)
- popup.set_content(t1)
- popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state))
- popup.open()
- onclose(user, "airlock")
+ return data
/obj/item/weapon/electronics/airlock/Topic(href, href_list)
- ..()
- if (usr.stat || usr.restrained() || (!ishuman(usr) && !usr.has_unlimited_silicon_privilege))
- return
- if (href_list["close"])
- usr << browse(null, "window=airlock")
+ if(..())
return
- if (href_list["login"])
- if(allowed(usr))
- src.locked = 0
- src.last_configurator = usr.name
-
- if (locked)
- return
-
- if (href_list["logout"])
- locked = 1
-
- if (href_list["access"])
- toggle_access(href_list["access"])
-
- attack_self(usr)
-
-/obj/item/weapon/electronics/airlock/proc/toggle_access(acc)
- if (acc == "all")
- conf_access = null
- else if(acc == "one")
- use_one_access = !use_one_access
- else
- var/req = text2num(acc)
-
- if (conf_access == null)
- conf_access = list()
-
- if (!(req in conf_access))
- conf_access += req
+ if(href_list["access"])
+ if(href_list["access"] == "clear")
+ accesses = list()
+ one_access = 0
+ else if(href_list["access"] == "one")
+ one_access = !one_access
else
- conf_access -= req
- if (!conf_access.len)
- conf_access = null
-
+ var/access = text2num(href_list["access"])
+ if (!(access in accesses))
+ accesses += access
+ else
+ accesses -= access
diff --git a/code/game/machinery/doors/windowdoor.dm b/code/game/machinery/doors/windowdoor.dm
index 1ca5d29b760..adfa82be9b0 100644
--- a/code/game/machinery/doors/windowdoor.dm
+++ b/code/game/machinery/doors/windowdoor.dm
@@ -311,10 +311,10 @@
if(!electronics)
ae = new/obj/item/weapon/electronics/airlock( src.loc )
if(req_one_access)
- ae.use_one_access = 1
- ae.conf_access = src.req_one_access
+ ae.one_access = 1
+ ae.accesses = src.req_one_access
else
- ae.conf_access = src.req_access
+ ae.accesses = src.req_access
else
ae = electronics
electronics = null
diff --git a/code/game/objects/items/weapons/RCD.dm b/code/game/objects/items/weapons/RCD.dm
index 45d48b4fb1c..3ea0df9e3c4 100644
--- a/code/game/objects/items/weapons/RCD.dm
+++ b/code/game/objects/items/weapons/RCD.dm
@@ -34,8 +34,6 @@ RCD
var/list/conf_access = null
var/use_one_access = 0 //If the airlock should require ALL or only ONE of the listed accesses.
- var/last_configurator = null
- var/locked = 1
/* Construction costs */
@@ -82,39 +80,32 @@ RCD
var/t1 = text("")
- if (last_configurator)
- t1 += "Operator: [last_configurator]
"
- if (locked)
- t1 += "Swipe ID
"
+ if(use_one_access)
+ t1 += "Restriction Type: At least one access required
"
else
- t1 += "Lock Interface
"
+ t1 += "Restriction Type: All accesses required
"
- if(use_one_access)
- t1 += "Restriction Type: At least one access required
"
- else
- t1 += "Restriction Type: All accesses required
"
+ t1 += "Remove All
"
- t1 += "Remove All
"
-
- var/accesses = ""
- accesses += "Access
"
- accesses += ""
- t1 += "[accesses]"
+ var/accesses = ""
+ accesses += "Access
"
+ accesses += ""
+ t1 += "[accesses]"
t1 += text("Close
\n", src)
@@ -132,17 +123,6 @@ RCD
usr << browse(null, "window=airlock")
return
- if (href_list["login"])
- if(allowed(usr))
- src.locked = 0
- src.last_configurator = usr.name
-
- if (locked)
- return
-
- if (href_list["logout"])
- locked = 1
-
if (href_list["access"])
toggle_access(href_list["access"])
@@ -364,15 +344,13 @@ RCD
T.electronics = new/obj/item/weapon/electronics/airlock( src.loc )
if(conf_access)
- T.electronics.conf_access = conf_access.Copy()
- T.electronics.use_one_access = use_one_access
- T.electronics.last_configurator = last_configurator
- T.electronics.locked = locked
+ T.electronics.accesses = conf_access.Copy()
+ T.electronics.one_access = use_one_access
- if(T.electronics.use_one_access)
- T.req_one_access = T.electronics.conf_access
+ if(T.electronics.one_access)
+ T.req_one_access = T.electronics.accesses
else
- T.req_access = T.electronics.conf_access
+ T.req_access = T.electronics.accesses
if(!T.checkForMultipleDoors())
qdel(T)
diff --git a/code/game/objects/structures/displaycase.dm b/code/game/objects/structures/displaycase.dm
index 4f7d765d7c0..58e8c3f2a7b 100644
--- a/code/game/objects/structures/displaycase.dm
+++ b/code/game/objects/structures/displaycase.dm
@@ -212,10 +212,10 @@
if(electronics)
electronics.loc = display
display.electronics = electronics
- if(electronics.use_one_access)
- display.req_one_access = electronics.conf_access
+ if(electronics.one_access)
+ display.req_one_access = electronics.accesses
else
- display.req_access = electronics.conf_access
+ display.req_access = electronics.accesses
qdel(src)
return
return
diff --git a/code/game/objects/structures/door_assembly.dm b/code/game/objects/structures/door_assembly.dm
index d1c53fa6d5f..bc35014c522 100644
--- a/code/game/objects/structures/door_assembly.dm
+++ b/code/game/objects/structures/door_assembly.dm
@@ -636,10 +636,10 @@
//door.req_access = src.req_access
door.electronics = src.electronics
door.heat_proof = src.heat_proof_finished
- if(src.electronics.use_one_access)
- door.req_one_access = src.electronics.conf_access
+ if(src.electronics.one_access)
+ door.req_one_access = src.electronics.accesses
else
- door.req_access = src.electronics.conf_access
+ door.req_access = src.electronics.accesses
if(created_name)
door.name = created_name
src.electronics.loc = door
diff --git a/code/game/objects/structures/windoor_assembly.dm b/code/game/objects/structures/windoor_assembly.dm
index ba1f9b119cd..b401cc5a137 100644
--- a/code/game/objects/structures/windoor_assembly.dm
+++ b/code/game/objects/structures/windoor_assembly.dm
@@ -266,10 +266,10 @@
windoor.dir = dir
windoor.density = 0
- if(electronics.use_one_access)
- windoor.req_one_access = electronics.conf_access
+ if(electronics.one_access)
+ windoor.req_one_access = electronics.accesses
else
- windoor.req_access = electronics.conf_access
+ windoor.req_access = electronics.accesses
windoor.electronics = electronics
electronics.loc = windoor
if(created_name)
@@ -289,7 +289,7 @@
windoor.dir = dir
windoor.density = 0
- windoor.req_access = electronics.conf_access
+ windoor.req_access = electronics.accesses
windoor.electronics = electronics
electronics.loc = windoor
if(created_name)
diff --git a/code/modules/nano/nanoui.dm b/code/modules/nano/nanoui.dm
index df729f2a726..fb92e046495 100644
--- a/code/modules/nano/nanoui.dm
+++ b/code/modules/nano/nanoui.dm
@@ -361,9 +361,10 @@
var/url_parameters_json = list2json(list("src" = "\ref[src]"))
return {"
-
+
-
+
+