Allow searching for multiple terms #1853
Open
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This series of commits allow the search bar to handle multiple search terms. When the user searches with the string,
bleed|frenzy, nodes that contain text with eitherbleedorfrenzywill be highlighted. In other words, this change allows searching the union of each term. This is a change from the previous functionality of PoB searching only for the entire search string, including any whitespace. For comparison, the game allows whitespace to separate search terms and performs a search of the intersection of each term.There are three big changes that should be considered before accepting this pull request.
1. The search cache has been changed from a table of booleans to a table of bitmaps (integers)
I don't know how this will work with the current serialization method or how the program will handle loading an old table of booleans and treating it like it's a new table of bitmaps.
2. I developed this patch on Linux and could not compile and test these changesI'm mostly worried that the highlight circles are being drawn incorrectly (more on this below) or that I unknowingly clobbered some global variable, but I'm new to Lua, so anything's possible.3. Users can no longer search for
|(the pipe symbol)I don't think this will affect anyone.
Some other comments:
I tried to make the highlight circles be drawn concentrically, but I'm not entirely sure I changed the draw call correctly. Please check to make sure theSetDrawLayer()function and thesizevariable are used correctly.The search terms can also be empty. For example, the stringIf I knew how, I would have instead added an Advanced Search button that opened a dialog window with eight text areas and associated color pickers.bleed||freeze||will have three empty terms in it (bleed|1|freeze|2|3), and the highlight circles will be offset accordingly. This is not the greatest from a useablility perspective, but it's what I could figure out.Thank you for any feedback.