From 757c33ad84cb2fac8a9ffb4dc1106b4cfbfaf43e Mon Sep 17 00:00:00 2001 From: Ryan784 Date: Fri, 15 Jan 2016 01:59:13 -0500 Subject: [PATCH] AI-HUD and interface Adds back in AI buttons/interface, for easier access to verbs. Send-Message and Take-Picture verbs for AI appear to be bugged/unusable, holding off on fixing in case of any bay updates. --- baystation12.dme | 2 + code/_onclick/hud/_defines.dm | 19 +++ code/_onclick/hud/ai.dm | 143 +++++++++++++++++++++ code/_onclick/hud/other_mobs.dm | 3 - code/_onclick/hud/screen_objects.dm | 77 +++++++++++ code/modules/mob/living/silicon/ai/nano.dm | 8 ++ icons/mob/screen_ai.dmi | Bin 0 -> 5404 bytes 7 files changed, 249 insertions(+), 3 deletions(-) create mode 100644 code/_onclick/hud/ai.dm create mode 100644 code/modules/mob/living/silicon/ai/nano.dm create mode 100644 icons/mob/screen_ai.dmi diff --git a/baystation12.dme b/baystation12.dme index af6e369282f..1b6d146a185 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -44,6 +44,7 @@ #include "code\_onclick\other_mobs.dm" #include "code\_onclick\telekinesis.dm" #include "code\_onclick\hud\_defines.dm" +#include "code\_onclick\hud\ai.dm" #include "code\_onclick\hud\alien_larva.dm" #include "code\_onclick\hud\hud.dm" #include "code\_onclick\hud\human.dm" @@ -1245,6 +1246,7 @@ #include "code\modules\mob\living\silicon\ai\life.dm" #include "code\modules\mob\living\silicon\ai\login.dm" #include "code\modules\mob\living\silicon\ai\logout.dm" +#include "code\modules\mob\living\silicon\ai\nano.dm" #include "code\modules\mob\living\silicon\decoy\death.dm" #include "code\modules\mob\living\silicon\decoy\decoy.dm" #include "code\modules\mob\living\silicon\decoy\life.dm" diff --git a/code/_onclick/hud/_defines.dm b/code/_onclick/hud/_defines.dm index 900e89e7e75..13c622fb3d9 100644 --- a/code/_onclick/hud/_defines.dm +++ b/code/_onclick/hud/_defines.dm @@ -127,3 +127,22 @@ #define ui_spell_master "14:16,14:16" #define ui_genetic_master "14:16,12:16" + +// AI + +#define ui_ai_camera_list "SOUTH:6+1,WEST+1:16" +#define ui_ai_track_with_camera "SOUTH:6+1,WEST+2:16" +#define ui_ai_camera_light "SOUTH:6+1,WEST+3:16" +#define ui_ai_sensor "SOUTH:6+1,WEST+4:16" + +#define ui_ai_core "SOUTH:6,WEST+1:16" +#define ui_ai_crew_monitor "SOUTH:6,WEST+2:16" +#define ui_ai_crew_manifest "SOUTH:6,WEST+3:16" +#define ui_ai_alerts "SOUTH:6,WEST+4:16" +#define ui_ai_announcement "SOUTH:6,WEST+5:16" +#define ui_ai_shuttle "SOUTH:6,WEST+6:16" +#define ui_ai_state_laws "SOUTH:6,WEST+7:16" +#define ui_ai_pda_send "SOUTH:6,WEST+8:16" +#define ui_ai_pda_log "SOUTH:6,WEST+9:16" +#define ui_ai_take_picture "SOUTH:6,WEST+10:16" +#define ui_ai_view_images "SOUTH:6,WEST+11:16" diff --git a/code/_onclick/hud/ai.dm b/code/_onclick/hud/ai.dm new file mode 100644 index 00000000000..499dc7f7150 --- /dev/null +++ b/code/_onclick/hud/ai.dm @@ -0,0 +1,143 @@ +/datum/hud/proc/ai_hud() + adding = list() + other = list() + + var/obj/screen/using + +//AI core + using = new /obj/screen() + using.name = "AI Core" + using.icon = 'icons/mob/screen_ai.dmi' + using.icon_state = "ai_core" + using.screen_loc = ui_ai_core + using.layer = 20 + adding += using + +//Camera list + using = new /obj/screen() + using.name = "Show Camera List" + using.icon = 'icons/mob/screen_ai.dmi' + using.icon_state = "camera" + using.screen_loc = ui_ai_camera_list + using.layer = 20 + adding += using + +//Track + using = new /obj/screen() + using.name = "Track With Camera" + using.icon = 'icons/mob/screen_ai.dmi' + using.icon_state = "track" + using.screen_loc = ui_ai_track_with_camera + using.layer = 20 + adding += using + +//Camera light + using = new /obj/screen() + using.name = "Toggle Camera Light" + using.icon = 'icons/mob/screen_ai.dmi' + using.icon_state = "camera_light" + using.screen_loc = ui_ai_camera_light + using.layer = 20 + adding += using + +//Crew Monitorting + using = new /obj/screen() + using.name = "Crew Monitoring" + using.icon = 'icons/mob/screen_ai.dmi' + using.icon_state = "crew_monitor" + using.screen_loc = ui_ai_crew_monitor + using.layer = 20 + adding += using + +//Crew Manifest + using = new /obj/screen() + using.name = "Show Crew Manifest" + using.icon = 'icons/mob/screen_ai.dmi' + using.icon_state = "manifest" + using.screen_loc = ui_ai_crew_manifest + using.layer = 20 + adding += using + +//Alerts + using = new /obj/screen() + using.name = "Show Alerts" + using.icon = 'icons/mob/screen_ai.dmi' + using.icon_state = "alerts" + using.screen_loc = ui_ai_alerts + using.layer = 20 + adding += using + +//Announcement + using = new /obj/screen() + using.name = "Announcement" + using.icon = 'icons/mob/screen_ai.dmi' + using.icon_state = "announcement" + using.screen_loc = ui_ai_announcement + using.layer = 20 + adding += using + +//Shuttle + using = new /obj/screen() + using.name = "Call Emergency Shuttle" + using.icon = 'icons/mob/screen_ai.dmi' + using.icon_state = "call_shuttle" + using.screen_loc = ui_ai_shuttle + using.layer = 20 + adding += using + +//Laws + using = new /obj/screen() + using.name = "State Laws" + using.icon = 'icons/mob/screen_ai.dmi' + using.icon_state = "state_laws" + using.screen_loc = ui_ai_state_laws + using.layer = 20 + adding += using + +//PDA message + using = new /obj/screen() + using.name = "PDA - Send Message" + using.icon = 'icons/mob/screen_ai.dmi' + using.icon_state = "pda_send" + using.screen_loc = ui_ai_pda_send + using.layer = 20 + adding += using + +//PDA log + using = new /obj/screen() + using.name = "PDA - Show Message Log" + using.icon = 'icons/mob/screen_ai.dmi' + using.icon_state = "pda_receive" + using.screen_loc = ui_ai_pda_log + using.layer = 20 + adding += using + +//Take image + using = new /obj/screen() + using.name = "Take Image" + using.icon = 'icons/mob/screen_ai.dmi' + using.icon_state = "take_picture" + using.screen_loc = ui_ai_take_picture + using.layer = 20 + adding += using + +//View images + using = new /obj/screen() + using.name = "View Images" + using.icon = 'icons/mob/screen_ai.dmi' + using.icon_state = "view_images" + using.screen_loc = ui_ai_view_images + using.layer = 20 + adding += using + +//Medical/Security sensors + using = new /obj/screen() + using.name = "Set Sensor Augmentation" + using.icon = 'icons/mob/screen_ai.dmi' + using.icon_state = "ai_sensor" + using.screen_loc = ui_ai_sensor + using.layer = 20 + adding += using + + mymob.client.screen += adding + other + return diff --git a/code/_onclick/hud/other_mobs.dm b/code/_onclick/hud/other_mobs.dm index 5dd1b542cfa..08a050d8c5c 100644 --- a/code/_onclick/hud/other_mobs.dm +++ b/code/_onclick/hud/other_mobs.dm @@ -13,9 +13,6 @@ mymob.blind.screen_loc = "1,1" mymob.blind.layer = 0 -/datum/hud/proc/ai_hud() - return - /datum/hud/proc/blob_hud(ui_style = 'icons/mob/screen1_Midnight.dmi') blobpwrdisplay = new /obj/screen() diff --git a/code/_onclick/hud/screen_objects.dm b/code/_onclick/hud/screen_objects.dm index 7af5cf698d6..5a71ff51d4b 100644 --- a/code/_onclick/hud/screen_objects.dm +++ b/code/_onclick/hud/screen_objects.dm @@ -478,6 +478,83 @@ usr.client.AllowTargetRadio() gun_click_time = world.time + if("AI Core") + if(isAI(usr)) + var/mob/living/silicon/ai/AI = usr + AI.view_core() + + if("Show Camera List") + if(isAI(usr)) + var/mob/living/silicon/ai/AI = usr + var/camera = input(AI) in AI.get_camera_list() + AI.ai_camera_list(camera) + + if("Track With Camera") + if(isAI(usr)) + var/mob/living/silicon/ai/AI = usr + var/target_name = input(AI) in AI.trackable_mobs() + AI.ai_camera_track(target_name) + + if("Toggle Camera Light") + if(isAI(usr)) + var/mob/living/silicon/ai/AI = usr + AI.toggle_camera_light() + + if("Crew Monitoring") + if(isAI(usr)) + var/mob/living/silicon/ai/AI = usr + AI.nano_crew_monitor() + + if("Show Crew Manifest") + if(isAI(usr)) + var/mob/living/silicon/ai/AI = usr + AI.ai_roster() + + if("Show Alerts") + if(isAI(usr)) + var/mob/living/silicon/ai/AI = usr + AI.subsystem_alarm_monitor() + + if("Announcement") + if(isAI(usr)) + var/mob/living/silicon/ai/AI = usr + AI.ai_announcement() + + if("Call Emergency Shuttle") + if(isAI(usr)) + var/mob/living/silicon/ai/AI = usr + AI.ai_call_shuttle() + + if("State Laws") + if(isAI(usr)) + var/mob/living/silicon/ai/AI = usr + AI.show_laws_verb() + + if("PDA - Send Message") + if(isAI(usr)) + var/mob/living/silicon/ai/AI = usr + AI.aiPDA.cmd_send_pdamesg(usr) + + if("PDA - Show Message Log") + if(isAI(usr)) + var/mob/living/silicon/ai/AI = usr + AI.aiPDA.cmd_show_message_log(usr) + + if("Take Image") + if(isAI(usr)) + var/mob/living/silicon/ai/AI = usr + AI.aiCamera.toggle_camera_mode() + + if("View Images") + if(isAI(usr)) + var/mob/living/silicon/ai/AI = usr + AI.aiCamera.viewpictures() + + if("Set Sensor Augmentation") + if(isAI(usr)) + var/mob/living/silicon/ai/AI = usr + AI.sensor_mode() + else return 0 return 1 diff --git a/code/modules/mob/living/silicon/ai/nano.dm b/code/modules/mob/living/silicon/ai/nano.dm new file mode 100644 index 00000000000..9e10cd3a7c9 --- /dev/null +++ b/code/modules/mob/living/silicon/ai/nano.dm @@ -0,0 +1,8 @@ +var/obj/nano_module/crew_monitor/crew_monitor + +/mob/living/silicon/ai/proc/nano_crew_monitor() + set category = "AI Commands" + set name = "Crew Monitor" + if (!crew_monitor) + init_subsystems() + crew_monitor.ui_interact(usr) diff --git a/icons/mob/screen_ai.dmi b/icons/mob/screen_ai.dmi new file mode 100644 index 0000000000000000000000000000000000000000..ddc08ed4395bfdc4b3ee32183d2604f30649dc0b GIT binary patch literal 5404 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