Files
VOREStation/code/modules/entopics_vr/entopics.dm
T
Cameron Lennox 84dc5535dc var/global/list -> GLOB. conversion (#17928)
* These two are easy

* !!!runlevel_flags

the fact it was global.runlevel_flags.len has me a bit...iffy on this.

* !!!json_cache

Same as above. used global.

* player_list & observer_mob_list

* mechas_list

* this wasn't even used

* surgery_steps

* event_triggers

* landmarks_list

* dead_mob_list

* living_mob_list

* ai_list

* cable_list

* cleanbot_reserved_turfs

* listening_objects

* silicon_mob_list

* human_mob_list

* Update global_lists.dm

* joblist

* mob_list

* Update global_lists.dm

* holomap_markers

* mapping_units

* mapping_beacons

* hair_styles_list

* facial_hair_styles_list

* Update global_lists.dm

* facial_hair_styles_male_list

* facial_hair_styles_female_list

* body_marking_styles_list

* body_marking_nopersist_list

* ear_styles_list

* hair_styles_male_list

* tail_styles_list

* wing_styles_list

* escape_list & rune_list & endgame_exits

these were all really small

* endgame_safespawns

* stool_cache

* emotes_by_key

* random_maps & map_count

* item_tf_spawnpoints

* narsie_list

* active_radio_jammers

* unused

* paikeys

* pai_software_by_key & default_pai_software

* plant_seed_sprites

* magazine_icondata_keys  & magazine_icondata_states

* unused

* ashtray_cache

* light_type_cache

* HOLIDAY!!!

this one was annoying

* faction stuff (red?!)

* Update preferences_factions.dm

* vs edit removal

* backbaglist, pdachoicelist, exclude_jobs

* item_digestion_blacklist, edible_tech, blacklisted_artifact_effect, selectable_footstep, hexNums, syndicate_access

* string_slot_flags and hexdigits->hexNums

* possible_changeling_IDs

* vr_mob_tf_options

* vr_mob_spawner_options

* pipe_colors

* vr_mob_spawner_options

* common_tools

* newscaster_standard_feeds

* Update periodic_news.dm

* changeling_fabricated_clothing

* semirandom_mob_spawner_decisions

* id_card_states

* Update syndicate_ids.dm

* overlay_cache & gear_distributed_to

* more

* radio_channels_by_freq

* Update global_lists.dm

* proper

* default_medbay_channels & default_internal_channels

default_internal_channels is weird as it has a mapbased proc() but that proc is never called...

* valid_ringtones

* move this

* possible_plants

* more

* separate these

moves xeno2chemlist from a hook to a new global list.

* tube_dir_list

* valid_bloodreagents & monitor_states

* Junk

* valid_bloodtypes

* breach_burn_descriptors & burn

* more!!

appliance_available_recipes seems uber cursed, re-look at later

* Appliance code is cursed

* wide_chassis & flying_chassis

* allows_eye_color

* all_tooltip_styles

* direction_table

* gun_choices

* severity_to_string

* old event_viruses

* description_icons

* MOVE_KEY_MAPPINGS

* more more

* pai & robot modules

* Update global_lists.dm

* GEOSAMPLES

Also swaps a .len to LAZYLEN()

* shieldgens

* reagent recipies

* global ammo types

* rad collector

* old file and unused global

* nif_look_messages

* FESH

* nifsoft

* chamelion

* the death of sortAtom

* globulins

* lazylen that

* Update global_lists.dm

* LAZY

* Theese too

* quick fix

---------

Co-authored-by: Kashargul <144968721+Kashargul@users.noreply.github.com>
2025-07-14 20:14:31 +02:00

128 lines
2.9 KiB
Plaintext

//Augmented reality objects and their associated systems for attaching to things
/datum/entopic
var/name
var/suffix
var/icon
var/icon_state
var/plane
var/layer
var/holder
var/alpha = 200 //Holo-ish
var/override = FALSE
var/image/my_image
var/registered = FALSE // Less expensive to make it a finite state than to use |= on entopic_images or anything like that.
/datum/entopic/New(var/atom/aholder, var/icon/aicon, var/aicon_state, var/aalpha, var/aplane, var/alayer, var/aoverride, var/aname, var/asuffix)
ASSERT(aholder && (isicon(aicon) || isicon(icon)))
//Everything we need to set in the initializer
var/image/tempimage = image(icon = aicon || icon, loc = aholder, icon_state = aicon_state || icon_state)
//And everything we don't (order of prescidence: directly passed, datum-specified, then natural byond)
if(aplane)
tempimage.plane = plane = aplane
else if(plane)
tempimage.plane = plane
if(alayer)
tempimage.layer = layer = alayer
else if(layer)
tempimage.layer = layer
if(aalpha)
tempimage.alpha = alpha = aalpha
else if(alpha)
tempimage.alpha = alpha
if(aoverride)
tempimage.override = override = aoverride
else if(override)
tempimage.override = override
if(aname)
tempimage.name = name = aname
else if(name)
tempimage.name = name
if(asuffix)
tempimage.suffix = suffix = asuffix
else if(suffix)
tempimage.suffix = suffix
//Save these for later
holder = aholder
if(aicon)
icon = aicon
if(icon_state)
icon_state = aicon_state
my_image = tempimage
register_entopic()
/datum/entopic/Destroy()
unregister_entopic()
my_image = null //Bye!
return ..()
/datum/entopic/proc/register_entopic()
if(registered || !my_image)
return
registered = TRUE
GLOB.entopic_images += my_image
for(var/mob/M as anything in GLOB.entopic_users)
if(M.client)
M.client.images += my_image
/datum/entopic/proc/unregister_entopic()
if(!registered || !my_image)
return
registered = FALSE
GLOB.entopic_images -= my_image
for(var/mob/M as anything in GLOB.entopic_users)
if(M.client)
M.client.images -= my_image
/datum/entopic/proc/show()
if(!my_image)
return
my_image.mouse_opacity = 1
my_image.invisibility = INVISIBILITY_NONE
my_image.alpha = alpha
my_image.override = override
/datum/entopic/proc/hide()
if(!my_image)
return
my_image.mouse_opacity = 0
my_image.invisibility = INVISIBILITY_ABSTRACT
my_image.alpha = 0
my_image.override = FALSE
//////////////////////////////////////
// Debug helper stuff
/obj/item/entopic_debug
name = "Entopic Debugger"
desc = "You shouldn't see this..."
icon = 'icons/obj/machines/ar_elements.dmi'
icon_state = "proj0"
var/datum/entopic/ent_debug
/obj/item/entopic_debug/Initialize(mapload)
. = ..()
ent_debug = new(aholder = src, aicon = icon, aicon_state = "holo_Jin")
/proc/entopic_icon_helper(var/atom/A,var/holo = TRUE)
ASSERT(A)
var/icon/CI = getCompoundIcon(A)
var/icon/HI = getHologramIcon(CI)
usr << ftp(holo ? HI : CI,"[A.name].dmi")