mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2026-08-26 14:47:50 +01:00
[MIRROR] fix some bad material handling (#11997)
Co-authored-by: Kashargul <144968721+Kashargul@users.noreply.github.com>
This commit is contained in:
co-authored by
Kashargul
parent
68d18cde97
commit
54087103bf
@@ -172,10 +172,10 @@
|
||||
ui.open()
|
||||
|
||||
/obj/machinery/atmospherics/binary/algae_farm/tgui_data(mob/user)
|
||||
var/data[0]
|
||||
var/list/data = list()
|
||||
data["panelOpen"] = panel_open
|
||||
|
||||
var/materials_ui[0]
|
||||
var/list/materials_ui = list()
|
||||
for(var/M in stored_material)
|
||||
materials_ui[++materials_ui.len] = list(
|
||||
"name" = M,
|
||||
|
||||
@@ -66,8 +66,6 @@
|
||||
/obj/machinery/autolathe/tgui_static_data(mob/user)
|
||||
var/list/data = ..()
|
||||
|
||||
data += rmat.mat_container.tgui_static_data(user)
|
||||
|
||||
var/list/categories = list()
|
||||
var/list/recipes = list()
|
||||
for(var/datum/category_group/autolathe/A in autolathe_recipes.categories)
|
||||
@@ -89,7 +87,9 @@
|
||||
data["recipes"] = recipes
|
||||
data["categories"] = categories
|
||||
|
||||
data += rmat.mat_container.tgui_static_data(user)
|
||||
var/list/material_data = rmat.mat_container?.tgui_static_data(user)
|
||||
if(material_data)
|
||||
data += material_data
|
||||
|
||||
return data
|
||||
|
||||
@@ -101,7 +101,10 @@
|
||||
/obj/machinery/autolathe/tgui_data(mob/user, datum/tgui/ui, datum/tgui_state/state)
|
||||
var/list/data = ..()
|
||||
data["busy"] = busy
|
||||
data["materials"] = rmat.mat_container.tgui_data(user, TRUE)
|
||||
|
||||
var/list/material_data = rmat.mat_container?.tgui_data(user, TRUE)
|
||||
if(material_data)
|
||||
data["materials"] = material_data
|
||||
data["mat_efficiency"] = mat_efficiency
|
||||
return data
|
||||
|
||||
|
||||
@@ -7,6 +7,15 @@
|
||||
return FALSE
|
||||
return TRUE
|
||||
|
||||
// Helper for anything checking if it can inject a container like a syringe.
|
||||
/atom/movable/proc/is_injectable_container()
|
||||
return is_open_container() || \
|
||||
istype(src, /obj/item/reagent_containers/food) || \
|
||||
istype(src, /obj/item/slime_extract) || \
|
||||
istype(src, /obj/item/clothing/mask/smokable/cigarette) || \
|
||||
istype(src, /obj/item/storage/fancy/cigarettes) || \
|
||||
istype(src, /obj/item/clothing/mask/chewable) // CHOMPEdit
|
||||
|
||||
/obj/can_be_injected_by(var/atom/injector)
|
||||
if(!..())
|
||||
return FALSE
|
||||
@@ -15,12 +24,3 @@
|
||||
|
||||
/mob/living/can_be_injected_by(var/atom/injector)
|
||||
return ..() && (can_inject(null, 0, BP_TORSO) || can_inject(null, 0, BP_GROIN))
|
||||
|
||||
// Helper for anything checking if it can inject a container like a syringe.
|
||||
/obj/proc/is_injectable_container()
|
||||
return is_open_container() || \
|
||||
istype(src, /obj/item/reagent_containers/food) || \
|
||||
istype(src, /obj/item/slime_extract) || \
|
||||
istype(src, /obj/item/clothing/mask/smokable/cigarette) || \
|
||||
istype(src, /obj/item/storage/fancy/cigarettes) || \
|
||||
istype(src, /obj/item/clothing/mask/chewable) // CHOMPEdit
|
||||
|
||||
@@ -254,14 +254,19 @@
|
||||
|
||||
data["designs"] = designs
|
||||
data["fabName"] = name
|
||||
data += materials.mat_container.tgui_static_data()
|
||||
|
||||
var/list/material_data = materials.mat_container?.tgui_static_data(user)
|
||||
if(material_data)
|
||||
data += material_data
|
||||
|
||||
return data
|
||||
|
||||
/obj/machinery/rnd/production/tgui_data(mob/user)
|
||||
var/list/data = list()
|
||||
|
||||
data["materials"] = materials.mat_container.tgui_data()
|
||||
var/list/material_data = materials.mat_container?.tgui_data(user)
|
||||
if(material_data)
|
||||
data["materials"] = material_data
|
||||
data["onHold"] = FALSE //materials.on_hold()
|
||||
data["busy"] = busy
|
||||
data["materialMaximum"] = materials.local_size
|
||||
|
||||
@@ -379,7 +379,7 @@
|
||||
ui.open()
|
||||
|
||||
/obj/machinery/mecha_part_fabricator_tg/tgui_static_data(mob/user)
|
||||
var/list/data = rmat.mat_container.tgui_static_data(user)
|
||||
var/list/data = ..()
|
||||
|
||||
var/list/designs = list()
|
||||
|
||||
@@ -405,12 +405,18 @@
|
||||
|
||||
data["designs"] = designs
|
||||
|
||||
var/list/material_data = rmat.mat_container?.tgui_static_data(user)
|
||||
if(material_data)
|
||||
data += material_data
|
||||
|
||||
return data
|
||||
|
||||
/obj/machinery/mecha_part_fabricator_tg/tgui_data(mob/user)
|
||||
var/list/data = list()
|
||||
|
||||
data["materials"] = rmat.mat_container.tgui_data(user)
|
||||
var/list/material_data =rmat.mat_container?.tgui_data(user)
|
||||
if(material_data)
|
||||
data["materials"] = material_data
|
||||
data["queue"] = list()
|
||||
data["processing"] = process_queue
|
||||
|
||||
|
||||
@@ -37,15 +37,15 @@ type RecipeData = {
|
||||
|
||||
type Data = {
|
||||
busy: string;
|
||||
materials: Material[];
|
||||
materials?: Material[];
|
||||
mat_efficiency: number;
|
||||
recipes: RecipeData[];
|
||||
SHEET_MATERIAL_AMOUNT: number;
|
||||
SHEET_MATERIAL_AMOUNT?: number;
|
||||
};
|
||||
|
||||
export const Autolathe = (props) => {
|
||||
const { act, data } = useBackend<Data>();
|
||||
const { SHEET_MATERIAL_AMOUNT } = data;
|
||||
const { materials = [], SHEET_MATERIAL_AMOUNT = 0 } = data;
|
||||
|
||||
return (
|
||||
<Window width={670} height={600}>
|
||||
@@ -57,7 +57,7 @@ export const Autolathe = (props) => {
|
||||
<Stack.Item>
|
||||
<Section>
|
||||
<MaterialAccessBar
|
||||
availableMaterials={data.materials}
|
||||
availableMaterials={materials}
|
||||
SHEET_MATERIAL_AMOUNT={SHEET_MATERIAL_AMOUNT}
|
||||
onEjectRequested={(mat: Material, qty: number) =>
|
||||
act('remove_mat', {
|
||||
@@ -76,6 +76,7 @@ export const Autolathe = (props) => {
|
||||
|
||||
const Designs = (props) => {
|
||||
const { act, data } = useBackend<Data>();
|
||||
const { materials = [] } = data;
|
||||
|
||||
const [selectedCategory, setSelectedCategory] = useSharedState(
|
||||
'selected_category',
|
||||
@@ -83,13 +84,13 @@ const Designs = (props) => {
|
||||
);
|
||||
const [searchText, setSearchText] = useSharedState('search_text', '');
|
||||
|
||||
const materials = useMemo(() => {
|
||||
const materials = {};
|
||||
for (const material of data.materials) {
|
||||
materials[material.name] = material.amount;
|
||||
const materialRecord = useMemo(() => {
|
||||
const materialRecord = {};
|
||||
for (const material of materials) {
|
||||
materialRecord[material.name] = material.amount;
|
||||
}
|
||||
return materials;
|
||||
}, [data.materials]);
|
||||
return materialRecord;
|
||||
}, [materials]);
|
||||
|
||||
const categories = {};
|
||||
|
||||
@@ -155,7 +156,7 @@ const Designs = (props) => {
|
||||
<Recipe
|
||||
key={recipe.ref}
|
||||
recipe={recipe}
|
||||
materials={materials}
|
||||
materials={materialRecord}
|
||||
busy={data.busy}
|
||||
/>
|
||||
))}
|
||||
|
||||
@@ -40,7 +40,7 @@ type ExosuitFabricatorData = FabricatorData &
|
||||
|
||||
export const ExosuitFabricatorTg = (props) => {
|
||||
const { act, data } = useBackend<ExosuitFabricatorData>();
|
||||
const { materials, SHEET_MATERIAL_AMOUNT } = data;
|
||||
const { materials = [], SHEET_MATERIAL_AMOUNT = 0, designs } = data;
|
||||
|
||||
const availableMaterials: MaterialMap = {};
|
||||
|
||||
@@ -56,7 +56,7 @@ export const ExosuitFabricatorTg = (props) => {
|
||||
<Stack fill vertical>
|
||||
<Stack.Item grow>
|
||||
<DesignBrowser
|
||||
designs={Object.values(data.designs)}
|
||||
designs={Object.values(designs)}
|
||||
availableMaterials={availableMaterials}
|
||||
buildRecipeElement={(design, availableMaterials) => (
|
||||
<Recipe
|
||||
@@ -82,7 +82,7 @@ export const ExosuitFabricatorTg = (props) => {
|
||||
<Stack.Item>
|
||||
<Section>
|
||||
<MaterialAccessBar
|
||||
availableMaterials={data.materials}
|
||||
availableMaterials={materials}
|
||||
SHEET_MATERIAL_AMOUNT={SHEET_MATERIAL_AMOUNT}
|
||||
onEjectRequested={(mat: Material, qty: number) =>
|
||||
act('remove_mat', {
|
||||
|
||||
@@ -77,12 +77,12 @@ export type FabricatorData = {
|
||||
/**
|
||||
* The materials available to the fabricator, via ore silo or local storage.
|
||||
*/
|
||||
materials: Material[];
|
||||
materials?: Material[];
|
||||
|
||||
/**
|
||||
* Definition of how much units 1 sheet has.
|
||||
*/
|
||||
SHEET_MATERIAL_AMOUNT: number;
|
||||
SHEET_MATERIAL_AMOUNT?: number;
|
||||
|
||||
/**
|
||||
* The name of the fabricator, as displayed on the title bar.
|
||||
|
||||
@@ -22,12 +22,19 @@ import type {
|
||||
|
||||
export const Fabricator = (props) => {
|
||||
const { act, data } = useBackend<FabricatorData>();
|
||||
const { fabName, onHold, designs, busy, SHEET_MATERIAL_AMOUNT } = data;
|
||||
const {
|
||||
fabName,
|
||||
onHold,
|
||||
designs,
|
||||
busy,
|
||||
SHEET_MATERIAL_AMOUNT = 0,
|
||||
materials = [],
|
||||
} = data;
|
||||
|
||||
// Reduce the material count array to a map of actually available materials.
|
||||
const availableMaterials: MaterialMap = {};
|
||||
|
||||
for (const material of data.materials) {
|
||||
for (const material of materials) {
|
||||
availableMaterials[material.name] = material.amount;
|
||||
}
|
||||
|
||||
@@ -52,7 +59,7 @@ export const Fabricator = (props) => {
|
||||
<Stack.Item>
|
||||
<Section>
|
||||
<MaterialAccessBar
|
||||
availableMaterials={data.materials}
|
||||
availableMaterials={materials}
|
||||
SHEET_MATERIAL_AMOUNT={SHEET_MATERIAL_AMOUNT}
|
||||
onEjectRequested={(mat: Material, qty: number) =>
|
||||
act('remove_mat', {
|
||||
|
||||
Reference in New Issue
Block a user