diff --git a/code/game/objects/items/devices/taperecorder.dm b/code/game/objects/items/devices/taperecorder.dm index f40f2e46c61..c824beaf792 100644 --- a/code/game/objects/items/devices/taperecorder.dm +++ b/code/game/objects/items/devices/taperecorder.dm @@ -19,6 +19,8 @@ var/starting_tape_type = /obj/item/tape/random var/open_panel = 0 var/canprint = 1 + var/list/icons_available = list() + var/icon_directory = 'icons/effects/icons.dmi' /obj/item/taperecorder/Initialize(mapload) @@ -32,6 +34,29 @@ . = ..() . += "The wire panel is [open_panel ? "opened" : "closed"]." +/obj/item/taperecorder/AltClick(mob/user) + . = ..() + play() + +/obj/item/taperecorder/proc/update_available_icons() + icons_available = list() + + if(recording) + icons_available += list("Stop Recording" = image(icon = icon_directory, icon_state = "record_stop")) + else + if(!playing) + icons_available += list("Record" = image(icon = icon_directory, icon_state = "record")) + + if(playing) + icons_available += list("Pause" = image(icon = icon_directory, icon_state = "pause")) + else + if(!recording) + icons_available += list("Play" = image(icon = icon_directory, icon_state = "play")) + + if(canprint && !recording && !playing) + icons_available += list("Print Transcript" = image(icon = icon_directory, icon_state = "print")) + if(mytape) + icons_available += list("Eject" = image(icon = icon_directory, icon_state = "eject")) /obj/item/taperecorder/attackby(obj/item/I, mob/user, params) if(!mytape && istype(I, /obj/item/tape)) @@ -190,13 +215,31 @@ /obj/item/taperecorder/attack_self(mob/user) - if(!mytape || mytape.ruined) + if(!mytape) + to_chat(user, "The [src] does not have a tape inside.") return - if(recording) - stop() - else - record() - + if(mytape.ruined) + to_chat(user, "The tape inside the [src] appears to be broken.") + return + + update_available_icons() + if(icons_available) + var/selection = show_radial_menu(user, src, icons_available, radius = 38, require_near = TRUE, tooltips = TRUE) + if(!selection) + return + switch(selection) + if("Pause") + stop() + if("Stop Recording") // yes we actually need 2 seperate stops for the same proc- Hopek + stop() + if("Record") + record() + if("Play") + play() + if("Print Transcript") + print_transcript() + if("Eject") + eject(user) /obj/item/taperecorder/verb/print_transcript() set name = "Print Transcript" diff --git a/icons/effects/icons.dmi b/icons/effects/icons.dmi new file mode 100644 index 00000000000..0d62217efbf Binary files /dev/null and b/icons/effects/icons.dmi differ