GC cleanup

Cleaned up some GC code and properly implemented it for wireless datums
Remote buttons are now fully working with emitters and crematoriums
This commit is contained in:
Loganbacca
2015-11-22 22:32:52 +13:00
parent a9555b0175
commit 750414e280
5 changed files with 36 additions and 22 deletions
+7 -1
View File
@@ -13,11 +13,17 @@
var/_wifi_id
var/datum/wifi/sender/button/wifi_sender
/obj/machinery/button/New()
/obj/machinery/button/initialize()
..()
if(_wifi_id)
wifi_sender = new(_wifi_id)
/obj/machinery/button/Destroy()
if(wifi_sender)
qdel(wifi_sender)
wifi_sender = null
return..()
/obj/machinery/button/attack_ai(mob/user as mob)
return src.attack_hand(user)
+5 -2
View File
@@ -190,15 +190,18 @@
var/_wifi_id
var/datum/wifi/receiver/button/crematorium/wifi_receiver
/obj/structure/crematorium/New()
/obj/structure/crematorium/initialize()
..()
if(_wifi_id)
wifi_receiver = new(_wifi_id)
wifi_receiver = new(_wifi_id, src)
/obj/structure/crematorium/Destroy()
if(connected)
qdel(connected)
connected = null
if(wifi_receiver)
qdel(wifi_receiver)
wifi_receiver = null
return ..()
/obj/structure/crematorium/proc/update()
+6 -2
View File
@@ -24,6 +24,7 @@
var/state = 0
var/locked = 0
var/_wifi_id
var/datum/wifi/receiver/button/emitter/wifi_receiver
/obj/machinery/power/emitter/verb/rotate()
@@ -41,13 +42,16 @@
..()
if(state == 2 && anchored)
connect_to_network()
wifi_receiver = new(id, src)
if(_wifi_id)
wifi_receiver = new(_wifi_id, src)
/obj/machinery/power/emitter/Destroy()
message_admins("Emitter deleted at ([x],[y],[z] - <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[x];Y=[y];Z=[z]'>JMP</a>)",0,1)
log_game("Emitter deleted at ([x],[y],[z])")
investigate_log("<font color='red'>deleted</font> at ([x],[y],[z])","singulo")
wifi_receiver.Destroy()
if(wifi_receiver)
qdel(wifi_receiver)
wifi_receiver = null
..()
/obj/machinery/power/emitter/update_icon()
+14 -14
View File
@@ -1,6 +1,16 @@
/datum/wifi/receiver/button
var/obj/parent
/datum/wifi/receiver/button/New(var/new_id, var/obj/O)
id = new_id
if(istype(O))
parent = O
..()
/datum/wifi/receiver/button/Destroy()
parent = null
return ..()
/datum/wifi/receiver/button/proc/activate(mob/living/user)
@@ -11,27 +21,17 @@
//-------------------------------
// Emitter
//-------------------------------
/datum/wifi/receiver/button/emitter/New(var/new_id, var/obj/machinery/power/emitter/E)
id = new_id
if(istype(E))
parent = E
..()
/datum/wifi/receiver/button/emitter/activate(mob/living/user)
..()
var/obj/machinery/power/emitter/E = parent
E.activate(user)
if(istype(E))
E.activate(user)
//-------------------------------
// Crematorium
//-------------------------------
/datum/wifi/receiver/button/crematorium/New(var/new_id, var/obj/structure/crematorium/C)
id = new_id
if(istype(C))
parent = C
..()
/datum/wifi/receiver/button/crematorium/activate(mob/living/user)
..()
var/obj/structure/crematorium/C = parent
C.cremate(user)
if(istype(C))
C.cremate(user)
+4 -3
View File
@@ -5,9 +5,10 @@
connected_devices = new()
/datum/wifi/Destroy(var/wifi/device)
..()
for(var/datum/wifi/D in connected_devices)
D.disconnect_device(src)
disconnect_device(D)
return ..()
/datum/wifi/proc/connect_device(var/datum/wifi/device)
connected_devices |= device
@@ -26,9 +27,8 @@
wirelessProcess.add_device(src)
/datum/wifi/receiver/Destroy()
..()
wirelessProcess.remove_device(src)
return ..()
/datum/wifi/sender
@@ -37,6 +37,7 @@
/datum/wifi/sender/New(var/new_target)
..()
target = new_target
send_connection_request()
/datum/wifi/sender/proc/set_target(var/new_target)
target = new_target