Skip to content

Commit

Permalink
assorted tcomms housekeeping
Browse files Browse the repository at this point in the history
split some files, merged some files, cleaned some code
removed spurious listening level toggle from relays
  • Loading branch information
Spookerton committed Jan 18, 2024
1 parent 6d865d9 commit 87d9ddf
Show file tree
Hide file tree
Showing 25 changed files with 1,938 additions and 2,302 deletions.
91 changes: 0 additions & 91 deletions code/defines/procs/radio.dm

This file was deleted.

13 changes: 13 additions & 0 deletions code/game/machinery/machinery.dm
Original file line number Diff line number Diff line change
Expand Up @@ -540,3 +540,16 @@ Class Procs:
// Stub for above proc. Implemented on exosuit fabricators and prosthetics fabricators.
/obj/machinery/proc/refresh_queue()
return


/obj/machinery/proc/get_multitool(mob/user)
var/obj/item/multitool/P = null
if (!issilicon(user) && istype(user.get_active_hand(), /obj/item/multitool))
P = user.get_active_hand()
else if (isAI(user))
var/mob/living/silicon/ai/U = user
P = U.aiMulti
else if (isrobot(user) && in_range(user, src))
if (istype(user.get_active_hand(), /obj/item/multitool))
P = user.get_active_hand()
return P
16 changes: 0 additions & 16 deletions code/game/machinery/newscaster.dm
Original file line number Diff line number Diff line change
Expand Up @@ -103,22 +103,6 @@
NEWSCASTER.newsAlert(annoncement)
NEWSCASTER.update_icon()

// var/list/receiving_pdas = new
// for (var/obj/item/pda/P in PDAs)
// if(!P.owner)
// continue
// if(P.toff)
// continue
// receiving_pdas += P

// spawn(0) // get_receptions sleeps further down the line, spawn of elsewhere
// var/datum/receptions/receptions = get_receptions(null, receiving_pdas) // datums are not atoms, thus we have to assume the newscast network always has reception

// for(var/obj/item/pda/PDA in receiving_pdas)
// if(!(receptions.receiver_reception[PDA] & TELECOMMS_RECEPTION_RECEIVER))
// continue

// PDA.new_news(annoncement)

var/global/datum/feed_network/news_network = new /datum/feed_network //The global news-network, which is coincidentally a global list.

Expand Down
122 changes: 122 additions & 0 deletions code/game/machinery/telecomms/allinone.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,122 @@
/* All In One Telecomms Machine
* Basically just an empty shell for receiving and broadcasting radio messages. Not
* very flexible, but it gets the job done. Listens on *every* zlevel unless subtyped.
*/

/obj/machinery/telecomms/allinone
name = "Telecommunications Mainframe"
icon = 'icons/obj/stationobjs.dmi'
icon_state = "allinone"
desc = "A compact machine used for portable subspace telecommuniations processing."
density = TRUE
use_power = USE_POWER_IDLE
idle_power_usage = 20
anchored = TRUE
machinetype = 6
produces_heat = FALSE
var/list/linked_radios_weakrefs = list()
var/intercept = FALSE // if nonzero, broadcasts all messages to syndicate channel
var/overmap_range = 0


/obj/machinery/telecomms/allinone/proc/link_radio(obj/item/radio/radio)
if (!istype(radio))
return
linked_radios_weakrefs |= weakref(radio)


/obj/machinery/telecomms/allinone/receive_signal(datum/signal/signal)
if (!on)
return
if (!using_map.use_overmap)
return
if (signal.data["done"])
return
var/map_levels = using_map.get_map_levels(z, TRUE, overmap_range)
if (signal.transmission_method != TRANSMISSION_BLUESPACE)
var/list/signal_levels = list()
signal_levels += signal.data["level"]
var/list/overlap = map_levels & signal_levels
if (!length(overlap))
return
if(!is_freq_listening(signal))
return
signal.data["done"] = TRUE
signal.data["compression"] = 0
var/datum/signal/original = signal.data["original"]
if (original)
original.data["done"] = TRUE
signal.data["level"] = map_levels
if (signal.data["slow"] > 0)
sleep(signal.data["slow"])
var/datum/radio_frequency/connection = signal.data["connection"]
var/list/forced_radios
for (var/weakref/wr in linked_radios_weakrefs)
var/obj/item/radio/radio = wr.resolve()
if (istype(radio))
LAZYDISTINCTADD(forced_radios, radio)
Broadcast_Message(
signal.data["connection"],
signal.data["mob"],
signal.data["vmask"],
signal.data["vmessage"],
signal.data["radio"],
signal.data["message"],
signal.data["name"],
signal.data["job"],
signal.data["realname"],
signal.data["vname"],
DATA_NORMAL,
signal.data["compression"],
signal.data["level"],
connection.frequency,
signal.data["verb"],
signal.data["language"],
forced_radios
)


/obj/machinery/telecomms/allinone/antag
use_power = USE_POWER_OFF
idle_power_usage = 0


/obj/machinery/telecomms/allinone/antag/receive_signal(datum/signal/signal)
if (!on)
return
if (!is_freq_listening(signal))
return
signal.data["done"] = TRUE
signal.data["compression"] = 0
var/datum/signal/original = signal.data["original"]
if (original)
original.data["done"] = TRUE
signal.data["level"] = using_map.contact_levels.Copy()
if (signal.data["slow"] > 0)
sleep(signal.data["slow"])
var/datum/radio_frequency/connection = signal.data["connection"]
var/list/forced_radios
for (var/weakref/wr in linked_radios_weakrefs)
var/obj/item/radio/radio = wr.resolve()
if (istype(radio))
LAZYDISTINCTADD(forced_radios, radio)
if (connection.frequency in ANTAG_FREQS)
Broadcast_Message(
signal.data["connection"], signal.data["mob"],
signal.data["vmask"], signal.data["vmessage"],
signal.data["radio"], signal.data["message"],
signal.data["name"], signal.data["job"],
signal.data["realname"], signal.data["vname"], DATA_NORMAL,
signal.data["compression"], list(0), connection.frequency,
signal.data["verb"], forced_radios
)
else if(intercept)
Broadcast_Message(
signal.data["connection"], signal.data["mob"],
signal.data["vmask"], signal.data["vmessage"],
signal.data["radio"], signal.data["message"],
signal.data["name"], signal.data["job"],
signal.data["realname"], signal.data["vname"], DATA_ANTAG,
signal.data["compression"], list(0), connection.frequency,
signal.data["verb"], forced_radios
)
Loading

0 comments on commit 87d9ddf

Please sign in to comment.