mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-22 12:41:09 +01:00
R&D machinery refactor (#18295)
* RnD machinery refactor * Small changes * Removed designs selling
This commit is contained in:
@@ -22,33 +22,26 @@
|
||||
owner = O
|
||||
max_amount = max(0, max_amt)
|
||||
|
||||
if(mat_list[MAT_METAL])
|
||||
materials[MAT_METAL] = new /datum/material/metal()
|
||||
if(mat_list[MAT_GLASS])
|
||||
materials[MAT_GLASS] = new /datum/material/glass()
|
||||
if(mat_list[MAT_SILVER])
|
||||
materials[MAT_SILVER] = new /datum/material/silver()
|
||||
if(mat_list[MAT_GOLD])
|
||||
materials[MAT_GOLD] = new /datum/material/gold()
|
||||
if(mat_list[MAT_DIAMOND])
|
||||
materials[MAT_DIAMOND] = new /datum/material/diamond()
|
||||
if(mat_list[MAT_URANIUM])
|
||||
materials[MAT_URANIUM] = new /datum/material/uranium()
|
||||
if(mat_list[MAT_PLASMA])
|
||||
materials[MAT_PLASMA] = new /datum/material/plasma()
|
||||
if(mat_list[MAT_BANANIUM])
|
||||
materials[MAT_BANANIUM] = new /datum/material/bananium()
|
||||
var/list/possible_mats = list()
|
||||
for(var/mat_type in subtypesof(/datum/material))
|
||||
var/datum/material/MT = mat_type
|
||||
possible_mats[initial(MT.id)] = mat_type
|
||||
|
||||
for(var/id in mat_list)
|
||||
if(possible_mats[id])
|
||||
var/mat_path = possible_mats[id]
|
||||
materials[id] = new mat_path()
|
||||
|
||||
/datum/material_container/Destroy()
|
||||
owner = null
|
||||
return ..()
|
||||
|
||||
//For inserting an amount of material
|
||||
/datum/material_container/proc/insert_amount(amt, material_type = null)
|
||||
/datum/material_container/proc/insert_amount(amt, id = null)
|
||||
if(amt > 0 && has_space(amt))
|
||||
var/total_amount_saved = total_amount
|
||||
if(material_type)
|
||||
var/datum/material/M = materials[material_type]
|
||||
if(id)
|
||||
var/datum/material/M = materials[id]
|
||||
if(M)
|
||||
M.amount += amt
|
||||
total_amount += amt
|
||||
@@ -120,8 +113,8 @@
|
||||
return total_amount_save - total_amount
|
||||
|
||||
|
||||
/datum/material_container/proc/use_amount_type(amt, material_type)
|
||||
var/datum/material/M = materials[material_type]
|
||||
/datum/material_container/proc/use_amount_type(amt, id)
|
||||
var/datum/material/M = materials[id]
|
||||
if(M)
|
||||
if(M.amount >= amt)
|
||||
M.amount -= amt
|
||||
@@ -129,9 +122,9 @@
|
||||
return amt
|
||||
return 0
|
||||
|
||||
/datum/material_container/proc/can_use_amount(amt, material_type, list/mats)
|
||||
if(amt && material_type)
|
||||
var/datum/material/M = materials[material_type]
|
||||
/datum/material_container/proc/can_use_amount(amt, id, list/mats)
|
||||
if(amt && id)
|
||||
var/datum/material/M = materials[id]
|
||||
if(M && M.amount >= amt)
|
||||
return TRUE
|
||||
else if(istype(mats))
|
||||
@@ -153,23 +146,23 @@
|
||||
while(sheet_amt > MAX_STACK_SIZE)
|
||||
new M.sheet_type(get_turf(owner), MAX_STACK_SIZE)
|
||||
count += MAX_STACK_SIZE
|
||||
use_amount_type(sheet_amt * MINERAL_MATERIAL_AMOUNT, M.material_type)
|
||||
use_amount_type(sheet_amt * MINERAL_MATERIAL_AMOUNT, M.id)
|
||||
sheet_amt -= MAX_STACK_SIZE
|
||||
|
||||
if(round(M.amount / MINERAL_MATERIAL_AMOUNT))
|
||||
new M.sheet_type(get_turf(owner), sheet_amt)
|
||||
count += sheet_amt
|
||||
use_amount_type(sheet_amt * MINERAL_MATERIAL_AMOUNT, M.material_type)
|
||||
use_amount_type(sheet_amt * MINERAL_MATERIAL_AMOUNT, M.id)
|
||||
return count
|
||||
return 0
|
||||
|
||||
/datum/material_container/proc/retrieve_sheets(sheet_amt, material_type)
|
||||
if(materials[material_type])
|
||||
return retrieve(sheet_amt, materials[material_type])
|
||||
/datum/material_container/proc/retrieve_sheets(sheet_amt, id)
|
||||
if(materials[id])
|
||||
return retrieve(sheet_amt, materials[id])
|
||||
return 0
|
||||
|
||||
/datum/material_container/proc/retrieve_amount(amt, material_type)
|
||||
return retrieve_sheets(amount2sheet(amt),material_type)
|
||||
/datum/material_container/proc/retrieve_amount(amt, id)
|
||||
return retrieve_sheets(amount2sheet(amt), id)
|
||||
|
||||
/datum/material_container/proc/retrieve_all()
|
||||
var/result = 0
|
||||
@@ -203,8 +196,8 @@
|
||||
return sheet_amt * MINERAL_MATERIAL_AMOUNT
|
||||
return 0
|
||||
|
||||
/datum/material_container/proc/amount(material_type)
|
||||
var/datum/material/M = materials[material_type]
|
||||
/datum/material_container/proc/amount(id)
|
||||
var/datum/material/M = materials[id]
|
||||
return M ? M.amount : 0
|
||||
|
||||
//returns the amount of material relevant to this container;
|
||||
@@ -221,45 +214,45 @@
|
||||
/datum/material
|
||||
var/name
|
||||
var/amount = 0
|
||||
var/material_type = null
|
||||
var/id = null
|
||||
var/sheet_type = null
|
||||
|
||||
/datum/material/metal
|
||||
name = "Metal"
|
||||
material_type = MAT_METAL
|
||||
id = MAT_METAL
|
||||
sheet_type = /obj/item/stack/sheet/metal
|
||||
|
||||
/datum/material/glass
|
||||
name = "Glass"
|
||||
material_type = MAT_GLASS
|
||||
id = MAT_GLASS
|
||||
sheet_type = /obj/item/stack/sheet/glass
|
||||
|
||||
/datum/material/silver
|
||||
name = "Silver"
|
||||
material_type = MAT_SILVER
|
||||
id = MAT_SILVER
|
||||
sheet_type = /obj/item/stack/sheet/mineral/silver
|
||||
|
||||
/datum/material/gold
|
||||
name = "Gold"
|
||||
material_type = MAT_GOLD
|
||||
id = MAT_GOLD
|
||||
sheet_type = /obj/item/stack/sheet/mineral/gold
|
||||
|
||||
/datum/material/diamond
|
||||
name = "Diamond"
|
||||
material_type = MAT_DIAMOND
|
||||
id = MAT_DIAMOND
|
||||
sheet_type = /obj/item/stack/sheet/mineral/diamond
|
||||
|
||||
/datum/material/uranium
|
||||
name = "Uranium"
|
||||
material_type = MAT_URANIUM
|
||||
id = MAT_URANIUM
|
||||
sheet_type = /obj/item/stack/sheet/mineral/uranium
|
||||
|
||||
/datum/material/plasma
|
||||
name = "Solid Plasma"
|
||||
material_type = MAT_PLASMA
|
||||
id = MAT_PLASMA
|
||||
sheet_type = /obj/item/stack/sheet/mineral/plasma
|
||||
|
||||
/datum/material/bananium
|
||||
name = "Bananium"
|
||||
material_type = MAT_BANANIUM
|
||||
id = MAT_BANANIUM
|
||||
sheet_type = /obj/item/stack/sheet/mineral/bananium
|
||||
|
||||
Reference in New Issue
Block a user