mirror of
https://github.com/Citadel-Station-13/Citadel-Station-13-RP.git
synced 2025-12-09 16:43:51 +00:00
82 lines
2.2 KiB
Plaintext
82 lines
2.2 KiB
Plaintext
//Repopulates sortedAreas list
|
|
/proc/repopulate_sorted_areas()
|
|
GLOB.sortedAreas = list()
|
|
|
|
for(var/area/A in world)
|
|
GLOB.sortedAreas.Add(A)
|
|
|
|
tim_sort(GLOB.sortedAreas, /proc/cmp_name_asc)
|
|
setupTeleportLocs() // shitcode patch to make vorecode work until we get rid of this shit meme or refactor it entirely
|
|
|
|
/area/proc/addSorted()
|
|
GLOB.sortedAreas.Add(src)
|
|
tim_sort(GLOB.sortedAreas, /proc/cmp_name_asc)
|
|
|
|
//Takes: Area type as a text string from a variable.
|
|
//Returns: Instance for the area in the world.
|
|
/proc/get_area_instance_from_text(areatext)
|
|
if(istext(areatext))
|
|
areatext = text2path(areatext)
|
|
return GLOB.areas_by_type[areatext]
|
|
|
|
//Takes: Area type as text string or as typepath OR an instance of the area.
|
|
//Returns: A list of all areas of that type in the world.
|
|
/proc/get_areas(areatype, subtypes=TRUE)
|
|
if(istext(areatype))
|
|
areatype = text2path(areatype)
|
|
else if(isarea(areatype))
|
|
var/area/areatemp = areatype
|
|
areatype = areatemp.type
|
|
else if(!ispath(areatype))
|
|
return null
|
|
|
|
var/list/areas = list()
|
|
if(subtypes)
|
|
var/list/cache = typecacheof(areatype)
|
|
for(var/V in GLOB.sortedAreas)
|
|
var/area/A = V
|
|
if(cache[A.type])
|
|
areas += V
|
|
else
|
|
for(var/V in GLOB.sortedAreas)
|
|
var/area/A = V
|
|
if(A.type == areatype)
|
|
areas += V
|
|
return areas
|
|
|
|
//Takes: Area type as text string or as typepath OR an instance of the area.
|
|
//Returns: A list of all turfs in areas of that type of that type in the world.
|
|
/proc/get_area_turfs(areatype, target_z = 0, subtypes=FALSE)
|
|
if(istext(areatype))
|
|
areatype = text2path(areatype)
|
|
else if(isarea(areatype))
|
|
var/area/areatemp = areatype
|
|
areatype = areatemp.type
|
|
else if(islist(areatype))
|
|
var/list/turfs = list()
|
|
for(var/A in areatype)
|
|
turfs += get_area_turfs(A)
|
|
return turfs
|
|
else if(!ispath(areatype))
|
|
return null
|
|
|
|
var/list/turfs = list()
|
|
if(subtypes)
|
|
var/list/cache = typecacheof(areatype)
|
|
for(var/V in GLOB.sortedAreas)
|
|
var/area/A = V
|
|
if(!cache[A.type])
|
|
continue
|
|
for(var/turf/T in A)
|
|
if(target_z == 0 || target_z == T.z)
|
|
turfs += T
|
|
else
|
|
for(var/V in GLOB.sortedAreas)
|
|
var/area/A = V
|
|
if(A.type != areatype)
|
|
continue
|
|
for(var/turf/T in A)
|
|
if(target_z == 0 || target_z == T.z)
|
|
turfs += T
|
|
return turfs
|