From 97305576745c7eb0516af890ef426271fa72e46f Mon Sep 17 00:00:00 2001 From: Arokha Sieyes Date: Sat, 22 Oct 2016 18:14:27 -0400 Subject: [PATCH] Omnihud glasses --- code/defines/procs/hud_vr.dm | 20 +++++++ code/modules/clothing/glasses/hud_vr.dm | 53 +++++++++++++++++++ .../mob/living/carbon/human/examine.dm | 1 + .../mob/living/carbon/human/examine_vr.dm | 15 ++++++ code/modules/mob/living/carbon/human/life.dm | 5 ++ code/modules/research/designs_vr.dm | 16 ++++++ maps/virgo-1.dmm | 12 ++--- vorestation.dme | 1 + 8 files changed, 117 insertions(+), 6 deletions(-) create mode 100644 code/defines/procs/hud_vr.dm diff --git a/code/defines/procs/hud_vr.dm b/code/defines/procs/hud_vr.dm new file mode 100644 index 00000000000..62f1b7ab27f --- /dev/null +++ b/code/defines/procs/hud_vr.dm @@ -0,0 +1,20 @@ +proc/process_omni_hud(var/mob/M, var/mode, var/mob/Alt) + if(!can_process_hud(M)) + return + + var/datum/arranged_hud_process/P = arrange_hud_process(M, Alt, med_hud_users) + for(var/mob/living/carbon/human/guy in P.Mob.in_view(P.Turf)) + if(P.Mob.see_invisible < guy.invisibility) + continue + + P.Client.images += guy.hud_list[ID_HUD] + P.Client.images += guy.hud_list[HEALTH_HUD] + + //if(shades.mode == "med") //Medical advanced version + //Nothing special to show, really, just records become available. + if(mode == "sec") //Security advanced version + P.Client.images += guy.hud_list[WANTED_HUD] + P.Client.images += guy.hud_list[IMPLOYAL_HUD] + if(mode == "best") //Command/omni advanced version + P.Client.images += guy.hud_list[WANTED_HUD] + P.Client.images += guy.hud_list[IMPLOYAL_HUD] \ No newline at end of file diff --git a/code/modules/clothing/glasses/hud_vr.dm b/code/modules/clothing/glasses/hud_vr.dm index e69de29bb2d..6e3728792ee 100644 --- a/code/modules/clothing/glasses/hud_vr.dm +++ b/code/modules/clothing/glasses/hud_vr.dm @@ -0,0 +1,53 @@ +/obj/item/clothing/glasses/sunglasses/omnihud + name = "AR sunglasses" + desc = "The KHI-63 AR Sunglasses are a design from Kitsuhana Heavy Industries. \ + Not as complete as specialist HUD systems in their standard configuration, but they \ + do combine features from several different existing HUDs." + origin_tech = list(TECH_MAGNET = 3, TECH_BIO = 3) + var/obj/item/clothing/glasses/hud/omni/hud = null + + icon = 'icons/vore/custom_items_vr.dmi' + icon_override = 'icons/vore/custom_clothes_vr.dmi' + icon_state = "omniglasses" + var/mode = "civ" + + New() + ..() + src.hud = new/obj/item/clothing/glasses/hud/omni(src) + return + +/obj/item/clothing/glasses/sunglasses/omnihud/cmo + name = "AR-M sunglasses" + desc = "The KHI-63-M AR Sunglasses are a design from Kitsuhana Heavy Industries. \ + These have been upgraded with advanced medical records integration." + mode = "med" + +/obj/item/clothing/glasses/sunglasses/omnihud/hos + name = "AR-S sunglasses" + desc = "The KHI-63-S AR Sunglasses are a design from Kitsuhana Heavy Industries. \ + These have been upgraded with advanced security records integration." + mode = "sec" + +/obj/item/clothing/glasses/sunglasses/omnihud/best + name = "AR-B sunglasses" + desc = "The KHI-63-B AR Sunglasses are a design from Kitsuhana Heavy Industries. \ + These have been upgraded with advanced medical and security records integration." + mode = "best" + +/obj/item/clothing/glasses/hud/omni + name = "internal omni hud" + desc = "You shouldn't see this. This is an internal item for sunglasses." + var/obj/item/clothing/glasses/sunglasses/omnihud/shades = null + + vision_flags = SEE_MOBS + see_invisible = SEE_INVISIBLE_NOLIGHTING + + New() + ..() + if(istype(loc,/obj/item/clothing/glasses/sunglasses/omnihud)) + shades = loc + else + qdel(src) + +/obj/item/clothing/glasses/hud/omni/process_hud(var/mob/M) + process_omni_hud(M,shades.mode) \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm index b11a0454594..adf57596dc5 100644 --- a/code/modules/mob/living/carbon/human/examine.dm +++ b/code/modules/mob/living/carbon/human/examine.dm @@ -437,6 +437,7 @@ /proc/hasHUD(mob/M as mob, hudtype) if(istype(M, /mob/living/carbon/human)) var/mob/living/carbon/human/H = M + if(hasHUD_vr(H,hudtype)) return 1 //VOREStation Add - Added records access for certain modes of omni-hud glasses switch(hudtype) if("security") return istype(H.glasses, /obj/item/clothing/glasses/hud/security) || istype(H.glasses, /obj/item/clothing/glasses/sunglasses/sechud) diff --git a/code/modules/mob/living/carbon/human/examine_vr.dm b/code/modules/mob/living/carbon/human/examine_vr.dm index 22a9e5e0a00..85512ffdcc0 100644 --- a/code/modules/mob/living/carbon/human/examine_vr.dm +++ b/code/modules/mob/living/carbon/human/examine_vr.dm @@ -111,3 +111,18 @@ message += B.get_examine_msg() return message + +//For OmniHUD records access for appropriate models +/proc/hasHUD_vr(mob/living/carbon/human/H, hudtype) + if(!(istype(H.glasses, /obj/item/clothing/glasses/sunglasses/omnihud))) + return 0 //Not wearing omnis, don't care. + + var/obj/item/clothing/glasses/sunglasses/omnihud/omni = H.glasses + + switch(hudtype) + if("security") + return omni.mode == "sec" || omni.mode == "best" + if("medical") + return omni.mode == "med" || omni.mode == "best" + else + return 0 \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index ceef119b33a..94844a85538 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -1329,6 +1329,11 @@ if(istype(G, /obj/item/clothing/glasses/sunglasses/sechud)) var/obj/item/clothing/glasses/sunglasses/sechud/S = G O = S.hud + //VOREStation Add - Support for omnihud glasses + if(istype(G, /obj/item/clothing/glasses/sunglasses/omnihud)) + var/obj/item/clothing/glasses/sunglasses/omnihud/S = G + O = S.hud + //VOREStation Add End if(istype(O)) O.process_hud(src) if(!druggy && !seer) see_invisible = SEE_INVISIBLE_LIVING diff --git a/code/modules/research/designs_vr.dm b/code/modules/research/designs_vr.dm index cafca05a40a..74e04c910d3 100644 --- a/code/modules/research/designs_vr.dm +++ b/code/modules/research/designs_vr.dm @@ -21,3 +21,19 @@ materials = list(DEFAULT_WALL_MATERIAL = 3000, "glass" = 2000, "uranium" = 2000) build_path = /obj/item/weapon/gun/energy/sizegun sort_string = "TAAAB" + +/datum/design/item/weapon/sizegun + name = "shrink ray" + id = "shrinkray" + req_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 3, TECH_POWER = 2) + materials = list(DEFAULT_WALL_MATERIAL = 3000, "glass" = 2000, "uranium" = 2000) + build_path = /obj/item/weapon/gun/energy/sizegun + sort_string = "TAAAB" + +/datum/design/item/hud/omni + name = "AR sunglasses" + id = "omnihud" + req_tech = list(TECH_MAGNET = 4, TECH_COMBAT = 3, TECH_BIO = 3) + materials = list(DEFAULT_WALL_MATERIAL = 1000, "glass" = 1000) + build_path = /obj/item/clothing/glasses/sunglasses/omnihud + sort_string = "GAAFB" \ No newline at end of file diff --git a/maps/virgo-1.dmm b/maps/virgo-1.dmm index 3938644c8ba..899555d0a7f 100644 --- a/maps/virgo-1.dmm +++ b/maps/virgo-1.dmm @@ -1341,7 +1341,7 @@ "azO" = (/obj/machinery/computer/security,/turf/simulated/floor/tiled/dark,/area/crew_quarters/heads/hos) "azP" = (/obj/machinery/computer/secure_data,/turf/simulated/floor/tiled/dark,/area/crew_quarters/heads/hos) "azQ" = (/obj/structure/filingcabinet,/obj/item/device/radio/intercom{broadcasting = 0; dir = 2; frequency = 1475; icon_state = "intercom"; listening = 1; name = "Station Intercom (Security)"; pixel_x = 0; pixel_y = -21},/turf/simulated/floor/tiled/dark,/area/crew_quarters/heads/hos) -"azR" = (/obj/structure/closet/secure_closet/hos,/turf/simulated/floor/tiled/dark,/area/crew_quarters/heads/hos) +"azR" = (/obj/structure/closet/secure_closet/hos,/obj/item/clothing/glasses/sunglasses/omnihud/hos,/turf/simulated/floor/tiled/dark,/area/crew_quarters/heads/hos) "azS" = (/obj/structure/grille,/obj/structure/cable/green,/obj/machinery/door/firedoor/border_only,/obj/structure/window/reinforced/polarized,/obj/structure/window/reinforced/polarized{dir = 8},/obj/structure/window/reinforced/polarized{dir = 4},/turf/simulated/floor/plating,/area/crew_quarters/heads/hos) "azT" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled,/area/security/main) "azU" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/tiled,/area/security/main) @@ -3837,7 +3837,7 @@ "bvO" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only,/obj/machinery/door/blast/shutters{density = 0; dir = 8; icon_state = "shutter0"; id = "medbayquar"; name = "Medbay Emergency Lockdown Shutters"; opacity = 0},/turf/simulated/floor/plating,/area/medical/reception) "bvP" = (/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -21},/obj/structure/flora/pottedplant{icon_state = "plant-22"},/turf/simulated/floor/tiled/dark,/area/hallway/primary/central_two) "bvQ" = (/obj/effect/floor_decal/corner/paleblue{dir = 6},/turf/simulated/floor/tiled/white,/area/medical/reception) -"bvR" = (/obj/structure/closet/secure_closet/CMO,/obj/effect/floor_decal/corner/paleblue{dir = 6},/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 21},/turf/simulated/floor/tiled/white,/area/crew_quarters/heads/cmo) +"bvR" = (/obj/structure/closet/secure_closet/CMO,/obj/effect/floor_decal/corner/paleblue{dir = 6},/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 21},/obj/item/clothing/glasses/sunglasses/omnihud/cmo,/turf/simulated/floor/tiled/white,/area/crew_quarters/heads/cmo) "bvS" = (/turf/simulated/floor/tiled/white,/area/medical/reception) "bvT" = (/obj/machinery/atmospherics/unary/vent_scrubber/on,/turf/simulated/floor/tiled/white,/area/medical/reception) "bvU" = (/obj/effect/floor_decal/corner/pink{dir = 10},/obj/item/device/radio/intercom{broadcasting = 0; canhear_range = 5; dir = 2; frequency = 1487; icon_state = "intercom"; listening = 0; name = "Station Intercom (Medbay)"; pixel_x = 0; pixel_y = -21},/turf/simulated/floor/tiled/white,/area/medical/surgery) @@ -4843,7 +4843,7 @@ "bPg" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/turf/simulated/floor/tiled/white,/area/rnd/research) "bPh" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/turf/simulated/floor/tiled/white,/area/rnd/rdoffice) "bPi" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/turf/simulated/floor/tiled/white,/area/rnd/rdoffice) -"bPj" = (/obj/structure/closet/secure_closet/RD,/turf/simulated/floor/tiled/dark,/area/rnd/rdoffice) +"bPj" = (/obj/structure/closet/secure_closet/RD,/obj/item/clothing/glasses/sunglasses/omnihud,/turf/simulated/floor/tiled/dark,/area/rnd/rdoffice) "bPk" = (/obj/structure/reagent_dispensers/acid{density = 0; pixel_x = -32},/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/machinery/camera/network/research{c_tag = "SCI - Robotics Port"; dir = 4},/obj/structure/table/standard,/obj/effect/floor_decal/industrial/warning{dir = 1},/obj/item/weapon/storage/box/bodybags{pixel_x = -1; pixel_y = -2},/turf/simulated/floor/tiled,/area/assembly/robotics) "bPl" = (/obj/effect/floor_decal/industrial/warning{dir = 1},/turf/simulated/floor/tiled/white,/area/assembly/robotics) "bPm" = (/obj/effect/floor_decal/industrial/warning{dir = 5},/turf/simulated/floor/tiled/white,/area/assembly/robotics) @@ -5042,7 +5042,7 @@ "bSX" = (/obj/effect/floor_decal/corner/blue{dir = 9},/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled,/area/bridge_hallway) "bSY" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/floor_decal/corner/blue,/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/tiled,/area/bridge_hallway) "bSZ" = (/obj/effect/floor_decal/corner/blue/full{dir = 4},/obj/machinery/vending/coffee,/turf/simulated/floor/tiled,/area/bridge_hallway) -"bTa" = (/obj/structure/closet/secure_closet/captains,/turf/simulated/floor/carpet,/area/crew_quarters/captain) +"bTa" = (/obj/structure/closet/secure_closet/captains,/obj/item/clothing/glasses/sunglasses/omnihud/best,/turf/simulated/floor/carpet,/area/crew_quarters/captain) "bTb" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor/carpet,/area/crew_quarters/captain) "bTc" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/obj/machinery/camera/network/command{c_tag = "COM - Captain's Bedroom"; dir = 1},/turf/simulated/floor/carpet,/area/crew_quarters/captain) "bTd" = (/obj/structure/displaycase,/turf/simulated/floor/carpet,/area/crew_quarters/captain) @@ -6794,7 +6794,7 @@ "cAH" = (/obj/effect/floor_decal/industrial/outline/yellow,/obj/vehicle/train/cargo/engine,/obj/machinery/light{dir = 4},/turf/simulated/floor/tiled,/area/quartermaster/storage) "cAI" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only,/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/ai_monitored/storage/eva) "cAJ" = (/obj/structure/closet,/obj/item/weapon/storage/backpack/dufflebag,/turf/simulated/floor/tiled,/area/quartermaster/qm) -"cAK" = (/obj/structure/closet/secure_closet/quartermaster,/turf/simulated/floor/tiled,/area/quartermaster/qm) +"cAK" = (/obj/structure/closet/secure_closet/quartermaster,/obj/item/clothing/glasses/sunglasses/omnihud,/turf/simulated/floor/tiled,/area/quartermaster/qm) "cAL" = (/obj/structure/table/standard,/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/obj/machinery/light_switch{pixel_x = -12; pixel_y = -24},/obj/effect/floor_decal/corner/brown{dir = 8},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/item/device/retail_scanner/civilian{tag = "icon-retail_idle (NORTH)"; icon_state = "retail_idle"; dir = 1},/turf/simulated/floor/tiled,/area/quartermaster/office) "cAM" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/effect/floor_decal/industrial/warning{dir = 1},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating,/area/maintenance/portsolar) "cAN" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/maintenance/apmaint) @@ -7751,7 +7751,7 @@ "cTc" = (/obj/machinery/light,/turf/simulated/floor/tiled,/area/crew_quarters/heads/chief) "cTd" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/tiled,/area/vacant/vacant_shop) "cTe" = (/obj/machinery/light_switch{pixel_x = -12; pixel_y = -24},/obj/structure/cable/green,/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/turf/simulated/floor/tiled,/area/crew_quarters/heads/chief) -"cTf" = (/obj/structure/closet/secure_closet/engineering_chief,/obj/effect/floor_decal/corner/blue/full{dir = 1},/turf/simulated/floor/tiled,/area/crew_quarters/heads/chief) +"cTf" = (/obj/structure/closet/secure_closet/engineering_chief,/obj/effect/floor_decal/corner/blue/full{dir = 1},/obj/item/clothing/glasses/sunglasses/omnihud,/turf/simulated/floor/tiled,/area/crew_quarters/heads/chief) "cTg" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 8},/obj/structure/extinguisher_cabinet{pixel_x = 25},/obj/effect/floor_decal/corner/blue/full{dir = 4},/turf/simulated/floor/tiled,/area/crew_quarters/heads/chief) "cTh" = (/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 8; icon_state = "map"; tag = "icon-manifold-f (WEST)"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor,/area/maintenance/evahallway) "cTi" = (/obj/structure/bed/chair{dir = 1},/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -28},/turf/simulated/floor/carpet,/area/hallway/secondary/entry/docking_lounge) diff --git a/vorestation.dme b/vorestation.dme index 1f619a4a3d8..e9a124e90df 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -281,6 +281,7 @@ #include "code\defines\procs\AStar.dm" #include "code\defines\procs\dbcore.dm" #include "code\defines\procs\hud.dm" +#include "code\defines\procs\hud_vr.dm" #include "code\defines\procs\radio.dm" #include "code\defines\procs\sd_Alert.dm" #include "code\defines\procs\statistics.dm"