Wireless button updates

Added toggle variants for buttons, allowing them to "deactivate" connected devices.
Converted flashers and holosigns.
Fixes to keep in line with upstream.
This commit is contained in:
Loganbacca
2015-11-19 22:18:29 +13:00
parent 750414e280
commit 56bf894ee1
9 changed files with 129 additions and 34 deletions
-1
View File
@@ -140,7 +140,6 @@
#include "code\controllers\Processes\turf.dm"
#include "code\controllers\Processes\vote.dm"
#include "code\controllers\Processes\wireless.dm"
#include "code\controllers\ProcessScheduler\core\_define.dm"
#include "code\controllers\ProcessScheduler\core\_stubs.dm"
#include "code\controllers\ProcessScheduler\core\process.dm"
#include "code\controllers\ProcessScheduler\core\processScheduler.dm"
+1 -1
View File
@@ -46,4 +46,4 @@ var/datum/controller/process/wireless/wirelessProcess
input_queue -= C
if(!target_found)
output_queue += C
scheck()
SCHECK
+38 -6
View File
@@ -9,19 +9,19 @@
use_power = 1
idle_power_usage = 2
active_power_usage = 4
var/_wifi_id
var/_wifi_toggle = 0
var/datum/wifi/sender/button/wifi_sender
/obj/machinery/button/initialize()
..()
update_icon()
if(_wifi_id)
wifi_sender = new(_wifi_id)
wifi_sender = new(_wifi_id, src)
/obj/machinery/button/Destroy()
if(wifi_sender)
qdel(wifi_sender)
wifi_sender = null
qdel(wifi_sender)
wifi_sender = null
return..()
/obj/machinery/button/attack_ai(mob/user as mob)
@@ -31,5 +31,37 @@
/obj/machinery/button/attack_hand(mob/living/user)
..()
if(wifi_sender)
if(!wifi_sender)
return
use_power(5)
if(_wifi_toggle)
active = !active
if(active)
wifi_sender.activate(user)
else
wifi_sender.deactivate(user)
update_icon()
else
active = 1
update_icon()
wifi_sender.activate(user)
sleep(10)
active = 0
update_icon()
/obj/machinery/button/update_icon()
if(active)
icon_state = "launcheract"
else
icon_state = "launcherbtt"
/obj/machinery/button/toggle
icon = 'icons/obj/power.dmi'
icon_state = "light0"
_wifi_toggle = 1
/obj/machinery/button/toggle/update_icon()
icon_state = "light[active]"
+12
View File
@@ -15,6 +15,8 @@
use_power = 1
idle_power_usage = 2
flags = PROXMOVE
var/_wifi_id
var/datum/wifi/receiver/button/flasher/wifi_receiver
/obj/machinery/flasher/portable //Portable version of the flasher. Only flashes when anchored
name = "portable flasher"
@@ -25,6 +27,16 @@
base_state = "pflash"
density = 1
/obj/machinery/flasher/initialize()
..()
if(_wifi_id)
wifi_receiver = new(_wifi_id, src)
/obj/machinery/flasher/Destroy()
qdel(wifi_receiver)
wifi_receiver = null
return ..()
/obj/machinery/flasher/power_change()
..()
if ( !(stat & NOPOWER) )
+12
View File
@@ -12,6 +12,18 @@
var/lit = 0
var/id = null
var/on_icon = "sign_on"
var/_wifi_id
var/datum/wifi/receiver/button/holosign/wifi_receiver
/obj/machinery/holosign/initialize()
..()
if(_wifi_id)
wifi_receiver = new(_wifi_id, src)
/obj/machinery/holosign/Destroy()
qdel(wifi_receiver)
wifi_receiver = null
return ..()
/obj/machinery/holosign/proc/toggle()
if (stat & (BROKEN|NOPOWER))
-1
View File
@@ -186,7 +186,6 @@
var/cremating = 0
var/id = 1
var/locked = 0
var/_wifi_id
var/datum/wifi/receiver/button/crematorium/wifi_receiver
+2 -3
View File
@@ -49,9 +49,8 @@
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")
if(wifi_receiver)
qdel(wifi_receiver)
wifi_receiver = null
qdel(wifi_receiver)
wifi_receiver = null
..()
/obj/machinery/power/emitter/update_icon()
+40 -15
View File
@@ -1,31 +1,32 @@
/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 ..()
//-------------------------------
// Buttons
//-------------------------------
/datum/wifi/receiver/button/proc/activate(mob/living/user)
/datum/wifi/receiver/button/proc/deactivate(mob/living/user)
/datum/wifi/sender/button/proc/activate(mob/living/user)
for(var/datum/wifi/receiver/button/B in connected_devices)
B.activate(user)
/datum/wifi/sender/button/proc/deactivate(mob/living/user)
for(var/datum/wifi/receiver/button/B in connected_devices)
B.deactivate(user)
//-------------------------------
// Emitter
//-------------------------------
/datum/wifi/receiver/button/emitter/activate(mob/living/user)
..()
var/obj/machinery/power/emitter/E = parent
if(istype(E))
E.activate(user)
if(istype(E) && !E.active)
E.activate(user) //if the emitter is not active, trigger the activate proc to toggle it
/datum/wifi/receiver/button/emitter/deactivate(mob/living/user)
..()
var/obj/machinery/power/emitter/E = parent
if(istype(E) && E.active)
E.activate(user) //if the emitter is active, trigger the activate proc to toggle it
//-------------------------------
// Crematorium
@@ -35,3 +36,27 @@
var/obj/structure/crematorium/C = parent
if(istype(C))
C.cremate(user)
//-------------------------------
// Mounted Flash
//-------------------------------
/datum/wifi/receiver/button/flasher/activate(mob/living/user)
..()
var/obj/machinery/flasher/F = parent
if(istype(F))
F.flash()
//-------------------------------
// Holosign
//-------------------------------
/datum/wifi/receiver/button/holosign/activate(mob/living/user)
..()
var/obj/machinery/holosign/H = parent
if(istype(H) && !H.lit)
H.toggle()
/datum/wifi/receiver/button/holosign/deactivate(mob/living/user)
..()
var/obj/machinery/holosign/H = parent
if(istype(H) && H.lit)
H.toggle()
+24 -7
View File
@@ -1,10 +1,17 @@
//-------------------------------
// Wifi
//-------------------------------
/datum/wifi
var/obj/parent
var/list/connected_devices
/datum/wifi/New()
/datum/wifi/New(var/obj/O)
connected_devices = new()
if(istype(O))
parent = O
/datum/wifi/Destroy(var/wifi/device)
parent = null
for(var/datum/wifi/D in connected_devices)
D.disconnect_device(src)
disconnect_device(D)
@@ -17,12 +24,14 @@
connected_devices -= device
//-------------------------------
// Receiver
//-------------------------------
/datum/wifi/receiver
var/id
/datum/wifi/receiver/New(var/new_id)
..()
/datum/wifi/receiver/New(var/new_id, var/obj/O)
..(O)
id = new_id
wirelessProcess.add_device(src)
@@ -31,11 +40,14 @@
return ..()
//-------------------------------
// Sender
//-------------------------------
/datum/wifi/sender
var/target
/datum/wifi/sender/New(var/new_target)
..()
/datum/wifi/sender/New(var/new_target, var/obj/O)
..(O)
target = new_target
send_connection_request()
@@ -47,7 +59,9 @@
wirelessProcess.add_request(C)
//-------------------------------
// Connection request
//-------------------------------
/datum/connection_request
var/datum/wifi/sender/source //wifi_sender object creating the request
var/target //id tag of the target device to try to connect to
@@ -57,6 +71,9 @@
target = receiver
//-------------------------------
// Wireless tool (temp)
//-------------------------------
/obj/item/device/wireless_tool
name = "wireless tool"
desc = "Used for connecting machinery to controls for remote operation."