mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-01-14 03:12:30 +00:00
Refactored deletion observables to use the COMSIG_QDELETING signal instead, removed the observable.
82 lines
2.9 KiB
Plaintext
82 lines
2.9 KiB
Plaintext
/datum/build_mode/edit
|
|
name = "Edit"
|
|
icon_state = "buildmode3"
|
|
var/var_to_edit = "name"
|
|
var/value_to_set = "derp"
|
|
|
|
/datum/build_mode/edit/Destroy()
|
|
ClearValue()
|
|
. = ..()
|
|
|
|
/datum/build_mode/edit/Help()
|
|
to_chat(user, SPAN_NOTICE("***********************************************************"))
|
|
to_chat(user, SPAN_NOTICE("Right Click on Build Mode Button = Select var & value"))
|
|
to_chat(user, SPAN_NOTICE("Left Click = Sets the var's value"))
|
|
to_chat(user, SPAN_NOTICE("Right Click = Reset the var's value"))
|
|
to_chat(user, SPAN_NOTICE("***********************************************************"))
|
|
|
|
/datum/build_mode/edit/Configurate()
|
|
var/var_name = input("Enter variable name:", "Name", var_to_edit) as text|null
|
|
if(!var_name)
|
|
return
|
|
|
|
var/thetype = input("Select variable type:", "Type") as null|anything in list("text","number","mob-reference","obj-reference","turf-reference")
|
|
if(!thetype) return
|
|
|
|
var/new_value
|
|
switch(thetype)
|
|
if("text")
|
|
new_value = input(usr,"Enter variable value:" ,"Value", value_to_set) as text|null
|
|
if("number")
|
|
new_value = input(usr,"Enter variable value:" ,"Value", value_to_set) as num|null
|
|
if("mob-reference")
|
|
new_value = input(usr,"Enter variable value:" ,"Value", value_to_set) as null|mob in GLOB.mob_list
|
|
if("obj-reference")
|
|
new_value = input(usr,"Enter variable value:" ,"Value", value_to_set) as null|obj in world
|
|
if("turf-reference")
|
|
new_value = input(usr,"Enter variable value:" ,"Value", value_to_set) as null|turf in world
|
|
|
|
if(var_name && new_value)
|
|
var_to_edit = var_name
|
|
SetValue(new_value)
|
|
|
|
/datum/build_mode/edit/OnClick(var/atom/A, var/list/parameters)
|
|
if(var_to_edit in VVlocked)
|
|
if(!check_rights(R_DEBUG)) return
|
|
if(var_to_edit in VVckey_edit)
|
|
if(!check_rights(R_SPAWN|R_DEBUG)) return
|
|
if(var_to_edit in VVicon_edit_lock)
|
|
if(!check_rights(R_FUN|R_DEBUG)) return
|
|
if(!(var_to_edit in A.vars))
|
|
to_chat(user, SPAN_WARNING("\The [A] does not have a var '[var_to_edit]'"))
|
|
return
|
|
|
|
var/old_value = A.vars[var_to_edit]
|
|
var/new_value
|
|
if(parameters["left"])
|
|
new_value = value_to_set
|
|
if(parameters["right"])
|
|
new_value = initial(A.vars[var_to_edit])
|
|
|
|
if(old_value == new_value)
|
|
return
|
|
A.vars[var_to_edit] = new_value
|
|
to_chat(user, SPAN_NOTICE("Changed the value of [var_to_edit] from '[old_value]' to '[new_value]'."))
|
|
Log("[log_info_line(A)] - [var_to_edit] - [old_value] -> [new_value]")
|
|
|
|
/datum/build_mode/edit/proc/SetValue(var/new_value)
|
|
if(value_to_set == new_value)
|
|
return
|
|
ClearValue()
|
|
value_to_set = new_value
|
|
RegisterSignal(value_to_set, COMSIG_QDELETING, /datum/build_mode/edit/proc/ClearValue)
|
|
|
|
/datum/build_mode/edit/proc/ClearValue(var/feedback)
|
|
if(!istype(value_to_set, /datum))
|
|
return
|
|
|
|
UnregisterSignal(value_to_set, COMSIG_QDELETING)
|
|
value_to_set = initial(value_to_set)
|
|
if(feedback)
|
|
Warn("The selected reference value was deleted. Default value restored.")
|