Some icon/ability combinations on locations results in duplicate connections. The connection logic was parsing this as both a bidirectional and one-way connection, resulting in a one-way being drawn when it shouldn't be.
This adds a simple check to recommit an existing bidirectional connection, rather than drawing a new one-way for it.
- Moves token keys from GMNotes to Memo to avoid issues attempting to parse invalid JSON
- Merges the clue and doom tokens to a single token and rotates it to properly spawn doom
- Updates the various token pools to match the TokenSource objects so spawned tokens can go back into the pools
- Fixes a timing issue which would cause shadow lines to appear when hovering on a snap point
- Fixes a missing nil check that would cause errors during onUpdate if the card had no connections
The events which can indicate a drag stop are varied:
- Drag a card into another on the table (tryObjectEnterContainer)
- Drag multiple cards into another on the table (onCollisionEnter, tryObjectEnterContainer)
- Group multiple cards while holding them (tryObjectEnterContainer)
Previously the entire location map was being rebuilt and redrawn in onUpdate() during a drag operation, including the connectors which weren't changing. This was causing notable lag on some systems.
This splits the draw operations into two separate pieces - locations on the board which are unchanging, and locations which are being dragged. This allows only connections which are actually moving to be recalculated.
Since TTS only allows a single list of vector lines per object the dragged lines are now set on the cards themselves rather than the PlayArea. This may possibly improve performance in itself, by keeping each list of vectors smaller. Supporting this required some changes in how pre-built connections are handled.
- Add a background gradient
- Add a wrapping panel to hold both text and gradient
- Add font resizing in case of very long scenario names. None currently overflow, but this should ensure they stay on one line if we get a longer one
- Using a frame delay in onObjectEnterContainer was causing errors. Unclear why, but removing the delay fixes it
- Add a delay to the scenario splash screen, as load lag when placing large scenarios was causing the show to be janky