Hello everyone, I've been drafting up and beginning the first code reworks of our library system. Library code has been around for.... a very very long time. The Library and Librarian as a role are very underutilized due to Librarians having very little to do, not to mention the UI and library system being pretty out of date. With this proposed refactor I'm hoping to tackle the issue of outdated code and UI. Later down the road (part 2?) I'd like to give the library more functionality with scanning in documents and possibly contributing to research or a knowledge system that would allow crew to learn things like different languages or possibly even light magic.
Proposed Changes
Library Computer
Remove the Public/Checkout computer and replace it with a single computer
Port browserUI to TGUI
Tabs for Library System
Patron Management - Place where book checkouts are managed and fines are handed out against peoples accounts who do not bring books back in time. Barcode scanner will perform most of the work for checking out books but it can all be done from this tab aswell.
Book Archive - Search player-made library books with a much more fleshed out search system. You can now see short book summaries, ratings of books, and up to three categories for books. Additionally, the flagging system has been made much more clear that it is an OOC action
Programmatic Books - All hardcoded Manuals/SOP/Religious books will be populated in here separate from the player archive.
Book Upload - Where books can be uploaded to the archive. Selected books will show up here, allows editing information about books before uploading them.
Possible Security Log screen for any actions (fines, checkouts, etc) taken during the shift
Library Computer will have a login screen
Librarian Access - All library management tools available
Public Access - Can only view player/programmatic book archive and can't order anything
Barcode Scanner
Chat Output from changing modes will be significantly cutdown to a single line
User feedback is much more clear (with sounds)
Will no longer stores information in barcode object, instead it just relays information directly to the library computer
Allowing for on-the-go library work
Will be able to Swipe ID's on the barcode to get crew member information for checking out books.
Bookbinder
Will have a TGUI menu
Will be able to print multiple books at a time
Option to choose book cover + decorations
Books
Will remain BrowserUI (this is something non-negotiable due to security issues)
Will be able to have up to 3 editable Pages
Books will open to a "cover page" with the book summary, title, and author available to read. Additionally this page will show if the book is checked out and/or a part of the stations library system.
More Book Information
Books can now have a short few sentence summary denoting what the book is written about
Books will now have a X/5 star rating which is determined by players through the library system
This is to help sort through good and shit books
More covers + cover decorations (overlays) will be available (I'm hoping to sprite a few more)
Examining books will yield extra information such as the book rating on the side as well as if the book
RFID Scanners
Goes off when player walks through it with a non-checked out book
Makes a log in the librarians computer
Special Punishments for Book Thiefs
Lights people on fire when emagged if they steal a book
When fully upgraded it stuns the crew member and launches the crew member back into the library
Has an R&D circuit board
Bookcases
Hope to resprite these
Make them rotatable
Administration Tools
Will remain browserUI, however it will have a significantly improved interface
Players now get a yes/no popup before flagging books warning them that they are performing an OOC action
Players now have options to choose from for flagging a book so that staff have an idea of what they're looking for
Viewing flagged books is much easier and the raw HTML is not dumped in a window
Database Changes
Adds a few columns to the library table
Rating *#/5 integer rating of book
RatingNumber *integer number of rating reviews left by patrons
Summary *string
Modifies how data is stored on a few columns
flagged column now stores a JSON list of player flags based on report IDs
content column now stores a JSON list of book pages
Thoughts, questions, concerns?