Holorecord fixes and additions (#34882)

* Fixes name not changing on manual record

* Autolathe material changes

* Allows renaming holodisks and copying records between disks.

* Adds looping

* copy pasta

* sure why not i guess it's not liked i tested it and it worked anyways or anything
This commit is contained in:
Dax Dupont
2018-01-26 14:17:14 +01:00
committed by AnturK
parent b4ffc26ce1
commit 6d2e14913e
3 changed files with 40 additions and 13 deletions
+18
View File
@@ -206,6 +206,8 @@
name = "holorecord disk"
desc = "Stores recorder holocalls."
icon_state = "holodisk"
obj_flags = UNIQUE_RENAME
materials = list(MAT_METAL = 100, MAT_GLASS = 100)
var/datum/holorecord/record
//Preset variables
var/preset_image_type
@@ -220,6 +222,22 @@
QDEL_NULL(record)
return ..()
/obj/item/disk/holodisk/attackby(obj/item/W, mob/user, params)
if(istype(W, /obj/item/disk/holodisk))
var/obj/item/disk/holodisk/holodiskOriginal = W
if (holodiskOriginal.record)
if (!record)
record = new
record.caller_name = holodiskOriginal.record.caller_name
record.caller_image = holodiskOriginal.record.caller_image
record.entries = holodiskOriginal.record.entries.Copy()
record.language = holodiskOriginal.record.language
to_chat(user, "You copy the record from [holodiskOriginal] to [src] by connecting the ports!")
name = holodiskOriginal.name
else
to_chat(user, "[holodiskOriginal] has no record on it!")
..()
/obj/item/disk/holodisk/proc/build_record()
record = new
var/list/lines = splittext(preset_record_text,"\n")
+21 -12
View File
@@ -49,6 +49,7 @@ Possible to do for anyone motivated enough:
var/datum/holocall/outgoing_call //do not modify the datums only check and call the public procs
var/obj/item/disk/holodisk/disk //Record disk
var/replay_mode = FALSE //currently replaying a recording
var/loop_mode = FALSE //currently looping a recording
var/record_mode = FALSE //currently recording
var/record_start = 0 //recording start time
var/record_user //user that inititiated the recording
@@ -150,19 +151,20 @@ Possible to do for anyone motivated enough:
if(temp)
dat = temp
else
dat = "<a href='?src=[REF(src)];AIrequest=1'>Request an AI's presence.</a><br>"
dat += "<a href='?src=[REF(src)];Holocall=1'>Call another holopad.</a><br>"
dat = "<a href='?src=[REF(src)];AIrequest=1'>Request an AI's presence</a><br>"
dat += "<a href='?src=[REF(src)];Holocall=1'>Call another holopad</a><br>"
if(disk)
if(disk.record)
//Replay
dat += "<a href='?src=[REF(src)];replay_start=1'>Replay disk recording.</a><br>"
dat += "<a href='?src=[REF(src)];replay_start=1'>Replay disk recording</a><br>"
dat += "<a href='?src=[REF(src)];loop_start=1'>Loop disk recording</a><br>"
//Clear
dat += "<a href='?src=[REF(src)];record_clear=1'>Clear disk recording.</a><br>"
dat += "<a href='?src=[REF(src)];record_clear=1'>Clear disk recording</a><br>"
else
//Record
dat += "<a href='?src=[REF(src)];record_start=1'>Start new recording.</a><br>"
dat += "<a href='?src=[REF(src)];record_start=1'>Start new recording</a><br>"
//Eject
dat += "<a href='?src=[REF(src)];disk_eject=1'>Eject disk.</a><br>"
dat += "<a href='?src=[REF(src)];disk_eject=1'>Eject disk</a><br>"
if(LAZYLEN(holo_calls))
dat += "=====================================================<br>"
@@ -172,7 +174,7 @@ Possible to do for anyone motivated enough:
for(var/I in holo_calls)
var/datum/holocall/HC = I
if(HC.connected_holopad != src)
dat += "<a href='?src=[REF(src)];connectcall=[REF(HC)]'>Answer call from [get_area(HC.calling_holopad)].</a><br>"
dat += "<a href='?src=[REF(src)];connectcall=[REF(HC)]'>Answer call from [get_area(HC.calling_holopad)]</a><br>"
one_unanswered_call = TRUE
else
one_answered_call = TRUE
@@ -183,10 +185,10 @@ Possible to do for anyone motivated enough:
for(var/I in holo_calls)
var/datum/holocall/HC = I
if(HC.connected_holopad == src)
dat += "<a href='?src=[REF(src)];disconnectcall=[REF(HC)]'>Disconnect call from [HC.user].</a><br>"
dat += "<a href='?src=[REF(src)];disconnectcall=[REF(HC)]'>Disconnect call from [HC.user]</a><br>"
var/datum/browser/popup = new(user, "holopad", name, 300, 150)
var/datum/browser/popup = new(user, "holopad", name, 300, 175)
popup.set_content(dat)
popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state))
popup.open()
@@ -266,6 +268,9 @@ Possible to do for anyone motivated enough:
replay_stop()
else if(href_list["replay_start"])
replay_start()
else if(href_list["loop_start"])
loop_mode = TRUE
replay_start()
else if(href_list["record_start"])
record_start(usr)
else if(href_list["record_stop"])
@@ -464,6 +469,7 @@ For the other part of the code, check silicon say.dm. Particularly robot talk.*/
/obj/machinery/holopad/proc/replay_stop()
if(replay_mode)
replay_mode = FALSE
loop_mode = FALSE
temp = null
QDEL_NULL(replay_holo)
SetLightsAndPower()
@@ -490,7 +496,7 @@ For the other part of the code, check silicon say.dm. Particularly robot talk.*/
if(!record_mode)
return
//make this command so you can have multiple languages in single record
if(!disk.record.caller_name && istype(speaker))
if((!disk.record.caller_name || disk.record.caller_name == "Unknown") && istype(speaker))
disk.record.caller_name = speaker.name
if(!disk.record.language)
disk.record.language = language
@@ -516,8 +522,11 @@ For the other part of the code, check silicon say.dm. Particularly robot talk.*/
if(!replay_mode)
return
if(disk.record.entries.len < entry_number)
replay_stop()
return
if (loop_mode)
entry_number = 1
else
replay_stop()
return
var/list/entry = disk.record.entries[entry_number]
var/command = entry[1]
switch(command)
@@ -836,6 +836,6 @@
name = "Holodisk"
id = "holodisk"
build_type = AUTOLATHE
materials = list(MAT_METAL = 1000)
materials = list(MAT_METAL = 100, MAT_GLASS = 100)
build_path = /obj/item/disk/holodisk
category = list("initial", "Misc")