Station Holomap Workplace Finder (#34588)

* Workplace Finder

* derp

* image

* multi

* herp
This commit is contained in:
DeityLink
2023-07-15 01:23:03 +02:00
committed by GitHub
parent 69f0e9abd1
commit 8ee3d048eb
7 changed files with 98 additions and 6 deletions

View File

@@ -76,7 +76,7 @@
newMarker.y = nukedisk.y
newMarker.z = nukedisk.z
holomap_markers[HOLOMAP_MARKER_DISK] = newMarker
//generating area markers
//generating area markers
for(var/area/A in areas)
if(A.holomap_marker)
var/turf/T = A.getAreaCenter(ZLevel)
@@ -95,7 +95,50 @@
if(!fill_area)
fill_area = get_base_area(T.z)
T.set_area(fill_area)
//workplace markers
var/list/landmarks = list()
for (var/obj/effect/landmark/start/landmark in landmarks_list)
if (!("[landmark.name]_[landmark.z]" in landmarks))
landmarks["[landmark.name]_[landmark.z]"] = list(landmark)
else
landmarks["[landmark.name]_[landmark.z]"] += landmark
for (var/landmark_id in landmarks)
var/total_x = 0
var/total_y = 0
var/first_x = 0
var/first_y = 0
var/only_one = TRUE//we try to generate just one marker that averages the spawn locations
var/list/landmark_starts = landmarks[landmark_id]
if (!landmark_starts.len)
continue
for (var/obj/effect/landmark/start in landmark_starts)
if (!first_x)
first_x = start.x
first_y = start.y
var/diff = abs(first_x - start.x) + abs(first_y - start.y)
if(diff > 50)
only_one = FALSE//but if some of them are too far appart, we'll list them all.
break
if (only_one)
var/datum/holomap_marker/newMarker = new()
newMarker.id = landmark_id
for (var/obj/effect/landmark/start in landmark_starts)
total_x += start.x
total_y += start.y
newMarker.z = start.z
newMarker.x = round(total_x/landmark_starts.len)
newMarker.y = round(total_y/landmark_starts.len)
workplace_markers[newMarker.id] = list(newMarker)
else
workplace_markers[landmark_id] = list()
for (var/obj/effect/landmark/start in landmark_starts)
var/datum/holomap_marker/newMarker = new()
newMarker.id = landmark_id
newMarker.x = start.x
newMarker.y = start.y
newMarker.z = start.z
workplace_markers[newMarker.id] += newMarker
/proc/generateHoloMinimap(var/zLevel=1)