/tg/ Station 13 - Modules - TypesVar Details - Proc Details

atom_hud

Vars

hud_atomsassociative list of the form: list(z level = list(hud atom)). tracks what hud atoms for this hud exists in what z level so we can only give users the hud images that they can actually see.
hud_atoms_all_z_levelsused for signal tracking purposes, associative list of the form: list(hud atom = TRUE) that isnt separated by z level
hud_exceptionshuduser = list(atoms with their hud hidden) - aka everyone hates targeted invisiblity
hud_iconsthese will be the indexes for the atom's hud_list
hud_usersassociative list of the form: list(z level = list(hud user client mobs)). tracks mobs that can "see" us
hud_users_all_z_levelsused for signal tracking purposes, associative list of the form: list(hud user = number of times this hud was added to this user). that isnt separated by z level
next_time_allowedmobs associated with the next time this hud can be added to them
queued_to_seemobs that have triggered the cooldown and are queued to see the hud, but do not yet
uses_global_hud_categorywhether or not this atom_hud type updates the global huds_by_category list. some subtypes cant work like this since theyre supposed to "belong" to one target atom each. it will still go in the other global hud lists.

Procs

add_all_atoms_to_single_mob_hudall passed in hud_atoms's hud images (that are part of this atom_hud) to requesting_mob's client.images list optimization of /datum/atom_hud/proc/add_atom_to_single_mob_hud for hot cases, we assert that no nulls will be passed in via the list
add_atom_to_all_mob_hudsadd just hud_atom's hud images (that are part of this atom_hud) to all the requesting_mobs's client.images list optimization of /datum/atom_hud/proc/add_atom_to_single_mob_hud for hot cases, we assert that no nulls will be passed in via the list
add_atom_to_hudadd new_hud_atom to this hud
add_atom_to_single_mob_hudadd just hud_atom's hud images (that are part of this atom_hud) to requesting_mob's client.images list
add_single_hud_category_on_atomadds a newly active hud category's image on a hud atom to every mob that could see it
get_hud_atoms_for_z_levelreturns a list of all hud atoms in the given z level and linked lower z levels (because hud users in higher z levels can see below)
get_hud_users_for_z_levelreturns a list of all hud users in the given z level and linked upper z levels (because hud users in higher z levels can see below)
hide_fromHides the images in this hud from former_viewer If absolute is set to true, this will forcefully remove the hud, even if sources in theory remain
on_atom_or_user_z_level_changedwhen a hud atom or hud user changes z levels this makes sure it gets the images it needs and removes the images it doesnt need. because of how signals work we need the same proc to handle both use cases because being a hud atom and being a hud user arent mutually exclusive
remove_all_atoms_from_single_hudremove every hud image for this hud pulled from atoms_to_remove from client_mob's client.images list optimization of /datum/atom_hud/proc/remove_atom_from_single_hud for hot cases, we assert that no nulls will be passed in via the list
remove_atom_from_all_hudsremove every hud image for this hud on atom_to_remove from client_mobs's client.images list optimization of /datum/atom_hud/proc/remove_atom_from_single_hud for hot cases, we assert that no nulls will be passed in via the list
remove_atom_from_hudremove this atom from this hud completely
remove_atom_from_single_hudremove every hud image for this hud on atom_to_remove from client_mob's client.images list
remove_single_hud_category_on_atomremoves the image or images in hud_atom.hud_list[hud_category_to_remove] from every mob that can see it but leaves every other image from that atom there.
show_toshow this hud to the passed in user

Var Details

hud_atoms

associative list of the form: list(z level = list(hud atom)). tracks what hud atoms for this hud exists in what z level so we can only give users the hud images that they can actually see.

hud_atoms_all_z_levels

used for signal tracking purposes, associative list of the form: list(hud atom = TRUE) that isnt separated by z level

hud_exceptions

huduser = list(atoms with their hud hidden) - aka everyone hates targeted invisiblity

hud_icons

these will be the indexes for the atom's hud_list

hud_users

associative list of the form: list(z level = list(hud user client mobs)). tracks mobs that can "see" us

hud_users_all_z_levels

used for signal tracking purposes, associative list of the form: list(hud user = number of times this hud was added to this user). that isnt separated by z level

next_time_allowed

mobs associated with the next time this hud can be added to them

queued_to_see

mobs that have triggered the cooldown and are queued to see the hud, but do not yet

uses_global_hud_category

whether or not this atom_hud type updates the global huds_by_category list. some subtypes cant work like this since theyre supposed to "belong" to one target atom each. it will still go in the other global hud lists.

Proc Details

add_all_atoms_to_single_mob_hud

all passed in hud_atoms's hud images (that are part of this atom_hud) to requesting_mob's client.images list optimization of /datum/atom_hud/proc/add_atom_to_single_mob_hud for hot cases, we assert that no nulls will be passed in via the list

add_atom_to_all_mob_huds

add just hud_atom's hud images (that are part of this atom_hud) to all the requesting_mobs's client.images list optimization of /datum/atom_hud/proc/add_atom_to_single_mob_hud for hot cases, we assert that no nulls will be passed in via the list

add_atom_to_hud

add new_hud_atom to this hud

add_atom_to_single_mob_hud

add just hud_atom's hud images (that are part of this atom_hud) to requesting_mob's client.images list

add_single_hud_category_on_atom

adds a newly active hud category's image on a hud atom to every mob that could see it

get_hud_atoms_for_z_level

returns a list of all hud atoms in the given z level and linked lower z levels (because hud users in higher z levels can see below)

get_hud_users_for_z_level

returns a list of all hud users in the given z level and linked upper z levels (because hud users in higher z levels can see below)

hide_from

Hides the images in this hud from former_viewer If absolute is set to true, this will forcefully remove the hud, even if sources in theory remain

on_atom_or_user_z_level_changed

when a hud atom or hud user changes z levels this makes sure it gets the images it needs and removes the images it doesnt need. because of how signals work we need the same proc to handle both use cases because being a hud atom and being a hud user arent mutually exclusive

remove_all_atoms_from_single_hud

remove every hud image for this hud pulled from atoms_to_remove from client_mob's client.images list optimization of /datum/atom_hud/proc/remove_atom_from_single_hud for hot cases, we assert that no nulls will be passed in via the list

remove_atom_from_all_huds

remove every hud image for this hud on atom_to_remove from client_mobs's client.images list optimization of /datum/atom_hud/proc/remove_atom_from_single_hud for hot cases, we assert that no nulls will be passed in via the list

remove_atom_from_hud

remove this atom from this hud completely

remove_atom_from_single_hud

remove every hud image for this hud on atom_to_remove from client_mob's client.images list

remove_single_hud_category_on_atom

removes the image or images in hud_atom.hud_list[hud_category_to_remove] from every mob that can see it but leaves every other image from that atom there.

show_to

show this hud to the passed in user