Add record programs, keeps old consoles to avoid converting main maps. (#7225)

Add record printing (fixes #6042)
This commit is contained in:
Karolis
2019-12-23 09:46:15 +02:00
committed by Erki
parent c586d6a98c
commit 4e56f6e66e
21 changed files with 734 additions and 161 deletions
+39 -4
View File
@@ -5,6 +5,7 @@
var/cmp_field = "id"
var/list/excluded_fields
var/list/excluded_print_fields
/datum/record/New()
..()
@@ -12,6 +13,10 @@
excluded_fields = list()
for(var/f in tmp_ex)
excluded_fields[f] = f
tmp_ex = excluded_print_fields
excluded_print_fields = list()
for(var/f in tmp_ex)
excluded_print_fields[f] = f
/datum/record/proc/Copy(var/datum/copied)
if(!copied)
@@ -60,10 +65,37 @@
else if(!to_update)
record[variable] = src.vars[variable]
/datum/record/proc/Printify(var/list/excluded = list()) // Mostyl to support old things or to use with serialization
. = ""
var/tmp_ex = excluded
excluded = list()
for(var/e in tmp_ex)
excluded[e] = e
var/exclusions = (SSrecords.excluded_fields | src.excluded_fields | excluded | src.excluded_print_fields)
var/extendedVars = list() // To put last
for(var/variable in src.vars)
if(!exclusions[variable])
if(istype(src.vars[variable], /datum/record))
extendedVars[variable] = src.vars[variable]
// . += "<h3>[variable]</h3>"
// . += src.vars[variable].Printify()
else if(istype(src.vars[variable], /list))
. += "<b>[get_field_name(variable)]:</b><br>"
. += jointext(src.vars[variable], "<br>")
else if(istext(src.vars[variable]) || isnum(src.vars[variable]))
. += "<b>[get_field_name(variable)]:</b> [src.vars[variable]]<br>"
for(var/variable in extendedVars)
. += "<center><h3>[get_field_name(variable)]</h3></center>"
. += src.vars[variable].Printify()
/datum/record/proc/get_field_name(var/field)
. = SSrecords.localized_fields[src.type][field]
if(!.)
return capitalize(replacetext(field, "_", " "))
// Record for storing general data, data tree top level datum
/datum/record/general
var/datum/record/medical/medical
var/datum/record/security/security
var/name = "New Record"
var/real_rank = "Unassigned"
var/rank = "Unassigned"
@@ -80,9 +112,12 @@
var/list/ccia_actions = list()
var/icon/photo_front
var/icon/photo_side
var/list/advanced_fields = list("species", "citizenship", "faction", "religion", "ccia_record", "ccia_actions")
var/datum/record/medical/medical
var/datum/record/security/security
var/list/advanced_fields = list("species", "citizenship", "employer", "religion", "ccia_record", "ccia_actions")
cmp_field = "name"
excluded_fields = list("photo_front", "photo_side", "advanced_fields")
excluded_fields = list("photo_front", "photo_side", "advanced_fields", "real_rank")
excluded_print_fields = list("ccia_actions")
/datum/record/general/New(var/mob/living/carbon/human/H, var/nid)
..()