diff --git a/code/modules/rogueminer_vr/controller.dm b/code/modules/rogueminer_vr/controller.dm index 56bb920043..16352a4d14 100644 --- a/code/modules/rogueminer_vr/controller.dm +++ b/code/modules/rogueminer_vr/controller.dm @@ -32,7 +32,10 @@ var/datum/controller/rogue/rm_controller = new() var/diffstep = 1 //The current mining zone that the shuttle goes to and whatnot - var/area/current + var/datum/rogue/zonemaster/current = null + + // The world.time at which the scanner was last run (for cooldown) + var/last_scan = 0 var/debugging = 0 diff --git a/code/modules/rogueminer_vr/zone_console.dm b/code/modules/rogueminer_vr/zone_console.dm index cb8d62fb56..42a9371057 100644 --- a/code/modules/rogueminer_vr/zone_console.dm +++ b/code/modules/rogueminer_vr/zone_console.dm @@ -13,10 +13,76 @@ idle_power_usage = 250 active_power_usage = 500 circuit = /obj/item/weapon/circuitboard/roguezones - var/datum/nano_module/rogueconsole/nano_rc -/datum/nano_module/rogueconsole -//You should put actual code here for the nanoui thing. +/obj/machinery/computer/roguezones/attack_ai(mob/user as mob) + return attack_hand(user) + +/obj/machinery/computer/roguezones/attack_hand(mob/user as mob) + add_fingerprint(user) + if(stat & (BROKEN|NOPOWER)) + return + user.set_machine(src) + ui_interact(user) + +/obj/machinery/computer/roguezones/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1) + user.set_machine(src) + + var/chargePercent = max(100, (world.time - rm_controller.last_scan) / (10 MINUTES) * 100) + + var/list/data = list() + data["timeout_percent"] = chargePercent + data["diffstep"] = rm_controller.diffstep + data["difficulty"] = rm_controller.diffstep_strs[rm_controller.diffstep] + data["occupied"] = rm_controller.current == null ? 0 : rm_controller.current.is_occupied() + + var/obj/machinery/computer/shuttle_control/belter/belter = locate() + if(belter.z == 5) + data["shuttle_location"] = "outpost" + data["shuttle_at_station"] = 1 + else if(belter.z == 2) + data["shuttle_location"] = "transit" + data["shuttle_at_station"] = 0 + else if(belter.z == 7) + data["shuttle_location"] = "belt" + data["shuttle_at_station"] = 0 + + // Check this stuff + if(data["shuttle_at_station"] == 1 && data["occupied"] == 0 && chargePercent >= 100) + data["scan_ready"] = 1 + else + data["scan_ready"] = 0 + + ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open) + if (!ui) + ui = new(user, src, ui_key, "zone_console.tmpl", src.name, 400, 450) + ui.set_initial_data(data) + ui.open() + ui.set_auto_update(5) + +/obj/machinery/computer/roguezones/Topic(href, href_list) + if(..()) + return 1 + usr.set_machine(src) + if (href_list["action"]) + switch(href_list["action"]) + if ("scan_for_new") + scan_for_new_zone() + if ("point_at_old") + point_at_old_zone() + + src.add_fingerprint(usr) + nanomanager.update_uis(src) + +/obj/machinery/computer/roguezones/proc/scan_for_new_zone() + // TODO - Actually do something + return + +/obj/machinery/computer/roguezones/proc/point_at_old_zone() + // TODO - Actually do something + return + /obj/item/weapon/circuitboard/roguezones -//You should probably actually define this too. \ No newline at end of file + name = T_BOARD("asteroid belt scanning computer") + build_path = /obj/machinery/computer/roguezones + origin_tech = list(TECH_DATA = 3, TECH_BLUESPACE = 1) diff --git a/nano/templates/zone_console.tmpl b/nano/templates/zone_console.tmpl new file mode 100644 index 0000000000..88e278a2e7 --- /dev/null +++ b/nano/templates/zone_console.tmpl @@ -0,0 +1,48 @@ +