/* The Big Bad NT Operating System */ /datum/file/program/ntos name = "Nanotrasen Operating System" extension = "prog" active_state = "ntos" var/obj/item/part/computer/storage/current // the drive being viewed, null for desktop/computer var/fileop = "runfile" /* Generate a basic list of files in the selected scope */ /datum/file/program/ntos/proc/list_files() if(!computer || !current) return null return current.files /datum/file/program/ntos/proc/filegrid(var/list/filelist) var/dat = "" var/i = 0 for(var/datum/file/F in filelist) if(!F.hidden_file) i++ if(i==1) dat += "" if(i>= 6) i = 0 dat += "" continue dat += {" "} dat += "

[F.name]
" return dat // // I am separating this from filegrid so that I don't have to // make metadata peripheral files // /datum/file/program/ntos/proc/desktop(var/peripheralop = "viewperipheral") var/dat = "" var/i = 0 var/list/peripherals = list(computer.hdd,computer.floppy,computer.cardslot) for(var/obj/item/part/computer/C in peripherals) if(!istype(C)) continue i++ if(i==1) dat += "" if(i>= 6) i = 0 dat += "" continue dat += {" "} dat += "
\icon[C]
[C.name]
" return dat /datum/file/program/ntos/proc/window(var/title,var/buttonbar,var/content) return {"
[title]
[buttonbar]
[content]
"} /datum/file/program/ntos/proc/buttonbar(var/type = 0) switch(type) if(0) // FILE OPERATIONS return {""} /datum/file/program/ntos/interact() if(!interactable()) return var/dat = {" Nanotrasen Operating System
"} dat += generate_status_bar() var/list/files = list_files() if(current) dat +=window(current.name,buttonbar(),filegrid(files)) else dat += desktop() dat += "
" usr << browse(dat, "window=\ref[computer];size=670x510") onclose(usr, "\ref[computer]") // STATUS BAR // Small 16x16 icons representing status of components, etc. // Currently only used by battery icon // TODO: Add more icons! /datum/file/program/ntos/proc/generate_status_bar() var/dat = "" // Battery level icon switch(computer.check_battery_status()) if(-1) dat += "" if(0 to 5) dat += "" if(6 to 20) dat += "" if(21 to 40) dat += "" if(41 to 60) dat += "" if(61 to 80) dat += "" if(81 to 100) dat += "" dat += "
" return dat /datum/file/program/ntos/Topic(href, list/href_list) if(!interactable() || ..(href,href_list)) return if("viewperipheral" in href_list) // open drive, show status of peripheral var/obj/item/part/computer/C = locate(href_list["viewperipheral"]) if(!istype(C) || (C.loc != src.computer)) return if(istype(C,/obj/item/part/computer/storage)) current = C interact() return // else ??? if(istype(C,/obj/item/part/computer/cardslot)) if(computer.cardslot.reader != null) computer.cardslot.remove() if(istype(C,/obj/item/part/computer/cardslot/dual)) if(computer.cardslot.writer != null) computer.cardslot.remove(computer.cardslot.writer) if(computer.cardslot.reader != null) computer.cardslot.remove(computer.cardslot.reader) interact() return // distinct from close, this is the file dialog window if("winclose" in href_list) current = null interact() return #undef MAX_ROWS #undef MAX_COLUMNS