I’ve been able to get some decent time working on FNIStash lately, and have made some really good strides. It’s nearing feature completion, as least as far as the major features I have in mind are concerned. Preliminary testing between my wonderful fiancee and myself will hopefully root out any sneaky bugs or deficiencies. Here’s what it looks like now.
When FNIStash reads the shared stash file, it registers all items it finds in a database. The new Registry table shows the status of all registered items. If the item is Stashed, then it is currently in the shared stash file. Other statuses are Inserted (inserted into an item) and Archived (existing in the database only). Another status I want to add is Lost or something along those lines, which would describe items that used to be Stashed but somehow left the stash, such as when they get traded away or put on a character.
The Registry table also serves as the drop target for moving items from the Stash to the Archive. Drag and drop an item to the table, and the item disappears from the stash and its status becomes Archived. Once archived, the appropriate row text in the table changes color to black, and the row’s icon becomes draggable to allow the user to drag the item from the Archive to insert it back into the stash. For convenience, the yellow arrow button will automatically archive all items in the stash.
The UI mechanics here are quite close to what I imagined when I started this project. I’m really happy that threepenny-gui, the Haskell GUI library I’ve been helping to test and sometimes develop, has been able to keep up.
The Filter field at the top of the UI allows the user to find items by key phrase(s). Stashed items not matching the phrase become faded, and any row of the Registry table whose item doesn’t match the phrase is also hidden.
Capturing the Grail
One of the key achievements in any hack and slash game is achievement of the grail – finding at least one of each item in the entire game. Normally, the limited stash capacity of these games makes searching for the grail really inconvenient, sometimes prohibitively. FNIStash helps grail searchers by automatically keeping track of how much of the grail has been registered in the database, as well as which items still need to be found and how rare they are. I still have some work to do to properly exclude items that are in the game’s files but not actually obtainable, but the basic report format is shown below.
With a little luck, I’ll be able to start testing in earnest in the next few weeks! One thing I’m concerned about is how TPG and the database will hold up when the number of registered items gets into the several thousands.