Files
Bubberstation/code/controllers/subsystem/library.dm
Zonespace 2a3d60a2a6 Mirror of tgstation/tgstation#66726 (#13383)
* [MDB IGNORE] You can have your cake and eat it too. Remake of #66406 (Splitting up areas.dmi + code related stuff) (#66726)

Areas.dmi right now houses all of our mapped turfs icons (which is roughly 400 icons). Not an issue, but it's incredibly large and clunky to navigate right now. This isn't an issue for the average coder and/or player code diving, but it is for mappers wanting to add new turfs. Currently, the file has some organization, but its still an overall mess. This PR aims to slice the behemoth with multiple .dmi files corresponding to specific areas.

I also plan to repath /area/* -> /area/station/* for station turf only. This is to clean it up, as most other turfs follow this format (that being /area/turf_zone/*).

I'm also writing an update paths file as I go along.

* fixbatch 1

* fug

Co-authored-by: Jolly <70232195+Jolly-66@users.noreply.github.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
2022-05-07 22:41:23 +01:00

59 lines
2.3 KiB
Plaintext

/// Manages library data, loading bookselves, etc
SUBSYSTEM_DEF(library)
name = "Library Loading"
flags = SS_NO_FIRE
/// List of bookselves to prefill with books
var/list/shelves_to_load = list()
/// List of book datums that we consider to be "in" any one area.
var/list/books_by_area = list()
/// List of acceptable search categories for book consoles
var/list/search_categories = list("Any", "Fiction", "Non-Fiction", "Adult", "Reference", "Religion")
/// List of acceptable categories for a book to be
var/list/upload_categories = list("Fiction", "Non-Fiction", "Adult", "Reference", "Religion")
/// List of poster typepaths we're ok with being printable
var/list/printable_posters = list()
/// List of areas that count as "a library", modified by map config
var/list/library_areas = list()
/datum/controller/subsystem/library/Initialize()
. = ..()
prepare_official_posters()
prepare_library_areas()
load_shelves()
/datum/controller/subsystem/library/proc/load_shelves()
for(var/obj/structure/bookcase/case_to_load as anything in shelves_to_load)
if(!case_to_load)
stack_trace("A null bookcase somehow ended up in SSlibrary's shelves_to_load list. Did something harddel?")
continue
case_to_load.load_shelf()
shelves_to_load = null
/// Returns a list of copied book datums that we consider to be "in" the passed in area at roundstart
/datum/controller/subsystem/library/proc/get_area_books(area/book_parent)
var/list/areas = list(book_parent.type)
// If we have an area that's in the global libraries list, we want all the others too
if(length(areas & library_areas))
areas |= library_areas
var/list/books = list()
for(var/area_type in areas)
for(var/datum/book_info/info in books_by_area[area_type])
books += info.return_copy()
return books
/datum/controller/subsystem/library/proc/prepare_official_posters()
printable_posters = list()
for(var/obj/structure/sign/poster/official/poster_type as anything in subtypesof(/obj/structure/sign/poster/official))
printable_posters[initial(poster_type.name)] = poster_type
/datum/controller/subsystem/library/proc/prepare_library_areas()
library_areas = typesof(/area/station/service/library) - /area/station/service/library/abandoned
var/list/additional_areas = SSmapping.config.library_areas
if(additional_areas)
library_areas += additional_areas