Files
Bubberstation/code/modules/modular_computers/hardware/card_slot.dm
T
Core0verloadandoranges 91e5b35707 Modular PCs rewrite (#20003)
* Modular computers rework, part A

* tweaks&fixes

* Adds component-side compatibility checks

* Moves computers to SSobj

* Fixes stationary computers not using power usage vars

* Changes icon generation a bit, adds icons to broken computers

* Moves UI into it's own file

* Laptop refactor + sprite replacement

* Modular console's keyboard now lights up when powered

* minor fixes

* fixes

* bonus: wired connector, new type of recharger

* Modular computers are now devices

* code quality ocd
2016-08-25 10:28:33 +12:00

85 lines
2.3 KiB
Plaintext

/obj/item/weapon/computer_hardware/card_slot
name = "\improper ID authentication module"
desc = "A module allowing this computer to read or write data on ID cards. Necessary for some programs to run properly."
power_usage = 10 //W
icon_state = "card_mini"
w_class = 1
origin_tech = "programming=2"
var/obj/item/weapon/card/id/stored_card = null
var/obj/item/weapon/card/id/stored_card2 = null
/obj/item/weapon/computer_hardware/card_slot/Destroy()
try_eject()
return ..()
/obj/item/weapon/computer_hardware/card_slot/GetAccess()
if(stored_card && stored_card2) // Best of both worlds
return (stored_card.GetAccess() | stored_card2.GetAccess())
else if(stored_card)
return stored_card.GetAccess()
else if(stored_card2)
return stored_card2.GetAccess()
return ..()
/obj/item/weapon/computer_hardware/card_slot/GetID()
if(stored_card)
return stored_card
else if(stored_card2)
return stored_card2
return ..()
/obj/item/weapon/computer_hardware/card_slot/try_insert(obj/item/I, mob/living/user = null)
if(!holder)
return FALSE
if(!istype(I, /obj/item/weapon/card/id))
return FALSE
if(stored_card && stored_card2)
user << "<span class='warning'>You try to insert \the [I] into \the [src], but it's slots are occupied.</span>"
return FALSE
if(user && !user.unEquip(I))
return FALSE
if(!stored_card)
stored_card = I
else
stored_card2 = I
I.forceMove(src)
user << "<span class='notice'>You insert \the [I] into \the [src].</span>"
return TRUE
/obj/item/weapon/computer_hardware/card_slot/try_eject(slot=0, mob/living/user = null)
if(!stored_card && !stored_card2)
user << "<span class='warning'>There are no cards in \the [src].</span>"
return FALSE
var/ejected = 0
if(stored_card && (!slot || slot == 1))
stored_card.forceMove(get_turf(src))
stored_card.verb_pickup()
stored_card = null
ejected++
if(stored_card2 && (!slot || slot == 2))
stored_card2.forceMove(get_turf(src))
stored_card2.verb_pickup()
stored_card2 = null
ejected++
if(ejected)
if(holder)
if(holder.active_program)
holder.active_program.event_idremoved(0, slot)
for(var/I in holder.idle_threads)
var/datum/computer_file/program/P = I
P.event_idremoved(1, slot)
user << "<span class='notice'>You remove the card[ejected>1 ? "s" : ""] from \the [src].</span>"
return TRUE
return FALSE