diff --git a/code/WorkInProgress/AI_Visibility/cameranet.dm b/code/WorkInProgress/AI_Visibility/cameranet.dm index d5b001419f5..b7376b6b572 100644 --- a/code/WorkInProgress/AI_Visibility/cameranet.dm +++ b/code/WorkInProgress/AI_Visibility/cameranet.dm @@ -18,7 +18,6 @@ var/list/minimap = list() var/generating_minimap = TRUE - var/list/minimap_viewers = list() var/datum/cameranet/cameranet = new() @@ -35,14 +34,10 @@ var/datum/cameranet/cameranet = new() for(var/x = 0, x <= world.maxx, x += 16) for(var/y = 0, y <= world.maxy, y += 16) sleep(1) - var/datum/camerachunk/c = getCameraChunk(x, y, 1) - c.update_minimap() - - for(var/mob/m in minimap_viewers) - m.client.screen |= c.minimap_obj + getCameraChunk(x, y, 5) + getCameraChunk(x, y, 1) generating_minimap = FALSE - minimap_viewers = list() /datum/cameranet/proc/chunkGenerated(x, y, z) diff --git a/code/WorkInProgress/AI_Visibility/minimap.dm b/code/WorkInProgress/AI_Visibility/minimap.dm index 18003ceb6bf..52de1954757 100644 --- a/code/WorkInProgress/AI_Visibility/minimap.dm +++ b/code/WorkInProgress/AI_Visibility/minimap.dm @@ -1,4 +1,9 @@ +/client/var/minimap_view_z = 1 + +/obj/minimap_obj + var/datum/camerachunk/chunk + /obj/minimap_obj/Click(location, control, params) if(!istype(usr, /mob/dead) && !istype(usr, /mob/living/silicon/ai) && !(usr.client && usr.client.holder && usr.client.holder.level >= 4)) return @@ -14,44 +19,67 @@ var/x_text = copytext(screen_loc, 1, findtext(screen_loc, ",")) var/y_text = copytext(screen_loc, findtext(screen_loc, ",") + 1) - var/x = (text2num(copytext(x_text, 1, findtext(x_text, ":"))) - 1) * 16 + var/x = chunk.x x += round((text2num(copytext(x_text, findtext(x_text, ":") + 1)) + 1) / 2) - var/y = (text2num(copytext(y_text, 1, findtext(y_text, ":"))) - 1) * 16 + var/y = chunk.y y += round((text2num(copytext(y_text, findtext(y_text, ":") + 1)) + 1) / 2) if(istype(usr, /mob/living/silicon/ai)) var/mob/living/silicon/ai/ai = usr ai.freelook() - ai.eyeobj.loc = locate(max(1, x - 1), max(1, y - 1), ai.eyeobj.z) + ai.eyeobj.loc = locate(max(1, x - 1), max(1, y - 1), usr.client.minimap_view_z) cameranet.visibility(ai.eyeobj) else - usr.loc = locate(max(1, x - 1), max(1, y - 1), usr.z) + usr.loc = locate(max(1, x - 1), max(1, y - 1), usr.client.minimap_view_z) /mob/dead/verb/Open_Minimap() set category = "Ghost" - winshow(src, "minimapwindow", 1) - client.screen |= cameranet.minimap + cameranet.show_minimap(client) - if(cameranet.generating_minimap) - cameranet.minimap_viewers += src /mob/living/silicon/ai/verb/Open_Minimap() set category = "AI Commands" - winshow(src, "minimapwindow", 1) - client.screen |= cameranet.minimap + cameranet.show_minimap(client) - if(cameranet.generating_minimap) - cameranet.minimap_viewers += src /client/proc/Open_Minimap() set category = "Admin" - winshow(src, "minimapwindow", 1) - screen |= cameranet.minimap + cameranet.show_minimap(src) + + +/mob/verb/Open_Minimap_Z() + set hidden = 1 + + if(!istype(src, /mob/dead) && !istype(src, /mob/living/silicon/ai) && !(client && client.holder && client.holder.level >= 4)) + return + + var/level = input("Select a Z level", "Z select", null) as null | anything in cameranet.minimap + + if(level != null) + cameranet.show_minimap(client, level) + + + +/datum/cameranet/proc/show_minimap(client/client, z_level = "z-1") + if(!istype(client.mob, /mob/dead) && !istype(client.mob, /mob/living/silicon/ai) && !(client.holder && client.holder.level >= 4)) + return + + if(z_level in cameranet.minimap) + winshow(client, "minimapwindow", 1) + + for(var/key in cameranet.minimap) + client.screen -= cameranet.minimap[key] + + client.screen |= cameranet.minimap[z_level] + + if(cameranet.generating_minimap) + spawn(50) + show_minimap(client, z_level) + + client.minimap_view_z = text2num(copytext(z_level, 3)) - if(cameranet.generating_minimap) - cameranet.minimap_viewers += src.mob /datum/camerachunk/proc/update_minimap() if(changed && !updating) diff --git a/interface/skin.dmf b/interface/skin.dmf index a7fb4994df9..934b5e5751a 100644 --- a/interface/skin.dmf +++ b/interface/skin.dmf @@ -373,6 +373,24 @@ menu "minimap_menu" group = "minimap_size" is-disabled = false saved-params = "is-checked" + elem + name = "View" + command = "" + category = "" + is-checked = false + can-check = false + group = "" + is-disabled = false + saved-params = "is-checked" + elem + name = "Change Z level" + command = "Open-Minimap-Z" + category = "View" + is-checked = false + can-check = false + group = "" + is-disabled = false + saved-params = "is-checked" window "Telecomms IDE"