diff --git a/code/modules/hydroponics/biogenerator.dm b/code/modules/hydroponics/biogenerator.dm
index 356d8560eb3..d0715982687 100644
--- a/code/modules/hydroponics/biogenerator.dm
+++ b/code/modules/hydroponics/biogenerator.dm
@@ -7,16 +7,18 @@
use_power = IDLE_POWER_USE
idle_power_usage = 40
circuit = /obj/item/circuitboard/machine/biogenerator
+ ui_x = 550
+ ui_y = 380
var/processing = FALSE
var/obj/item/reagent_containers/glass/beaker = null
var/points = 0
- var/menustat = "menu"
var/efficiency = 0
var/productivity = 0
var/max_items = 40
var/datum/techweb/stored_research
var/list/show_categories = list("Food", "Botany Chemicals", "Organic Materials")
- var/list/timesFiveCategories = list("Food", "Botany Chemicals")
+ /// Currently selected category in the UI
+ var/selected_cat
/obj/machinery/biogenerator/Initialize()
. = ..()
@@ -43,7 +45,6 @@
if(A == beaker)
beaker = null
update_icon()
- updateUsrDialog()
/obj/machinery/biogenerator/RefreshParts()
var/E = 0
@@ -106,7 +107,6 @@
beaker = O
to_chat(user, "You add the container to the machine.")
update_icon()
- updateUsrDialog()
else
to_chat(user, "Close the maintenance panel first.")
return
@@ -157,101 +157,51 @@
else
to_chat(user, "You cannot put this in [src.name]!")
-/obj/machinery/biogenerator/ui_interact(mob/user)
- if(machine_stat & BROKEN || panel_open)
- return
- . = ..()
- var/dat
- if(processing)
- dat += "
Biogenerator is processing! Please wait...
You do not have enough biomass to create products.
Please, put growns into reactor and activate it.
"
- menustat = "menu"
- if("complete")
- dat += "Operation complete.
"
- menustat = "menu"
- if("void")
- dat += "Error: No growns inside.
Please, put growns into reactor.
"
- menustat = "menu"
- if("nobeakerspace")
- dat += "Not enough space left in container. Unable to create product.
"
- menustat = "menu"
- if(beaker)
- var/categories = show_categories.Copy()
- for(var/V in categories)
- categories[V] = list()
- for(var/V in stored_research.researched_designs)
- var/datum/design/D = SSresearch.techweb_design_by_id(V)
- for(var/C in categories)
- if(C in D.category)
- categories[C] += D
-
- dat += "Biomass: [points] units.
"
- for(var/V in categories[cat])
- var/datum/design/D = V
- dat += "[D.name]:
Make"
- if(cat in timesFiveCategories)
- dat += "
x5"
- if(ispath(D.build_path, /obj/item/stack))
- dat += "
x10"
- dat += "([D.materials[SSmaterials.GetMaterialRef(/datum/material/biomass)]/efficiency])
"
- dat += "
"
- else
- dat += "No container inside, please insert container.
"
-
- var/datum/browser/popup = new(user, "biogen", name, 350, 520)
- popup.set_content(dat)
- popup.open()
-
/obj/machinery/biogenerator/AltClick(mob/living/user)
. = ..()
if(user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK) && can_interact(user))
detach(user)
-/obj/machinery/biogenerator/proc/activate()
- if (usr.stat != CONSCIOUS)
+/**
+ * activate: Activates biomass processing and converts all inserted grown products into biomass
+ *
+ * Arguments:
+ * * user The mob starting the biomass processing
+ */
+/obj/machinery/biogenerator/proc/activate(mob/user)
+ if(user.stat != CONSCIOUS)
return
- if (src.machine_stat != NONE) //NOPOWER etc
+ if(machine_stat != NONE)
return
if(processing)
- to_chat(usr, "