mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2025-12-28 02:21:53 +00:00
* [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>
59 lines
2.3 KiB
Plaintext
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
|