diff --git a/code/modules/modular_computers/NTNet/NTNet.dm b/code/modules/modular_computers/NTNet/NTNet.dm index dce270abba8..39f0400c47f 100644 --- a/code/modules/modular_computers/NTNet/NTNet.dm +++ b/code/modules/modular_computers/NTNet/NTNet.dm @@ -38,7 +38,7 @@ var/global/datum/ntnet/ntnet_global = new() // Simplified logging: Adds a log. log_string is mandatory parameter, source is optional. /datum/ntnet/proc/add_log(var/log_string, var/obj/item/weapon/computer_hardware/network_card/source = null) - var/log_text = "[stationtime2text()] - " + var/log_text = "[worldtime2text()] - " if(source) log_text += "[source.get_network_tag()] - " else @@ -133,7 +133,7 @@ var/global/datum/ntnet/ntnet_global = new() if(!lognumber) return 0 // Trim the value if necessary - lognumber = between(MIN_NTNET_LOGS, lognumber, MAX_NTNET_LOGS) + lognumber = max(MIN_NTNET_LOGS, min(lognumber, MAX_NTNET_LOGS)) setting_maxlogcount = lognumber add_log("Configuration Updated. Now keeping [setting_maxlogcount] logs in system memory.") diff --git a/code/modules/modular_computers/NTNet/NTNet_relay.dm b/code/modules/modular_computers/NTNet/NTNet_relay.dm index 7808af0cbe6..de40b427476 100644 --- a/code/modules/modular_computers/NTNet/NTNet_relay.dm +++ b/code/modules/modular_computers/NTNet/NTNet_relay.dm @@ -5,6 +5,7 @@ use_power = 2 active_power_usage = 20000 //20kW, apropriate for machine that keeps massive cross-Zlevel wireless network operational. idle_power_usage = 100 + icon = 'icons/obj/machines/telecomms.dmi' icon_state = "bus" anchored = 1 density = 1 @@ -20,7 +21,7 @@ // TODO: Implement more logic here. For now it's only a placeholder. -/obj/machinery/ntnet_relay/proc/is_operational() +/obj/machinery/ntnet_relay/is_operational() if(stat & (BROKEN | NOPOWER | EMPED)) return 0 if(dos_failure) @@ -56,23 +57,55 @@ ntnet_global.add_log("Quantum relay switched from overload recovery mode to normal operation mode.") ..() -/obj/machinery/ntnet_relay/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1, var/datum/topic_state/state = default_state) +/obj/machinery/ntnet_relay/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = 1, datum/tgui/master_ui = null, datum/ui_state/state = default_state) + + ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open) + + if(!ui) + ui = new(user, src, ui_key, "nt_relay", name, 300, 150, master_ui, state) + ui.open() + + +/obj/machinery/ntnet_relay/ui_data(mob/user) var/list/data = list() data["enabled"] = enabled data["dos_capacity"] = dos_capacity data["dos_overload"] = dos_overload data["dos_crashed"] = dos_failure + return data - ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open) + +/obj/machinery/ntnet_relay/ui_act(action, params) + if(..()) + return + switch(action) + if("restart") + dos_overload = 0 + dos_failure = 0 + update_icon() + ntnet_global.add_log("Quantum relay manually restarted from overload recovery mode to normal operation mode.") + if("toggle") + enabled = !enabled + ntnet_global.add_log("Quantum relay manually [enabled ? "enabled" : "disabled"].") + update_icon() + + + +/* + + ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open) if (!ui) ui = new(user, src, ui_key, "ntnet_relay.tmpl", "NTNet Quantum Relay", 500, 300, state = state) ui.set_initial_data(data) ui.open() ui.set_auto_update(1) +*/ + /obj/machinery/ntnet_relay/attack_hand(var/mob/living/user) ui_interact(user) +/* /obj/machinery/ntnet_relay/Topic(href, href_list) if(..()) return 1 @@ -85,13 +118,13 @@ enabled = !enabled ntnet_global.add_log("Quantum relay manually [enabled ? "enabled" : "disabled"].") update_icon() - +*/ /obj/machinery/ntnet_relay/New() uid = gl_uid gl_uid++ component_parts = list() component_parts += new /obj/item/stack/cable_coil(src,15) - component_parts += new /obj/item/weapon/circuitboard/ntnet_relay(src) +// component_parts += new /obj/item/weapon/circuitboard/ntnet_relay(src) if(ntnet_global) ntnet_global.relays.Add(src) @@ -104,9 +137,11 @@ ntnet_global.relays.Remove(src) ntnet_global.add_log("Quantum relay connection severed. Current amount of linked relays: [NTNet.relays.len]") NTNet = null +/* for(var/datum/computer_file/program/ntnet_dos/D in dos_sources) D.target = null D.error = "Connection to quantum relay severed" +*/ ..() /obj/machinery/ntnet_relay/attackby(var/obj/item/weapon/W as obj, var/mob/user as mob) @@ -124,7 +159,7 @@ for(var/atom/movable/A in component_parts) A.forceMove(src.loc) - new/obj/machinery/constructable_frame/machine_frame(src.loc) +// new/obj/machinery/constructable_frame/machine_frame(src.loc) qdel(src) return ..() \ No newline at end of file diff --git a/code/modules/modular_computers/computers/item/modular_computer.dm b/code/modules/modular_computers/computers/item/modular_computer.dm index 436b9870b77..54e7e7e5b2c 100644 --- a/code/modules/modular_computers/computers/item/modular_computer.dm +++ b/code/modules/modular_computers/computers/item/modular_computer.dm @@ -7,7 +7,7 @@ var/enabled = 0 // Whether the computer is turned on. var/screen_on = 1 // Whether the computer is active/opened/it's screen is on. - var/datum/computer_file/program/active_program = null // A currently active program running on the computer. + var/datum/computer_file/program/active_program = new /datum/computer_file/program/computerconfig // A currently active program running on the computer. var/hardware_flag = 0 // A flag that describes this device type var/last_power_usage = 0 var/last_battery_percent = 0 // Used for deciding if battery percentage has chandged @@ -100,7 +100,7 @@ card_slot.stored_card.forceMove(get_turf(src)) card_slot.stored_card = null - update_uis() +// update_uis() user << "You remove the card from \the [src]" /obj/item/modular_computer/proc/proc_eject_usb(mob/user) @@ -112,7 +112,7 @@ return uninstall_component(user, portable_drive) - update_uis() +// update_uis() /obj/item/modular_computer/attack_ghost(mob/dead/observer/user) if(enabled) @@ -139,13 +139,15 @@ user << "It is damaged." /obj/item/modular_computer/New() - processing_objects.Add(src) + machines += src + START_PROCESSING(SSmachine, src) update_icon() ..() /obj/item/modular_computer/Destroy() kill_program(1) - processing_objects.Remove(src) + machines.Remove(src) + STOP_PROCESSING(SSmachine, src) for(var/obj/item/weapon/computer_hardware/CH in src.get_all_components()) uninstall_component(null, CH) qdel(CH) @@ -169,15 +171,15 @@ return 0 // Operates NanoUI -/obj/item/modular_computer/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = 1, datum/tgui/master_ui = null, datum/ui_state/state = default_state) - if(!screen_on || !enabled) - if(ui) - ui.close() - return 0 - if((!battery_module || !battery_module.battery.charge) && !check_power_override()) - if(ui) - ui.close() - return 0 +/obj/item/modular_computer/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = 1, datum/tgui/master_ui = null, datum/ui_state/state = contained_state) +// if(!screen_on || !enabled) +// if(ui) +// ui.close() +// return 0 +// if((!battery_module || !battery_module.battery.charge) && !check_power_override()) +// if(ui) +// ui.close() +// return 0 /* // If we have an active program switch to it now. if(active_program) @@ -190,28 +192,39 @@ // This screen simply lists available programs and user may select them. if(!hard_drive || !hard_drive.stored_files || !hard_drive.stored_files.len) visible_message("\The [src] beeps three times, it's screen displaying \"DISK ERROR\" warning.") - return // No HDD, No HDD files list or no stored files. Something is very broken. + // return // No HDD, No HDD files list or no stored files. Something is very broken. + + +// data["programs"] = programs + ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open) + if (!ui) +// ui = new(user, src, ui_key, "laptop_mainscreen", "NTOS Main Menu", 400, 500) + ui = new(user, src, ui_key, "computer_main", "Main menu", 475, 340, master_ui, state) +// ui.set_initial_data(data) + ui.open() + ui.set_autoupdate(state = 1) + + +/obj/item/modular_computer/ui_data(mob/user) + var/list/data = list() + data["active_program_template"] = active_program + + return data +/* var/list/data = get_header_data() var/list/programs = list() for(var/datum/computer_file/program/P in hard_drive.stored_files) var/list/program = list() + program["name"] = P.filename program["desc"] = P.filedesc if(P in idle_threads) program["running"] = 1 programs.Add(list(program)) +*/ - data["programs"] = programs - ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open) - if (!ui) -// ui = new(user, src, ui_key, "laptop_mainscreen", "NTOS Main Menu", 400, 500) - ui = new(user, src, ui_key, "computer_main", "Main menu", 475, 340, master_ui, state) - ui.auto_update_layout = 1 -// ui.set_initial_data(data) - ui.open() -// ui.set_auto_update(1) // On-click handling. Turns on the computer if it's off and opens the GUI. /obj/item/modular_computer/attack_self(mob/user) @@ -223,7 +236,7 @@ /obj/item/modular_computer/proc/break_apart() visible_message("\The [src] breaks apart!") var/turf/newloc = get_turf(src) - new /obj/item/stack/material/steel(newloc, round(steel_sheet_cost/2)) + new /obj/item/stack/sheet/metal(newloc, round(steel_sheet_cost/2)) for(var/obj/item/weapon/computer_hardware/H in get_all_components()) uninstall_component(null, H) H.forceMove(newloc) @@ -288,7 +301,7 @@ idle_threads.Remove(P) handle_power() // Handles all computer power interaction - check_update_ui_need() + //check_update_ui_need() // Function used by NanoUI's to obtain data for header. All relevant entries begin with "PC_" /obj/item/modular_computer/proc/get_header_data() @@ -336,7 +349,7 @@ data["PC_programheaders"] = program_headers - data["PC_stationtime"] = stationtime2text() + data["PC_stationtime"] = worldtime2text() data["PC_hasheader"] = 1 data["PC_showexitprogram"] = active_program ? 1 : 0 // Hides "Exit Program" button on mainscreen return data @@ -401,7 +414,8 @@ idle_threads.Add(active_program) active_program.program_state = PROGRAM_STATE_BACKGROUND // Should close any existing UIs - nanomanager.close_uis(active_program.NM ? active_program.NM : active_program) +// nanomanager.close_uis(active_program.NM ? active_program.NM : active_program) + active_program = null update_icon() if(user && istype(user)) @@ -418,7 +432,7 @@ return P.kill_program(1) - update_uis() +// update_uis() user << "Program [P.filename].[P.filetype] with PID [rand(100,999)] has been killed." if( href_list["PC_runprogram"] ) @@ -458,7 +472,8 @@ update_icon() return 1 if(.) - update_uis() + return +// update_uis() // Used in following function to reduce copypaste /obj/item/modular_computer/proc/power_failure(var/malfunction = 0) @@ -500,10 +515,11 @@ if(card_slot.stored_card) user << "You try to insert \the [I] into \the [src], but it's ID card slot is occupied." return - user.drop_from_inventory(I) + if(!user.drop_item(I)) + return card_slot.stored_card = I I.forceMove(src) - update_uis() +// update_uis() user << "You insert \the [I] into \the [src]." return if(istype(W, /obj/item/weapon/paper)) @@ -622,7 +638,8 @@ if(found) user << "You install \the [H] into \the [src]" H.holder2 = src -// user.drop_from_inventory(H) + if(!user.drop_item(H)) + return H.forceMove(src) // Uninstalls component. Found and Critical vars may be passed by parent types, if they have additional hardware. @@ -699,6 +716,8 @@ all_components.Add(processor_unit) return all_components +/* + /obj/item/modular_computer/proc/update_uis() if(active_program) //Should we update program ui or computer ui? nanomanager.update_uis(active_program) @@ -741,6 +760,9 @@ if(ui_update_needed) update_uis() +*/ + + /obj/item/modular_computer/proc/take_damage(var/amount, var/component_probability, var/damage_casing = 1, var/randomize = 1) if(randomize) // 75%-125%, rand() works with integers, apparently. diff --git a/code/modules/modular_computers/computers/item/processor.dm b/code/modules/modular_computers/computers/item/processor.dm index eca01472280..b88aa9a7a9a 100644 --- a/code/modules/modular_computers/computers/item/processor.dm +++ b/code/modules/modular_computers/computers/item/processor.dm @@ -16,8 +16,8 @@ machinery_computer.cpu = null machinery_computer = null -/obj/item/modular_computer/processor/nano_host() - return machinery_computer.nano_host() +//obj/item/modular_computer/processor/nano_host() +// return machinery_computer.nano_host() // Due to how processes work, we'd receive two process calls - one from machinery type and one from our own type. // Since we want this to be in-sync with machinery (as it's hidden type for machinery-based computers) we'll ignore @@ -81,10 +81,11 @@ return machinery_computer.powered() // This thing is not meant to be used on it's own, get topic data from our machinery owner. -/obj/item/modular_computer/processor/CanUseTopic(user, state) - if(!machinery_computer) - return 0 - return machinery_computer.CanUseTopic(user, state) +//obj/item/modular_computer/processor/canUseTopic(user, state) +// if(!machinery_computer) +// return 0 + +// return machinery_computer.canUseTopic(user, state) /obj/item/modular_computer/processor/shutdown_computer() if(!machinery_computer) diff --git a/code/modules/modular_computers/computers/machinery/console_presets.dm b/code/modules/modular_computers/computers/machinery/console_presets.dm index 6363e848789..155e121c00b 100644 --- a/code/modules/modular_computers/computers/machinery/console_presets.dm +++ b/code/modules/modular_computers/computers/machinery/console_presets.dm @@ -21,6 +21,8 @@ /obj/machinery/modular_computer/console/preset/proc/install_programs() return +/* + // ===== ENGINEERING CONSOLE ===== /obj/machinery/modular_computer/console/preset/engineering console_department = "Engineering" @@ -89,3 +91,4 @@ cpu.hard_drive.store_file(new/datum/computer_file/program/chatclient()) cpu.hard_drive.store_file(new/datum/computer_file/program/nttransfer()) cpu.hard_drive.store_file(new/datum/computer_file/program/newsbrowser()) +*/ \ No newline at end of file diff --git a/code/modules/modular_computers/computers/machinery/modular_computer.dm b/code/modules/modular_computers/computers/machinery/modular_computer.dm index 92c8fe5f2bb..72e9f056e69 100644 --- a/code/modules/modular_computers/computers/machinery/modular_computer.dm +++ b/code/modules/modular_computers/computers/machinery/modular_computer.dm @@ -34,12 +34,13 @@ var/list/global_modular_computers = list() var/obj/item/modular_computer/processor/cpu = null // CPU that handles most logic while this type only handles power and other specific things. -/obj/machinery/modular_computer/attack_ghost(var/mob/observer/ghost/user) +/obj/machinery/modular_computer/attack_ghost(mob/dead/observer/user) if(cpu) cpu.attack_ghost(user) -/obj/machinery/modular_computer/emag_act(var/remaining_charges, var/mob/user) - return cpu ? cpu.emag_act(remaining_charges, user) : NO_EMAG_ACT +/obj/machinery/modular_computer/emag_act(remaining_charges, mob/user) +// return cpu ? cpu.emag_act(remaining_charges, user) : NO_EMAG_ACT + return 1 /obj/machinery/modular_computer/update_icon() icon_state = icon_state_unpowered @@ -48,9 +49,9 @@ var/list/global_modular_computers = list() if(!cpu || !cpu.enabled) if (!(stat & NOPOWER) || battery_powered) overlays.Add(screen_icon_screensaver) - set_light(0) +// set_light(0) return - set_light(light_strength) +// set_light(light_strength) if(cpu.active_program) overlays.Add(cpu.active_program.program_icon_state ? cpu.active_program.program_icon_state : screen_icon_state_menu) else diff --git a/code/modules/modular_computers/file_system/program.dm b/code/modules/modular_computers/file_system/program.dm index 14cc1614ccb..92acae82ec1 100644 --- a/code/modules/modular_computers/file_system/program.dm +++ b/code/modules/modular_computers/file_system/program.dm @@ -29,8 +29,8 @@ computer = null . = ..() -/datum/computer_file/program/nano_host() - return computer.nano_host() +//datum/computer_file/program/nano_host() +// return computer.nano_host() /datum/computer_file/program/clone() var/datum/computer_file/program/temp = ..() @@ -79,7 +79,8 @@ access_to_check = required_access if(!access_to_check) // No required_access, allow it. return 1 - + return 1 +/* var/obj/item/weapon/card/id/I = user.GetIdCard() if(!I) if(loud) @@ -90,7 +91,7 @@ return 1 else if(loud) user << "\The [computer] flashes an \"Access Denied\" warning." - +*/ // This attempts to retrieve header data for NanoUIs. If implementing completely new device of different type than existing ones // always include the device here in this proc. This proc basically relays the request to whatever is running the program. /datum/computer_file/program/proc/get_header_data() diff --git a/code/modules/modular_computers/file_system/programs/_program.dm b/code/modules/modular_computers/file_system/programs/_program.dm index 5ebfad06eb3..0039b8f5976 100644 --- a/code/modules/modular_computers/file_system/programs/_program.dm +++ b/code/modules/modular_computers/file_system/programs/_program.dm @@ -1,3 +1,5 @@ +/* + /obj/machinery/modular_computer/initial_data() return cpu ? cpu.get_header_data() : ..() @@ -10,6 +12,8 @@ /obj/item/modular_computer/update_layout() return TRUE +*/ + /datum/nano_module/program // available_to_ai = FALSE var/datum/computer_file/program/program = null // Program-Based computer program that runs this nano module. Defaults to null. diff --git a/code/modules/modular_computers/file_system/programs/configurator.dm b/code/modules/modular_computers/file_system/programs/configurator.dm index d764c13a9d4..8e494e6c310 100644 --- a/code/modules/modular_computers/file_system/programs/configurator.dm +++ b/code/modules/modular_computers/file_system/programs/configurator.dm @@ -22,6 +22,15 @@ //obj/machinery/vr_sleeper/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = 0, datum/tgui/master_ui = null, datum/ui_state/state = default_state) /datum/computer_file/program/computerconfig/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = 0, datum/tgui/master_ui = null, datum/ui_state/state = default_state) + + ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open) + if (!ui) + ui = new(user, src, ui_key, "laptop_configuration", "NTOS Configuration Utility", 575, 700, state = state) +// ui.auto_update_layout = 1 +// ui.set_initial_data(data) + ui.open() + +/datum/computer_file/program/computerconfig/ui_data(mob/user) if(program) movable = program.computer if(!istype(movable)) @@ -57,9 +66,4 @@ ))) data["hardware"] = all_entries - ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open) - if (!ui) - ui = new(user, src, ui_key, "laptop_configuration.tmpl", "NTOS Configuration Utility", 575, 700, state = state) - ui.auto_update_layout = 1 - ui.set_initial_data(data) - ui.open() \ No newline at end of file + return data \ No newline at end of file diff --git a/code/modules/modular_computers/hardware/hardware.dm b/code/modules/modular_computers/hardware/hardware.dm index 5e65c565f59..4e525cac247 100644 --- a/code/modules/modular_computers/hardware/hardware.dm +++ b/code/modules/modular_computers/hardware/hardware.dm @@ -85,5 +85,5 @@ // Damages the component. Contains necessary checks. Negative damage "heals" the component. /obj/item/weapon/computer_hardware/proc/take_damage(var/amount) damage += round(amount) // We want nice rounded numbers here. - damage = between(0, damage, max_damage) // Clamp the value. + damage = max(0, min(damage, max_damage)) // Clamp the value. diff --git a/tgstation.dme b/tgstation.dme index 3183a2c504e..e2013aacb3e 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -1519,6 +1519,7 @@ #include "code\modules\modular_computers\computers\item\processor.dm" #include "code\modules\modular_computers\computers\item\tablet.dm" #include "code\modules\modular_computers\computers\item\tablet_presets.dm" +#include "code\modules\modular_computers\computers\machinery\console_presets.dm" #include "code\modules\modular_computers\computers\machinery\modular_computer.dm" #include "code\modules\modular_computers\computers\machinery\modular_console.dm" #include "code\modules\modular_computers\computers\machinery\modular_laptop.dm" diff --git a/tgui/src/interfaces/computer_main.ract b/tgui/src/interfaces/computer_main.ract index cc9605ba993..9affb5f6053 100644 --- a/tgui/src/interfaces/computer_main.ract +++ b/tgui/src/interfaces/computer_main.ract @@ -23,5 +23,6 @@ {{! Taskbar}} {{{getTaskbarContents()}}} + butt \ No newline at end of file diff --git a/tgui/src/interfaces/ntnet_relay.ract b/tgui/src/interfaces/nt_relay.ract similarity index 95% rename from tgui/src/interfaces/ntnet_relay.ract rename to tgui/src/interfaces/nt_relay.ract index 18dfc3c016a..592d235164e 100644 --- a/tgui/src/interfaces/ntnet_relay.ract +++ b/tgui/src/interfaces/nt_relay.ract @@ -1,6 +1,4 @@ - - - + {{#if data.dos_crashed}}

NETWORK BUFFERS OVERLOADED

Overload Recovery Mode