/datum/wires/jukebox
random = 1
holder_type = /obj/machinery/media/jukebox
wire_count = 11
var/const/WIRE_POWER = 1
var/const/WIRE_HACK = 2
var/const/WIRE_SPEEDUP = 4
var/const/WIRE_SPEEDDOWN = 8
var/const/WIRE_REVERSE = 16
var/const/WIRE_NOTHING1 = 32
var/const/WIRE_NOTHING2 = 64
var/const/WIRE_START = 128
var/const/WIRE_STOP = 256
var/const/WIRE_PREV = 512
var/const/WIRE_NEXT = 1024
/datum/wires/jukebox/CanUse(var/mob/living/L)
var/obj/machinery/media/jukebox/A = holder
if(A.panel_open)
return 1
return 0
// Show the status of lights as a hint to the current state
/datum/wires/jukebox/GetInteractWindow()
var/obj/machinery/media/jukebox/A = holder
. += ..()
. += "
The power light is [(A.stat & (BROKEN|NOPOWER)) ? "off" : "on"].
"
. += "The parental guidance light is [A.hacked ? "off" : "on"].
"
. += "The data light is [IsIndexCut(WIRE_REVERSE) ? "hauntingly dark" : "glowing sloftly"].
"
// Give a hint as to what each wire does
/datum/wires/jukebox/UpdatePulsed(var/index)
var/obj/machinery/media/jukebox/A = holder
switch(index)
if(WIRE_POWER)
holder.visible_message("\icon[holder] The power light flickers.")
A.shock(usr, 90)
if(WIRE_HACK)
holder.visible_message("\icon[holder] The parental guidance light flickers.")
if(WIRE_REVERSE)
holder.visible_message("\icon[holder] The data light blinks ominously.")
if(WIRE_SPEEDUP)
holder.visible_message("\icon[holder] The speakers squeaks.")
if(WIRE_SPEEDDOWN)
holder.visible_message("\icon[holder] The speakers rumble.")
if(WIRE_START)
A.StartPlaying()
if(WIRE_STOP)
A.StopPlaying()
if(WIRE_PREV)
A.PrevTrack()
if(WIRE_NEXT)
A.NextTrack()
else
A.shock(usr, 10) // The nothing wires give a chance to shock just for fun
/datum/wires/jukebox/UpdateCut(var/index, var/mended)
var/obj/machinery/media/jukebox/A = holder
switch(index)
if(WIRE_POWER)
// TODO - Actually make machine electrified or something.
A.shock(usr, 90)
if(WIRE_HACK)
if(mended)
A.set_hacked(0)
else
A.set_hacked(1)
if(WIRE_SPEEDUP, WIRE_SPEEDDOWN, WIRE_REVERSE)
var/newfreq = IsIndexCut(WIRE_REVERSE) ? -1 : 1;
if (IsIndexCut(WIRE_SPEEDUP))
newfreq *= 2
if (IsIndexCut(WIRE_SPEEDDOWN))
newfreq *= 0.5
A.freq = newfreq