Files
Bubberstation/code/modules/admin/painting_manager.dm
Gandalf 6c3a287fed Upstream merge 65642 (#12446)
* Extra-large painting canvases: 36x24 and 45x27

* Update paintings.dm

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
2022-04-01 01:08:55 +01:00

99 lines
3.9 KiB
Plaintext

/datum/admins/proc/paintings_manager()
set name = "Paintings Manager"
set category = "Admin"
if(!check_rights(R_ADMIN))
return
var/datum/paintings_manager/ui = new(usr)
ui.ui_interact(usr)
/// Painting Admin Management Panel
/datum/paintings_manager
/datum/paintings_manager/ui_state(mob/user)
return GLOB.admin_state
/datum/paintings_manager/ui_close(mob/user)
qdel(src)
/datum/paintings_manager/ui_interact(mob/user, datum/tgui/ui)
ui = SStgui.try_update_ui(user, src, ui)
if(!ui)
ui = new(user, src, "PaintingAdminPanel")
ui.open()
/datum/paintings_manager/ui_assets(mob/user)
return list(
get_asset_datum(/datum/asset/simple/portraits)
)
/datum/paintings_manager/ui_data(mob/user)
. = list()
.["paintings"] = SSpersistent_paintings.painting_ui_data(filter = NONE, admin = TRUE)
/datum/paintings_manager/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state)
if(..())
return
if (!check_rights(R_ADMIN))
return
var/mob/user = usr
var/datum/painting/chosen_painting = locate(params["ref"]) in SSpersistent_paintings.paintings
if(!chosen_painting)
return
switch(action)
if("delete")
//Delete the png file
var/png = "data/paintings/images/[chosen_painting.md5].png"
fdel(png)
//Remove entry from paintings list
SSpersistent_paintings.paintings -= chosen_painting
SSpersistent_paintings.deleted_paintings_md5s |= chosen_painting.md5
SSpersistent_paintings.save_to_file() // Save now so we don't have broken variations if this round crashes
//Delete any painting instances in the current round
for(var/obj/structure/sign/painting/painting as anything in SSpersistent_paintings.painting_frames)
if(painting.current_canvas && painting.current_canvas.painting_metadata == chosen_painting)
QDEL_NULL(painting.current_canvas)
painting.update_appearance()
log_admin("[key_name(user)] has deleted a persistent painting made by [chosen_painting.creator_ckey].")
message_admins(span_notice("[key_name_admin(user)] has deleted persistent painting made by [chosen_painting.creator_ckey]."))
return TRUE
if("rename")
//Modify the metadata
var/old_title = chosen_painting.title
var/new_title = tgui_input_text(user, "New painting title?", "Painting Rename", chosen_painting.title)
if(!new_title)
return
chosen_painting.title = new_title
log_admin("[key_name(user)] has renamed a persistent painting made by [chosen_painting.creator_ckey] with id [chosen_painting.md5] from [old_title] to [chosen_painting.title].")
return TRUE
if("rename_author")
var/old_name = chosen_painting.creator_name
var/new_name = tgui_input_text(user, "New painting author name?", "Painting Rename", chosen_painting.creator_name)
if(!new_name)
return
chosen_painting.creator_name = new_name
log_admin("[key_name(user)] has renamed a persistent painting author made by [chosen_painting.creator_name] with id [chosen_painting.md5] from [old_name] to [chosen_painting.creator_name].")
return TRUE
if("dumpit")
//Modify the metadata
chosen_painting.patron_name = ""
chosen_painting.patron_ckey = ""
chosen_painting.credit_value = 0
chosen_painting.frame_type = initial(chosen_painting.frame_type)
log_admin("[key_name(user)] has reset patronage data on a persistent painting made by [chosen_painting.creator_ckey] with id [chosen_painting.md5].")
return TRUE
if("remove_tag")
if(chosen_painting.tags)
chosen_painting.tags -= params["tag"]
log_admin("[key_name(user)] has removed tag [params["tag"]] from persistent painting made by [chosen_painting.creator_ckey] with id [chosen_painting.md5].")
return TRUE
if("add_tag")
var/tag_name = tgui_input_text(user, "New tag name?", "Add Tag")
if(!tag_name)
return
if(!chosen_painting.tags)
chosen_painting.tags = list()
chosen_painting.tags |= tag_name
log_admin("[key_name(user)] has added tag [tag_name] to persistent painting made by [chosen_painting.creator_ckey] with id [chosen_painting.md5].")
return TRUE