mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-27 23:27:34 +01:00
Adds associative list manipulation to circuits, updates a few list circuit components. (#77803)
This commit is contained in:
@@ -21,7 +21,10 @@ GLOBAL_LIST_INIT(circuit_dupe_whitelisted_types, list(
|
||||
var/variable_name = variable["name"]
|
||||
var/datum/circuit_variable/variable_datum = new /datum/circuit_variable(variable_name, variable["datatype"])
|
||||
circuit_variables[variable_name] = variable_datum
|
||||
if(variable["is_list"])
|
||||
if(variable["is_assoc_list"])
|
||||
assoc_list_variables[variable_name] = variable_datum
|
||||
variable_datum.set_value(list())
|
||||
else if(variable["is_list"])
|
||||
list_variables[variable_name] = variable_datum
|
||||
variable_datum.set_value(list())
|
||||
else
|
||||
@@ -191,10 +194,10 @@ GLOBAL_LIST_INIT(circuit_dupe_whitelisted_types, list(
|
||||
var/datum/circuit_variable/variable = circuit_variables[variable_identifier]
|
||||
new_data["name"] = variable.name
|
||||
new_data["datatype"] = variable.datatype
|
||||
if(variable_identifier in list_variables)
|
||||
if(variable_identifier in assoc_list_variables)
|
||||
new_data["is_assoc_list"] = TRUE
|
||||
else if(variable_identifier in list_variables)
|
||||
new_data["is_list"] = TRUE
|
||||
else
|
||||
new_data["is_list"] = FALSE
|
||||
variables += list(new_data)
|
||||
general_data["variables"] = variables
|
||||
|
||||
|
||||
@@ -59,6 +59,9 @@ GLOBAL_LIST_EMPTY_TYPED(integrated_circuits, /obj/item/integrated_circuit)
|
||||
/// List variables stored on this integrated circuit, with a `variable_name = value` structure
|
||||
var/list/datum/circuit_variable/list_variables = list()
|
||||
|
||||
/// Assoc list variables stored on this integrated circuit, with a `variable_name = value` structure
|
||||
var/list/datum/circuit_variable/assoc_list_variables = list()
|
||||
|
||||
/// The maximum amount of setters and getters a circuit can have
|
||||
var/max_setters_and_getters = 30
|
||||
|
||||
@@ -598,8 +601,13 @@ GLOBAL_LIST_EMPTY_TYPED(integrated_circuits, /obj/item/integrated_circuit)
|
||||
return
|
||||
if(params["is_list"])
|
||||
variable_datatype = PORT_TYPE_LIST(variable_datatype)
|
||||
else if(params["is_assoc_list"])
|
||||
variable_datatype = PORT_TYPE_ASSOC_LIST(PORT_TYPE_STRING, variable_datatype)
|
||||
var/datum/circuit_variable/variable = new /datum/circuit_variable(variable_identifier, variable_datatype)
|
||||
if(params["is_list"])
|
||||
if(params["is_assoc_list"])
|
||||
variable.set_value(list())
|
||||
assoc_list_variables[variable_identifier] = variable
|
||||
else if(params["is_list"])
|
||||
variable.set_value(list())
|
||||
list_variables[variable_identifier] = variable
|
||||
else
|
||||
|
||||
Reference in New Issue
Block a user