Files
Aurora.3/code/datums/helper_datums/synthsprites.dm
2023-08-31 03:37:55 +00:00

74 lines
2.4 KiB
Plaintext

/*
Just some quick documentation about how this works
Synthckey is the players ckey which is represented under the synths name in the json, this is required to have
synthicon is just the sprites name in the dmi
aichassisicon is the ai chassis icon sprite name
aiholoicon is the ai hologram icon sprite name
paiicon is the pai icon sprite name
*/
/datum/custom_synth
var/synthname = ""
var/synthckey = ""
var/synthicon = "robot"
var/aichassisicon = ""
var/aiholoicon = ""
var/paiicon = ""
/proc/loadsynths_from_json()
var/list/customsynthsprites = list()
if(!(rustg_file_exists("config/customsynths.json") == "true"))
log_config("The file config/customsynths.json was not found, custom synth config will not be loaded.")
return
try
customsynthsprites = json_decode(return_file_text("config/customsynths.json"))
catch(var/exception/ej)
LOG_DEBUG("Error: Warning: Could not load custom synth config, as customsynths.json is missing - [ej]")
return
robot_custom_icons = list()
customsynthsprites = customsynthsprites["synths"]
for (var/synthsprite in customsynthsprites)
var/datum/custom_synth/synth = new()
synth.synthname = synthsprite
synth.synthckey = customsynthsprites[synthsprite]["ckey"]
synth.synthicon = customsynthsprites[synthsprite]["synthicon"]
synth.aichassisicon = customsynthsprites[synthsprite]["aichassisicon"]
synth.aiholoicon = customsynthsprites[synthsprite]["aiholoicon"]
synth.paiicon = customsynthsprites[synthsprite]["paiicon"]
robot_custom_icons[synthsprite] = synth
/proc/loadsynths_from_sql()
if(!config.sql_enabled)
LOG_DEBUG("Synthsprites: SQL Disabled - Falling back to JSON")
loadsynths_from_json()
return
if(!establish_db_connection(dbcon))
LOG_DEBUG("Synthsprites: SQL ERROR - Failed to connect. - Falling back to JSON")
loadsynths_from_json()
return
var/DBQuery/customsynthsprites = dbcon.NewQuery("SELECT synthname, synthckey, synthicon, aichassisicon, aiholoicon, paiicon FROM ss13_customsynths ORDER BY synthckey ASC")
customsynthsprites.Execute()
while(customsynthsprites.NextRow())
CHECK_TICK
var/datum/custom_synth/synth = new()
synth.synthname = customsynthsprites.item[1]
synth.synthckey = customsynthsprites.item[2]
synth.synthicon = customsynthsprites.item[3]
synth.aichassisicon = customsynthsprites.item[4]
synth.aiholoicon = customsynthsprites.item[5]
synth.paiicon = customsynthsprites.item[6]
robot_custom_icons[synth.synthname] = synth