#define HANGAR_AREATYPE "/area/hangar"
/datum/computer/file/terminal_program/hangar_control
name = "HangarControl"
size = 16
req_access = list(access_hangar)
var/tmp/authenticated = null //Are we currently logged in?
var/datum/computer/file/user_data/account = null
var/tmp/reply_wait = -1 //How long do we wait for replies? -1 is not waiting.
var/setup_acc_filepath = "/logs/sysusr"//Where do we look for login data?
initialize()
src.authenticated = null
src.master.temp = null
if(!src.find_access_file()) //Find the account information, as it's essentially a ~digital ID card~
src.print_text("Error: Cannot locate user file. Quitting...")
src.master.unload_program(src) //Oh no, couldn't find the file.
return
if(!src.check_access(src.account.access))
src.print_text("User [src.account.registered] does not have needed access credentials.
Quitting...")
src.master.unload_program(src)
return
src.reply_wait = -1
src.authenticated = src.account.registered
var/intro_text = {"
Welcome to HangarControl!
Hangar Management System.
Commands:
(Status) to view current status.
(ResetPass) to reset a hangar door's password.
(CloseAll) to close all hangar doors.
(Toggle) to toggle a hangar door.
(Clear) to clear the screen.
(Quit) to exit HangarControl."}
src.print_text(intro_text)
input_text(text)
if(..())
return
var/list/command_list = parse_string(text)
var/command = command_list[1]
command_list -= command_list[1] //Remove the command we are now processing.
switch(lowertext(command))
if("status")
print_status()
if("clear")
src.master.temp = null
src.master.temp_add = "Workspace cleared.
"
if("closeall")
close_all()
if("toggle")
var/door_name = ckey(jointext(command_list, " "))
if(!door_name)
var/dat = "Available Hangar Doors:
"
for(var/turf/T in get_area_turfs(HANGAR_AREATYPE))
for(var/obj/machinery/r_door_control/R in T)
if(R.open)
dat+="[R.name]
"
else
dat+="[R.name]
"
src.print_text(dat)
else
for(var/turf/T in get_area_turfs(HANGAR_AREATYPE))
for(var/obj/machinery/r_door_control/R in T)
if(cmptext(door_name,R.id))
if(R.open)
src.print_text("Closing Door...")
else
src.print_text("Opening Door...")
R.open_door()
src.print_text("Done.
")
src.master.add_fingerprint(usr)
src.master.updateUsrDialog()
return
src.print_text("Invalid Hangar Door!
")
if("resetpass")
var/door_name = ckey(jointext(command_list, " "))
if(!door_name)
var/dat = "Available Hangar Doors:
"
for(var/turf/T in get_area_turfs(HANGAR_AREATYPE))
for(var/obj/machinery/r_door_control/R in T)
if(R.open)
dat+="[R.name]
"
else
dat+="[R.name]
"
src.print_text(dat)
else
for(var/turf/T in get_area_turfs(HANGAR_AREATYPE))
for(var/obj/machinery/r_door_control/R in T)
if(cmptext(door_name,R.id))
R.pass = "[R.id]-[rand(100,999)]"
src.print_text("[R.name] New Pass: [R.pass]")
src.master.add_fingerprint(usr)
src.master.updateUsrDialog()
return
src.print_text("Invalid Hangar Door!
")
if("help")
var/intro_text = {"
Welcome to HangarControl!
Hangar Management System.
Commands:
(Status) to view current status.
(ResetPass) to reset a hangar door's password.
(CloseAll) to close all hangar doors.
(Toggle) to toggle a hangar door.
(Clear) to clear the screen.
(Quit) to exit HangarControl."}
src.print_text(intro_text)
if("quit")
src.master.temp = ""
print_text("Now quitting...")
src.master.unload_program(src)
return
else
print_text("Unknown command : \"[copytext(strip_html(command), 1, 16)]\"")
src.master.add_fingerprint(usr)
src.master.updateUsrDialog()
return
proc
find_access_file() //Look for the whimsical account_data file
var/datum/computer/folder/accdir = src.holder.root
if(src.master.host_program) //Check where the OS is, preferably.
accdir = src.master.host_program.holder.root
var/datum/computer/file/user_data/target = parse_file_directory(setup_acc_filepath, accdir)
if(target && istype(target))
src.account = target
return 1
return 0
print_status()
var/dat="Status:
"
for(var/turf/T in get_area_turfs(HANGAR_AREATYPE))
for(var/obj/machinery/r_door_control/R in T)
if(R.open)
dat+="[R.name] (Open): [R.pass]
"
else
dat+="[R.name] (Closed): [R.pass]
"
src.print_text(dat)
close_all()
src.print_text("Closing All Doors...")
for(var/turf/T in get_area_turfs(HANGAR_AREATYPE))
for(var/obj/machinery/r_door_control/R in T)
if(R.open)
R.open_door()
src.print_text("Done.
")
/datum/computer/file/terminal_program/hangar_research
name = "HangarHelper"
size = 16
req_access = list(access_hangar)
var/tmp/authenticated = null //Are we currently logged in?
var/datum/computer/file/user_data/account = null
var/tmp/reply_wait = -1 //How long do we wait for replies? -1 is not waiting.
var/setup_acc_filepath = "/logs/sysusr"//Where do we look for login data?
initialize()
src.authenticated = null
src.master.temp = null
if(!src.find_access_file()) //Find the account information, as it's essentially a ~digital ID card~
src.print_text("Error: Cannot locate user file. Quitting...")
src.master.unload_program(src) //Oh no, couldn't find the file.
return
if(!src.check_access(src.account.access))
src.print_text("User [src.account.registered] does not have needed access credentials.
Quitting...")
src.master.unload_program(src)
return
src.reply_wait = -1
src.authenticated = src.account.registered
src.print_research_status()
var/intro_text = {"
HangarHelper
Bringing You the Latest in Ship Technology!.
Commands:
(Status) to view current progress.
(Research) to view research topics.
(Cancel) to halt current research.
(Complete) to view completed research.
(Clear) to clear the screen.
(Quit) to exit HangarHelper"}
src.print_text(intro_text)
proc
find_access_file() //Look for the whimsical account_data file
var/datum/computer/folder/accdir = src.holder.root
if(src.master.host_program) //Check where the OS is, preferably.
accdir = src.master.host_program.holder.root
var/datum/computer/file/user_data/target = parse_file_directory(setup_acc_filepath, accdir)
if(target && istype(target))
src.account = target
return 1
return 0
print_research_status()
var/dat = "Tier [robotics_research.tier] Hangar Research
"
if(robotics_research.is_researching)
var/timeleft = robotics_research.get_research_timeleft()
var/text = robotics_research.current_research
dat += "Current Research: [text ? text : "None"]. ETA: [timeleft ? timeleft : "Completed"]."
else
dat += "Currently not researching."
src.print_text(dat)
return