From f3f61367da0e7cfe85fbb278227101a462aee79f Mon Sep 17 00:00:00 2001 From: octareenroon91 Date: Fri, 4 Dec 2015 03:16:43 -0600 Subject: [PATCH 1/4] Give wallets merged access of all IDs inside. --- .../objects/items/weapons/storage/wallets.dm | 32 +++++++++++++------ 1 file changed, 23 insertions(+), 9 deletions(-) diff --git a/code/game/objects/items/weapons/storage/wallets.dm b/code/game/objects/items/weapons/storage/wallets.dm index d5483c8d8d0..b27b2d8e60f 100644 --- a/code/game/objects/items/weapons/storage/wallets.dm +++ b/code/game/objects/items/weapons/storage/wallets.dm @@ -30,20 +30,34 @@ slot_flags = SLOT_ID var/obj/item/weapon/card/id/front_id = null + var/obj/item/weapon/card/id/net_id = null -/obj/item/weapon/storage/wallet/remove_from_storage(obj/item/W, atom/new_location) +/obj/item/weapon/storage/wallet/New() + ..() + net_id = new /obj/item/weapon/card/id(src) + +/obj/item/weapon/storage/wallet/remove_from_storage(obj/item/W as obj, atom/new_location) . = ..(W, new_location) if(.) if(W == front_id) front_id = null + if(istype(W, /obj/item/weapon/card/id)) + refreshID() update_icon() -/obj/item/weapon/storage/wallet/handle_item_insertion(obj/item/W, prevent_warning = 0) +/obj/item/weapon/storage/wallet/refreshID() + net_id.access.Cut() + for(var/obj/item/weapon/card/id/I in contents) + if(!front_id) + front_id = I + net_id.access |= I.access // Merge access from any and all cards in wallet + +/obj/item/weapon/storage/wallet/handle_item_insertion(obj/item/W as obj, prevent_warning = 0) . = ..(W, prevent_warning) if(.) - if(!front_id && istype(W, /obj/item/weapon/card/id)) - front_id = W + if(istype(W, /obj/item/weapon/card/id)) + refreshID() update_icon() /obj/item/weapon/storage/wallet/update_icon() @@ -66,12 +80,12 @@ /obj/item/weapon/storage/wallet/GetID() - return front_id + return front_id // net_id is only a holder for accesses. /obj/item/weapon/storage/wallet/GetAccess() - var/obj/item/I = GetID() - if(I) - return I.GetAccess() + var/list/myaccess = net_id.GetAccess() // favor OOP by not using net_id.access directly. + if(myaccess.len) // is there any access to be had this way? + return myaccess else return ..() @@ -89,4 +103,4 @@ if(item2_type) new item2_type(src) if(item3_type) - new item3_type(src) \ No newline at end of file + new item3_type(src) From 544295c5635eec6fe5ad53590fd3de18df49cf26 Mon Sep 17 00:00:00 2001 From: octareenroon91 Date: Fri, 4 Dec 2015 03:42:54 -0600 Subject: [PATCH 2/4] define proc/refreshID --- code/game/objects/items/weapons/storage/wallets.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/objects/items/weapons/storage/wallets.dm b/code/game/objects/items/weapons/storage/wallets.dm index b27b2d8e60f..3822d76e497 100644 --- a/code/game/objects/items/weapons/storage/wallets.dm +++ b/code/game/objects/items/weapons/storage/wallets.dm @@ -46,7 +46,7 @@ refreshID() update_icon() -/obj/item/weapon/storage/wallet/refreshID() +/obj/item/weapon/storage/wallet/proc/refreshID() net_id.access.Cut() for(var/obj/item/weapon/card/id/I in contents) if(!front_id) From 3c75d78f842f6c2dcd997007d8332d4ab7b2ae88 Mon Sep 17 00:00:00 2001 From: octareenroon91 Date: Sat, 5 Dec 2015 16:35:41 -0600 Subject: [PATCH 3/4] Use a list instead of net_id reduce excess calls to update_icon() --- .../objects/items/weapons/storage/wallets.dm | 29 ++++++++----------- 1 file changed, 12 insertions(+), 17 deletions(-) diff --git a/code/game/objects/items/weapons/storage/wallets.dm b/code/game/objects/items/weapons/storage/wallets.dm index 3822d76e497..ae160346292 100644 --- a/code/game/objects/items/weapons/storage/wallets.dm +++ b/code/game/objects/items/weapons/storage/wallets.dm @@ -30,35 +30,31 @@ slot_flags = SLOT_ID var/obj/item/weapon/card/id/front_id = null - var/obj/item/weapon/card/id/net_id = null + var/list/combined_access = list() -/obj/item/weapon/storage/wallet/New() - ..() - net_id = new /obj/item/weapon/card/id(src) - -/obj/item/weapon/storage/wallet/remove_from_storage(obj/item/W as obj, atom/new_location) +/obj/item/weapon/storage/wallet/remove_from_storage(obj/item/W, atom/new_location) . = ..(W, new_location) if(.) - if(W == front_id) - front_id = null if(istype(W, /obj/item/weapon/card/id)) + if(W == front_id) + front_id = null refreshID() update_icon() /obj/item/weapon/storage/wallet/proc/refreshID() - net_id.access.Cut() + combined_access.Cut() for(var/obj/item/weapon/card/id/I in contents) if(!front_id) front_id = I - net_id.access |= I.access // Merge access from any and all cards in wallet + update_icon() + combined_access |= I.access -/obj/item/weapon/storage/wallet/handle_item_insertion(obj/item/W as obj, prevent_warning = 0) +/obj/item/weapon/storage/wallet/handle_item_insertion(obj/item/W, prevent_warning = 0) . = ..(W, prevent_warning) if(.) if(istype(W, /obj/item/weapon/card/id)) refreshID() - update_icon() /obj/item/weapon/storage/wallet/update_icon() @@ -80,12 +76,11 @@ /obj/item/weapon/storage/wallet/GetID() - return front_id // net_id is only a holder for accesses. + return front_id -/obj/item/weapon/storage/wallet/GetAccess() - var/list/myaccess = net_id.GetAccess() // favor OOP by not using net_id.access directly. - if(myaccess.len) // is there any access to be had this way? - return myaccess +/obj/item/weapon/storage/wallet/GetAccess( + if(combined_access.len) + return combined_access else return ..() From 5646f0eb5b57f0db30c6a1d3c21d4a0c2d6e917b Mon Sep 17 00:00:00 2001 From: octareenroon91 Date: Sat, 5 Dec 2015 18:42:50 -0600 Subject: [PATCH 4/4] syntax error --- code/game/objects/items/weapons/storage/wallets.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/objects/items/weapons/storage/wallets.dm b/code/game/objects/items/weapons/storage/wallets.dm index ae160346292..c7da0007656 100644 --- a/code/game/objects/items/weapons/storage/wallets.dm +++ b/code/game/objects/items/weapons/storage/wallets.dm @@ -78,7 +78,7 @@ /obj/item/weapon/storage/wallet/GetID() return front_id -/obj/item/weapon/storage/wallet/GetAccess( +/obj/item/weapon/storage/wallet/GetAccess() if(combined_access.len) return combined_access else