From 5b9800a6b22426cb5b1f7c0805894431f8a0d17f Mon Sep 17 00:00:00 2001 From: Gary Lafortune Date: Fri, 6 Dec 2019 17:31:53 -0600 Subject: [PATCH] Makes PDA messages use the language system --- .../machinery/telecomms/computers/message.dm | 1 + .../telecomms/machines/message_server.dm | 17 ++++++++++++++--- code/game/objects/items/devices/PDA/PDA.dm | 14 ++++++++++---- 3 files changed, 25 insertions(+), 7 deletions(-) diff --git a/code/game/machinery/telecomms/computers/message.dm b/code/game/machinery/telecomms/computers/message.dm index 0245e4314000..bb2007cd90c4 100644 --- a/code/game/machinery/telecomms/computers/message.dm +++ b/code/game/machinery/telecomms/computers/message.dm @@ -425,6 +425,7 @@ "name" = "[customsender]", "job" = "[customjob]", "message" = custommessage, + "language" = get_default_language(), // PDAs now use the language system! "targets" = list("[customrecepient.owner] ([customrecepient.ownjob])") )) // this will log the signal and transmit it to the target diff --git a/code/game/machinery/telecomms/machines/message_server.dm b/code/game/machinery/telecomms/machines/message_server.dm index 51f874265396..775daf51bb9f 100644 --- a/code/game/machinery/telecomms/machines/message_server.dm +++ b/code/game/machinery/telecomms/machines/message_server.dm @@ -121,15 +121,26 @@ return copy // PDA signal datum +/datum/signal/subspace/messaging/pda + var/datum/language/lang // Stores what language the message was written in. + +/datum/signal/subspace/messaging/pda/New(init_source,init_data) + ..() + lang = data["language"] || /datum/language/common + /datum/signal/subspace/messaging/pda/proc/format_target() if (length(data["targets"]) > 1) return "Everyone" return data["targets"][1] -/datum/signal/subspace/messaging/pda/proc/format_message() +/datum/signal/subspace/messaging/pda/proc/format_message(mob/living/listener) + var/msg = data["message"] + if(istype(listener) && !listener.has_language(lang)) + var/datum/language/langue = GLOB.language_datum_instances[lang] + msg = langue.scramble(msg) if (logged && data["photo"]) - return "\"[data["message"]]\" (Photo)" - return "\"[data["message"]]\"" + return "\"[msg]\" (Photo)" + return "\"[msg]\"" /datum/signal/subspace/messaging/pda/broadcast() if (!logged) // Can only go through if a message server logs it diff --git a/code/game/objects/items/devices/PDA/PDA.dm b/code/game/objects/items/devices/PDA/PDA.dm index 66c0aa37fa6d..0ac2639981c7 100644 --- a/code/game/objects/items/devices/PDA/PDA.dm +++ b/code/game/objects/items/devices/PDA/PDA.dm @@ -51,7 +51,7 @@ GLOBAL_LIST_EMPTY(PDAs) var/f_lum = 2.3 //Luminosity for the flashlight function var/silent = FALSE //To beep or not to beep, that is the question var/toff = FALSE //If TRUE, messenger disabled - var/tnote = null //Current Texts + var/list/tnote = list() //Current list of received signals, which are transmuted into messages on-the-spot. Can also be just plain strings, y'know, like, who really gives a shit, y'know var/last_text //No text spamming var/last_everyone //No text for everyone spamming var/last_noise //Also no honk spamming that's bad too @@ -340,7 +340,13 @@ GLOBAL_LIST_EMPTY(PDAs) dat += "

[PDAIMG(mail)] Messages

" - dat += tnote + //Build the message list + for(var/x in tnote) + if(istext(x)) // If it's literally just text + dat += tnote + else // It's hopefully a signal + var/datum/signal/subspace/messaging/pda/sig = x + dat += "[sig.data["name"]] ([sig.data["job"]]):
[sig.format_message(user)]
" dat += "
" if (3) @@ -649,7 +655,7 @@ GLOBAL_LIST_EMPTY(PDAs) var/target_text = signal.format_target() // Log it in our logs - tnote += "→ To [target_text]:
[signal.format_message()]
" + tnote += signal // Show it to ghosts var/ghost_message = "[owner] PDA Message --> [target_text]: [signal.format_message()]" for(var/mob/M in GLOB.player_list) @@ -665,7 +671,7 @@ GLOBAL_LIST_EMPTY(PDAs) last_everyone = world.time /obj/item/pda/proc/receive_message(datum/signal/subspace/messaging/pda/signal) - tnote += "← From [signal.data["name"]] ([signal.data["job"]]):
[signal.format_message()]
" + tnote += signal if (!silent) playsound(src, 'sound/machines/twobeep_high.ogg', 50, 1)